프레임워크와 라이브러리의 차이(feat.chatGPT)

남예지·2023년 2월 23일
0

TIL

목록 보기
30/47

라이브러리

소프트웨어의 구성요소 중 한가지로, API를 기반으로 대상 환경(플랫폼)에서 바로 실행될 수 있도록 모듈화된 프로그램 모음이다. 라이브러리는 혼자서 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다. 이 자체로는 사용자가 직접 일반적인 조작으로 실행할 수 없으며, 해당 라이브러리의 기능을 직접 호출하는 프로그램을 실행하거나, 사용자가 해당 라이브러리의 기능을 실행하는 API를 사용하는 프로그램을 직접 개발하면 실행할 수 있다.

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.

🔎 예시
Python pip로 설치한 패키지/모듈 (tensorflow, pandas, beautifulsoup 등등)
C++의 표준 템플릿 라이브러리 (STL)
Node.js에서 npm으로 설치한 모듈
HTML의 클라이언트 사이드 조작을 단순화하는 JQuery
웹에서 사용자 인터페이스 개발에 사용되는 React.js

프레임워크

프레임워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.

애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 된다.

🔎 예시
Java 서버 개발에 사용되는 Spring
Python 서버 개발에 사용되는 Django, Flask
안드로이드 앱 개발에 사용되는 Android
아이폰 앱 개발에 사용되는 Cocoa Touch
웹 개발에 사용되는 Angular, Vue.js 등
자바 기반의 JSP를 위한 프레임 워크 Struts
루비로 작성된 MVC패턴을 이용하는 Ruby on Rails

차이점

제어흐름

라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.

반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
프레임워크에는 분명한 [제어의 역전] 개념이 적용되어 있어야 한다.

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

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

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


chatGPT에게 물어보았다.

라이브러리와 프레임워크는 모두 소프트웨어 개발에서 유용한 도구입니다. 하지만 라이브러리와 프레임워크는 다음과 같은 차이점이 있습니다:

라이브러리(Library): 라이브러리는 코드를 재사용하기 위한 도구입니다. 특정 기능을 수행하기 위한 코드가 이미 작성되어 있으며, 이를 개발자가 직접 호출하여 사용할 수 있습니다. 라이브러리는 일반적으로 기능이 제한되어 있지만, 개발자는 필요한 기능을 찾아 라이브러리를 선택하여 사용할 수 있습니다. 예를 들어, React.js는 UI 라이브러리로서 웹 개발에서 자주 사용됩니다.

프레임워크(Framework): 프레임워크는 애플리케이션의 전체적인 구조를 제공하는 도구입니다. 개발자는 프레임워크에서 제공하는 규칙과 구조를 따르면서 코드를 작성하고, 프레임워크가 애플리케이션의 나머지 부분을 관리합니다. 프레임워크는 라이브러리보다 더욱 큰 규모의 도구로서, 예를 들어, Django 프레임워크는 Python 언어를 사용하는 웹 개발에서 자주 사용됩니다. 프레임워크는 기능이 더욱 풍부하지만, 개발자는 프레임워크의 규칙과 구조를 따라야 합니다.

이러한 차이점으로 인해, 개발자는 프로젝트의 요구사항에 맞게 라이브러리 또는 프레임워크를 선택하여 사용할 수 있습니다. 라이브러리와 프레임워크는 개발 생산성을 높이고 코드의 재사용성을 높일 수 있는 매우 유용한 도구입니다.


내 식대로 정리해보면 라이브러리는 개발자가 원할 때 원하는 기능을 직접 호출하여 여기 저기 선택적으로 사용하지만, 프레임워크는 원하는 기능을 사용하려면 프레임워크의 규칙과 구조를 따라 사용해야한다. 라고 볼 수 있을까?

아직 뷰나 앵귤러를 사용해보지 않아서 상세한 차이를 알 수는 없지만 이러한 차이가 있구나.. 예시를 보면서 이해하려고 노력해보았다.

profile
총총

0개의 댓글