Framework vs Library

정미·2022년 10월 13일

Framework

특정한 형태 플랫폼의 어플리케이션을 개발할 때 사용되는 기반

특징

  • 공통 작업을 행하기 위한 재사용 가능한 코드 조각들을 가지고 있다.
  • 커스텀 기능을 위해 개발자들이 구현한 코드를 사용한다.
  • 개발자가 어플리케이션을 만드는데 사용할 defined 객체, undefined 객체, 기능들을 가지고 있을 수 있다.
  • 기존 코드를 활용해서 시스템에 중요한 기능을 추가할 수 있다.
  • 새로운 기능들을 하나의 어플리케이션으로 합치고 새로운 역량(capability)을 준다.
  • 유저가 제공한 코드는 프레임워크 코드에 플러그인되고, 프레임워크는 프로그램의 플로우를 제어한다.

왜 사용할까?

소프트웨어 프레임워크는 개발자들이 거의 모든 소프트웨어 개발 프로세스를 제어할 수 있게 해주는 공통 플랫폼을 통해 개발을 더 쉽게 만들어준다.
(문법, 선언, garbage collection, 구문, 예외, 코딩, 디자인, 테스트 등 모든 것)

장점

  • 많은 소프트웨어 개발자들에 의해 만들어지고 테스트되고 최적화되었기 때문에 robust(다재다능한), robust(강력한), efficient, reliable하다.
  • 베스트 프랙티스와 적절한 디자인 패턴의 구현체
  • 중복이나 필요없는 코드를 피함으로써 버그가 적어지고 일관성 있는 개발 프로세스를 지킨다.
  • 프레임워크가 로우 레벨 기능들과 공통 작업을 다뤄주기 때문에 개발자는 하이레벨 기능에 집중할 수 있다.

Library

작업을 간단하게 만들어주기 위해 사용되는 미리 작성된 코드들의 모음
반복적으로 재사용되는 코드들의 모음

특징

  • 사이즈가 작다.
  • 문자열, 소켓, 입출력 등 좁은 범위에 집중한다.
  • 라이브러리 코드가 사용자가 작성한 코드에 플러그인되고, 개발자가 프로그램의 플로우를 제어할 수 있다.

왜 사용할까?

  • 다른 사람이 이미 작성한 코드를 재사용하기 위해서
  • 효율성이 올라가고 코딩에 더 적은 시간을 쓰게 된다.

Framework vs Library

누가 누구를 부르냐 (Who's calling whom)

  1. framework: 프레임워크가 흐름을 주도한다.
    • 프레임워크가 개발자에게 어디에 코드를 넣을지 지도하고, 프레임워크의 코드가 우리의 코드를 호출한다.
  2. library: 개발자가 프로그램의 흐름을 제어한다.
    • 개발자가 언제 어디서든 원할 때 라이브러리를 호출할 수 있다.

정리

프레임워크라이브러리
Definition특정 플랫폼을 위한 어플리케이션을 개발하는 기반작업을 쉽고 빠르게 진행하기 위해서 이미 정의된 기능, 클래스들을 제공한다.
Inversion of Control제어가 역전되어서 프레임워크가 흐름과 개발자의 코드를 제어한다.개발자가 어플리케이션의 흐름과 라이브러리 호출을 제어한다.
Collection많은 API, 컴파일러, 툴셋, 보조 프로그램, 라이브러리 등을 포함한다.헬퍼 모듈, 객체, 클래스, 기능, 메세지 템플릿, 이미 작성된 코드의 모음
Code Modification프레임워크가 제공하는 코드는 대체되거나 수정될 수 없다.특정 프로그램이나 구체적인 문제를 해결하기 위해 사용되기 때문에 니즈에 맞게 라이브러리 코드를 수정해야 한다.
Scope프레임워크에 속한 것은 해당 프레임워크 내에서만 호출, 사용 가능하다.컨텍스트 밖이라도 필요한 어느 곳에서든 호출 가능하다.
Extensibility일반적인 기능을 제공하기 때문에 확장 가능하고, 개발자가 프레임워크의 소스 코드 수정 없이 앱 한정적 기능들을 포할 수 있게 해준다.확장이 아닌 특정 목적을 위해 위해 디자인되었다.
Replaceable다른 프레임워크로 교체하기 어렵다. 전체 코드베이스를 다시 써야한다.다른 라이브러리로 교체하기 쉽다.
Performance프레임워크는 많은 코드로 이루어져있어서 로딩 시간이 오래 걸리고 성능도 낮아진다.라이브러리를 빌드하는데 더 적은 코드가 필요하기 때문에 빠른 로딩 시간과 더 좋은 성능을 가진다.
Usage웹 어플리케이션 시스템, 플러그인 매니저, GUI 시스템 등의 넓은 범위의 작업을 수행하는데 사용된다.이미지 처리, 네트워크 프로토콜, 수학 연산 등 정의된 구체적인 작업을 수행하는데 사용된다.
Existing Projects이미 존재하는 코드에 프레임워크를 적용시키는 것은 불가능하다. 대신 프레임워크는 새로운 프로젝트를 시작할 때 사용되어야 한다.기능이 더 필요할 때 이미 존재하는 프로젝트에 자연스럽게 라이브러리를 추가할 수 있다.
Benefits빠른 프로그래밍, 커뮤니티의 지원, MVC 패턴 지원좋은 코드 퀄리티, 재사용성, 제어권, 빠른 프로그램 속도와 성능
ExamplesSpring, NodeJS, AngularJS, VueJSJQuery, React JS

출처

0개의 댓글