개발 상식

프레임워크(Framework)와 라이브러리(Library)의 차이

킹우현 2023. 4. 19. 23:26

1) 프레임워크란 ?

사용자가 기능 구현에 집중하여 개발할 수 있도록 '일정한 형태''필요한 기능'을 갖추고 있는 골격 및 뼈대를 의미합니다.

 

애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 뼈대(구조)를 제공하며, 사용자는 이러한 뼈대 뒤에서 코드를 작성하여 애플리케이션을 개발합니다.

앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통적인 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 구현하면 됩니다.

ex) Spring, Django, Flask, Android, Cocoa Touch, Angular, Vue.js 등

 

2) 라이브러리란 ?

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 쉽게 말해 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성시 활용 가능한 도구들을 의미합니다.

 

ex) Node.js 에서 npm 으로 설치한 Module, Python pip로 설치한 패키지/모듈(tensorflow, pandas, beautifulsoup 등), 웹에서 UI 개발에 사용되는 React.js 등

 

3) 프레임워크 vs 라이브러리

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 "직접 제어"한다.

👉🏻 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다 !

 

반면에 프레임워크는 거꾸로 애플리케이션 코드가 "프레임워크에 의해 제어"된다.

프레임워크에는 분명한 '제어의 역전' 개념이 적용되어 있어야 한다.

 

즉, 애플리케이션 코드는 프레임워크가 짜 놓은 틀 내에서 수동적으로 동작해야 한다.

 

정리하자면, 프레임워크와 라이브러리의 차이점은 제어 흐름의 권한이 어디에 있는가 이다.

 

라이브러리를 사용할 경우 사용자는 개발 시 필요한 기능이 있을 때 능동적으로 라이브러리를 설치 및 호출하여 사용하거나 기존에 구성된 함수 및 코드를 가져다 쓰면서 애플리케이션 코드의 흐름을 직접 제어해야 하지만,

프레임워크를 사용할 경우에는 반대로 애플리케이션의 코드가 프레임워크에 의해 사용된다. 애플리케이션 코드는 프레임워크가 짜 놓은 틀 내에서 수동적으로 동작되기 때문에 제어 권한은 프레임워크가 가지고 있고 사용자는 그 틀 안에 필요한 코드를 작성하게 된다.

 

💡 제어의 역전(IoC, Inversion of Control)이란 ? 어떠한 일을 하도록 만들어진 프레임워크에 제어 권한을 위임하는 것을 의미, 간단히 말해 프로그램의 제어 흐름 구조가 반대로 뒤바뀐 것을 뜻한다.

라이브러리의 경우 애플리케이션 흐름을 사용자가 직접 제어해야 하지만, 프레임워크는 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있다.

즉, 제어 역전이란 개발자가 제어해왔던 일을 프레임워크가 대신 해준다는 의미이다.

 

출처: 

https://cocoon1787.tistory.com/745

 

[개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이

🚀 "프레임워크와 라이브러리의 차이를 아시나요?"" "음... 프레임워크는 뼈대이고 라이브러리는 모듈 같은 것이고....😰" "그럼 최근에 사용하신 프레임워크와 라이브러리를 알려주세요." "... ex

cocoon1787.tistory.com