본문 바로가기

Programming

프레임워크와 라이브러리의 차이

 

"프레임워크와 라이브러리의 차이점이 뭔가요?" 얼마 전에 받은 질문인데 명확하게 대답하지 못했다. 내가 아는 프레임워크의 대표적인 종류는 'Spring framework', 'Angular framework'이다. 반면 라이브러리는 'React library', 'jQuery' 대표적이다. 과연 프레임워크와 라이브러리는 어떻게 다른지, 어떨 때 써야 하는지 알아보자.

호출을 누가 하는가?

"Who calls Whom" 누가 누구를 호출하는지? 가 프레임워크와 라이브러리의 차이점의 핵심이다. 코드를 작성하는 '우리'가 '라이브러리' 코드를 호출하고, '프레임워크' 코드가 '우리'가 작성한 코드를 호출한다. 조금 더 자세히 알아보자.

라이브러리

라이브러리는 특정 기능을 위해 동작하는 유용한 함수/객체/모듈들을 제공한다. 라이브러리는 일반적으로 작은 단위(문자열, IO, 소켓 등)에 포커싱되어있다. 작고 적은 종속성을 유지할 수 있도록 하기 위함이다. class 정의의 모음집이다. 그렇다면 라이브러리를 왜 써야할까? 이유는 간단하다. 재사용하기 위함이다.

프레임워크

프레임워크는 사용자가 커스텀 애플리케이션을 만들기 위해 작성하는 개방형 또는 구현되지 않은 함수나 객체를 정의한다. (C++/Java에서 추상화 함수를 구현하는 것과 비슷하다.) 프레임워크는 애플리케이션이다. 사용자가 원하는대로 애플리케이션을 만들때 필요한 모든 것들을 넓은 범위에서 포함하고 있다.

"소프트웨어 프레임워크는 기본적인 기능을 제공하는 소프트웨어가 사용자가 작성한 추가적인 코드들로 인해 선택적으로 변경될 수 있는 추상화이다." - wikipedia

Inversion of Control(IoC)

'Inversion of Control', 직역하면 '제어의 역전' 이라는 뜻이다. '우리'가 라이브러리의 특정 메소드를 호출하면, '우리'는 해당 메소드를 '제어'한다. 반대로 프레임워크는 프레임워크가 '우리'의 코드를 호출하여 '제어'한다.

프레임워크
$(document.ready()) { // document가 ready 상태일 때 framework에 의해 호출된다.
    function() {
        doSomething(); // framework 함수 내부에서 호출된다.
    }
}
 
라이브러리
let str = "Hi.JavaScript";
let idx = str.lastIndexOf("."); // string library가 직접 호출한다.

 

ChatGPT에게 물어보자

요즘 핫한 'ChatGPT'에게 물어봤다. 생각보다 너무 자세하게 대답해줬다.

일반적으로, 라이브러리는 코드 내에서 특정 작업을 수행하는데 사용할 수 있는 미리 작성된 코드의 모음이다. 라이브러리는 파일 분석, 수학 계산 수행 등의 특정 작업을 수행하는 함수나 클래스 집합을 제공한다. 라이브러리는 특정 작업에 초점을 맞추고 있으며 유연하고 재사용 가능하도록 설계되어있으므로 다양한 상황에서 사용할 수 있다.

반면, 프레임워크는 애플리케이션을 구축하기 위한 구조를 제공하는 보다 포괄적인 도구 모음이다. 라이브러리의 함수, 클래스뿐만 아니라 애플리케이션을 만들고 배포하기위한 일련의 규칙들도 포함하고있다. 프레임워크는 미리 결정된 구조와 패턴의 집합을 제공하고, 이는 종종 애플리케이션의 로우 레벨의 세부사항을 자동으로 처리할 수 있다.

라이브러리와 프레임워크의 핵심적인 차이점 중 하나는 '제어의 정도'이다. 라이브러리를 사용할 경우 '우리'는 코드 사용 방법에 대한 세부 정보들을 '제어'할 수 있으며 특정 요구사항에 맞는 방식으로 코드를 작성할 수 있다. 프레임워크는 애플리케이션의 특정 세부 정보들을 제어하기 쉽지않지만, 적은 코드로 빠르게 애플리케이션을 구축할 수 있는 미리 정의된 구조의 이점을 얻을 수 있다.

정리하자면, 라이브러리는 사용자 자신의 코드에서 특정 작업을 수행하는 데 사용할 수 있는 코드의 모음이며, 프레임워크는 함수 라이브러리와 코드를 구성하고 배포하기 위한 규칙 집합을 포함하여 애플리케이션을 빌드하기위한 구조를 제공하는 포괄적인 도구 모음이다.

마치며

프레임워크와 라이브러리의 차이는 단순하다. '제어'를 누가하는가?에 집중해보면 된다. 라이브러리는 '우리'가 '제어'하지만, 프레임워크는 직접 '제어'한다. 이 점에 집중하여 용어를 사용할 때 혼동해서 사용하지 말아야겠다.

https://www.geeksforgeeks.org/software-framework-vs-library/

https://en.wikipedia.org/wiki/Software_framework

반응형