VS시리즈 - Framework vs Library

김현교·2023년 12월 13일
0

VS시리즈

목록 보기
4/12
post-thumbnail

공통점

  • 소프트웨어 개발에서 중요한 구성 요소
  • 코드를 구조화하고 재사용성을 높여주는 도구들

Framework

  • 애플리케이션의 구조와 제어 흐름을 정의하고, 개발자는 그 안에서 필요한 코드를 작성
  • 애플리케이션의 기본 구조를 제공하므로, 개발자는 비즈니스 로직에 집중 가능
  • 추상화된 기능을 제공하여 특정 기능을 쉽게 확장하고 사용 가능
  • 제어의 역전이나 디자인 패턴을 적용해, 프레임워크가 정의한 규칙과 구조에 따라 코드를 작성해야 함
  • 적은 코드 길이, 코드 재사용, 쉬운 디버깅과 애플리케이션 모니터링, 단순화된 DB 연결

Library

  • 함수, 클래스 또는 모듈의 모음으로, 특정 기능을 수행하는 코드를 모아둔 것
  • 개발자가 필요한 기능을 선택적으로 호출하여 사용
  • 개발자가 코드의 제어 흐름을 가지고 있음
  • 비교적 단순한 기능을 가진 작은 모듈들로 구성
  • 라이브러리는 독립적으로 사용 가능하며, 프로젝트에 필요한 부분만 선택적으로 사용 가능

예시

Framework

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

Library

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

차이점

  • 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용
  • 라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어
  • 제어의 흐름이 어디에 있는가 차이

비유

Framework

  • 프레임워크는 모델하우스를 짓는것
  • 우리가 수정할 수 있는 범위는 제한적
  • 즉, 통제권은 사용자가 아닌 프레임워크가 쥐고 있음

Library

  • 라이브러리는 이케아에서 산 재료로 가구를 조립하는것
  • 기본적인 재료를 사서 입맛대로 조립하고 배치 가능
  • 재료의 선택권이나 통제권은 사용자에게 있는 것

IoC(Inversion of Control)

  • 제어의 역전이라는 뜻
  • 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것

결론

  • 프레임워크와 라이브러리는 둘 다 코드 작성에 도움이 되는 타인이 작성한 코드의 집합
  • 프레임워크는 프로그램이 필요한것을 개발자에게 알려줌으로써 제어권을 역전하고,
    라이브러리는 개발자가 필요할 때 마다 설치, 혹은 호출함으로써 개발자가 능동적으로 사용 가능
profile
내가 공부하면서 궁금했던 걸 올리는 개발 블로그

0개의 댓글