본문 바로가기

Dev

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

 

* 프레임워크와 라이브러리의 각 개념을 먼저 살펴보고 공통점과 차이점을 설명한다.

* 개인 공부를 위한 내용 정리이며 잘못된 부분이 있다면 댓글 남겨주세요.

 

프레임워크(Framework)?

프레임워크는 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이다. 다시 말해 프레임워크는 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 뼈대를 의미한다. 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동 등 여러 기능을 제공하며, 사용자는 이러한 프레임워크를 통해 코드를 작성해 개발한다. 서버 구동 및 메모리 관리 등은 프레임워크가 관리하며, 사용자는 프레임워크의 방식대로 구현하는 것이다.

 

→  예시

Java 서버 개발에 사용되는 Spring
웹 개발에 사용되는 Vue.js
루비로 작성된 MVC패턴을 이용하는 Ruby on Rails

 

라이브러리(Library)?

라이브러리는 개발자가 만든 클래스들의 집합으로 다른 프로그램들에서 사용할 수 있도록 제공하는 방식이다. 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 특정 기능을 모아둔 것으로 코드 작성 시 활용할 수 있는 도구들을 의미한다.

 

→  예시

C++의 표준 템플릿 라이브러리 (STL)
HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
웹에서 사용자 인터페이스 개발에 사용되는 React.js

 

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

프레임워크와 라이브러리의 차이는 제어 흐름에 대한 주도성이 '누구'에게 있는가이다.

즉, 어플리케이션의 Flow(흐름)를 누가 갖고 있냐?

 

프레임워크는 사용자가 아닌 프레임워크가 제어의 흐름을 갖고 있다. 
코드는 프레임워크 내에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자는 프레임워크 내에서 코드를 작성한다.

 

라이브러리는 라이브러리가 아닌 사용자가 제어의 흐름을 갖고 있다.

사용자에게 필요한 기능이 있다면 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수 또는 코드를 가져와서 써야 한다. 

 

 

 

💡  이해하기 쉬운 비유 💡

프레임워크 = 모델하우스

모델하우스 내의 방의 크기, 기둥의 개수, 거실이나 화장실 등의 구조는 사용자가 변경할 수 없다. 하지만 소파와 침대 등 가구의 위치는 모델하우스(=프레임워크) 내부에서 사용자가 수정할 수 있다. 즉 통제권은 모델하우스(=프레임워크)에 있는 것이다.

 

라이브러리 = 가구조립

집을 짓는 것이 아니라 필요한 가구가 있을 때 이케아에서 가구를 사서 조립하는 것이 라이브러리이다.