네트워크와 CS

매컴싸 발표 라이브러리와 프레임워크의 차이점

Sophie소피 2021. 11. 16. 02:18

오늘은 라이브러리와 프레임워크 개념과 차이점에 대해 알아보도록 하겠습니다. 

 

먼저 , 라이브러리에 대해 알아볼까요? 

 

라이브러리(Library)란?

    단순 활용이 가능한 도구들의 집합    

주로 소프트웨어 개발할 때 컴퓨터 프로그렘이 사용하는 비휘발성 자원의 집합이며,

여기에 미리 작성된 코드, 변수, 함수, 클래스가 포함될 수 있다. 

개발자가 개발하는데 필요한 것들을 모아둔 도구들의 나열로 필요할 때 

호출하여 사용하는 방식이다. 

 

프레임워크 (FrameWork)란?

    소프트웨어의 특정 문제를 해결하기 위해서 상호협력하는 클래스와 인터페이스의 집합   

프레임워크는 뼈대나 기반구조를 뜻하는데, Application 개발 시 필수적인 코드,

알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도 뼈대(구조)를 제공해주는 것이다. 

그러므로 그러한 뼈대 위에 프로그래머가 코드를 작성하여 Application을 완성시켜야 한다.

어느정도 뼈대를 제공해 주기 때문에, 객체 지향 개발을 하면서 일관성 부족 등의 문제를 해결해준다.

 

 

언뜻 보면 Framework와 Library 모두 개발자에게 필요한 것들을

모아둔 것이라고 착각할 수 있지만 큰 차이가 존재합니다.

 

우리가 코드를 컨트롤 하는건지. VS 누군가의 규칙을 따라 코딩을 하는건지 

일단 라이브러리, 프레임워크는 둘다. 다른 누군가가 쓴 코드입니다!

우리 프로젝트를 위해서 가져다 쓰는 것이죠. 

우리의 코딩 삶을 윤택하기 위해서 가져다 쓰는 것들.

 

라이브러리. 프레임워크를 가르는 차이점은 아주 심플한 컨셉입니다! 

 

누가 누구를 컨트롤 하는가! 

우리가 코드를 컨트롤하는건가?

모든 결정을 다 내리는건가 ...? 

아니면, 누군가 정해준 규칙을 따라하고 있는지? 

 

바로 이 부분에 라이브러리, 프레임워크 차이점이 있습니다. 



Framework와 Library의 차이 - Inversion Of Control

 

Framework와 Library의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐의 차이입니다.

프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며,

프로그래머가 그 안에 필요한 코드를 작성하는 반면에

라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것입니다.

이 내용을 한 문장으로 정리하자면 프레임워크에는 제어의 역전(Inversion Of Control)이 적용되어있다는 것입니다.

 

예를 들자면, 라이브러리의 가장 좋은 예시는 JQuery입니다.

<head>

 <script src="js/jquery-3.1.0.min.js"></script>

<head>  //느낌 오시죠?

제이쿼리는 웹사이트에 인터랙티브한 요소를 넣을 수 있는데. 

그래서 우리가 웹사이트를 코딩을 하고 있는데, 내가 필요할 때, "우리가" 제이쿼리를 소환을 합니다

코딩을 하다가 필요할 때 제이쿼리를 부르는거고

"우리가" 코딩을 해나가는 겁니다. 이것이 바로 라이브러리의 개념입니다.  

 

 

 

 

 

그러나 프레임워크는 다릅니다!

왜냐하면 우리가 프레임워크를 부른 것이 아니거든요!

"프레임워크"가 코드를 불러오는 것입니다! 

바로 이게 명확한. 라이브러리와 프레임워크의 차이점입니다.

 

프레임워크로 일을 할 때는 프레임워크의 규칙을 따라야합니다!

우리가 코드의 규칙을 결정하는 입장이 아닙니다

근데 프레임워크가 어디에 코드를 넣어야하는지 친절히 알려줍니다!

프레임워크가 우리에게 규칙을 알려주는 것!!

 

어디에 템플릿을 넣고, 컨트롤러를 넣고, 뷰를 넣고..

규칙에 따라서 하면 모든건 알아서 정상작동하는 것이죠 !!

우리가 컨트롤하는 건 없습니다... 그저 우리는 규칙을 따를 뿐 ...

 

 

프레임워크의 좋은 예시는 장고 웹프레임워크입니다

장고 웹 프레임워크는 규칙이 너무 많습니다. 

잘 작동하기를 바란다면 모든 규칙을 잘 준수해야겠죠? 

예를 들어 장고에서 어드민 패널을 만들고 싶다면 

무조건 무조건 코드를 admin.py에 써야합니다. 

만약 URL을 바꾸고 싶다? 

반드시 파일명을 url.py에 가야합니다. 

왜냐하면 장고가 시작할 때 url.py, admin.py로 읽기 때문입니다. 

장고가 가지고 있는 이러한 규칙을 우리가 절대 바꿀 수는 없습니다 

앞에 예시를 들었던 규칙을 잘 준수해야만 어드민 패널, URL이 잘 작동하는걸 볼 수있습니다!

이러한 시나리오에서는 내가 장고를 call해야하고 이런건 없습니다. 

장고 문서를 잘 보면서 장고 규칙에 따라 코드들을 잘 넣어두면

장고가 알아서 그걸 실행시키는 작동원리입니다! 

 

그래서 프레임워크라고 하는 것들은 반드시 따라야하는 규칙이 있는 것입니다. 

아주아주 쉽게 말하자면 라이브러리는 우리가 필요할 때 내가 부르는 것들

프레임워크는 나를 부르는 것들이라고 이해하시면 됩니다!



A JavaScript library for building user interface 사용자 인터페이스 구축을 위한 자바스크립트 라이브러리

"000을 빌드를 하기 위한 000라이브러리" 이면  필요할 때마다 부를 수 있는 것이라는걸 알게될 것입니다!

 

 

The web framework for perfectionists with deadlines 마감일이 있는 완벽주의자를 위한 웹 프레임워크

반대로 "000울 빌드하기 위한 프레임워크" 이면 이건 규칙과 문서가 따라오는 것이니 프레임워크를

적극 수용하고 그 규칙을 따라서 잘 작동시키게 해야합니다! 

 

앞에서 언급했듯이 우리가 컨트롤하는게 아니라 규칙에 따라야하는거니까요!