-
프레임워크와 라이브러리WEB 2020. 11. 9. 21:33반응형
개발을 하면서 프레임워크와 라이브러리를 사용해왔다.
물론 프레임워크는 Spring과 Vue밖에 사용해보지 않았지만 라이브러리는 정말 많이 사용해왔던 것 같다.
이 두 용어의 의미와 차이는 어렴풋이 알고는 있지만 어렴풋이 안다 == 잘 모른다 라고 생각을 하기에 다시 한번 찾아보고 머릿속에 새겨둘 필요가 있다고 생각했다.
프레임워크 (Framework)
프레임워크는 뼈대라는 뜻에서 알 수 있듯이 애플리케이션을 개발할 때 필수적인 코드, 알고리즘 등과 같이 어느 정도의 구조를 제공해주는 것입니다. 그리하여 프레임워크를 사용하는 프로그래머는 이 프레임워크의 뼈대 위에서 코드를 작성하여 애플리케이션을 개발하면 됩니다. 어느정도 뼈대를 제공해 주기 때문에 객체 지향 개발을 하면서 일관성 부족 등의 문제를 해결해 줍니다.
이러한 프레임워크를 소프트웨어에서는 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이라고 정의합니다.
라이브러리 (Library)
라이브러리도 마찬가지로 이름에서 어떤 역할을 하는지 유추할 수 있습니다.
라이브러리의 뜻은 도서관이니 마치 도서관에서 원하는 책을 빌리듯이 원하는 기능을 가져다와서 사용하는 것이 아닐까요?
맞습니다. 라이브러리는 특정 기능에 대한 도구 또는 함수들의 집합입니다. 즉, 프로그래머가 개발하는데 필요한 것들을 모아둔 것입니다. 라이브러리는 개발을 하면서 자기도 모르는 사이에 많이 써보셨을 겁니다. 그만큼 각 플랫폼, 언어 별로 다양한 라이브러리들이 존재하니 나중에 기회가 되면 사용해보았던 라이브러리에 대해서도 포스팅 해보겠습니다.
프레임워크와 라이브러리의 차이점
그렇다면 프레임워크와 라이브러리의 차이점은 무엇일까요?
위의 그림을 보면 프레임워크는 코드를 호출하고 있고 그 코드에서 라이브러리를 호출하고 있죠?
일반적으로 라이브러리처럼 프로그래머가 실행의 흐름을 가지기 마련인데 프레임워크가 코드를 호출하며 흐름을 가지고 있다니 뭔가 반대로 된 것 같지 않나요?
맞습니다. 차이점은 누가 흐름(Flow)을 제어하고 있는가 입니다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있어 프로그래머는 그 안에서 필요한 코드를 작성합니다. 반면에 라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것입니다. 즉, 프레임워크에는 사용자가 할 제어를 프레임워크 자체가 제어를 하고 있는 제어의 역전(Inversion Of Control)이 적용되어 있다는 것입니다.
References
728x90