본문 바로가기
Software Engineering

프레임워크 VS 라이브러리

by 태크민 2024. 12. 14.

프레임워크

원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 기능을 갖추고 있는 골격, 뼈대를 의미합니다.

프레임워크는 애플리케이션 개발 시 필수적인 코드등과 같은 기능을 위해 어느정도 구조(뼈대)를 제공하고, 이러한 구조 위에서 사용자가 코드를 작성해서 애플리케이션을 개발합니다.

즉, 개발자가 구현한 메서드가 프레임워크에 의해 호출되며, 이를 제어의 역전(IoC)이라고 합니다.

 

"소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합"이라 할 수 있으며, 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야합니다.

 

프레임워크는 전체 어플리케이션의 구조를 정의하여 일정한 개발 패턴을 따르게끔 합니다. 

프레임워크 예시

  • 안드로이드 앱 개발에 사용되는 Android
  • JAVA 서버 개발에 사용되는 Spring Framework
  • Python 서버 개발에 사용되는 Django, Flask
  • 웹 개발에 사용되는 Angular, Vue.js

 

라이브러리

라이브러리는 단순 활용가능한 도구들의 집합을 말합니다.

즉, 개발자가 만든 클래스에서 필요한 클래스를 호출하여 사용하는 방식을 취하고 있습니다.

 

라이브러리는 특정 기능만을 제공할 뿐 어플리케이션의 전체 구조에는 관여하지 않습니다. 사용하는 개발자 스스로 원하는 방식으로 구조를 설계할 수 있습니다.

 

라이브러리 예시

  • C++ 자료구조 및 알고리즘을 Template로 제공하는 STL
  • 안드로이드 차트 개발에 사용되는 MPAndroidChart
  • 안드로이드 이미지 로딩에 필요한 Glide

 

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

 

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

즉, 어플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려 있습니다.

 

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣습니다.

반면에, 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있습니다.

다시 말해, 라이브러리는 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며, 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재(내포)하고 있습니다.

프레임워크는 가져다가 사용한다기보다는 거기에 들어가서 사용한다는 느낌/관점으로 접근할 수 있습니다.

 

예를들어,

집을 짓기 위한 과정을 라이브러리와 프레임워크에 비유해보면, 프레임워크는 모델하우스를 짓는것에 비유할 수 있습니다. 모델하우스의 소파의 위치, 의자와 책상의 위치, 방의 용도 등. 우리가 수정할 수 있는 범위는 제한적입니다. 주방의 위치, 기둥의 개수, 방의 개수 등 집을 이루고있는 굵직한 뼈대는 수정할 수 없습니다. 사용자는 모델하우스가 제공하는 청사진 안에서"만" 움직일 수 있습니다. 프레임워크가 제공하는 틀에 따라 코드를 작성해야 하는것입니다. 즉, 통제권은 사용자가 아닌 프레임워크가 쥐고 있는 것입니다.

하지만 라이브러리는 이케아에서 산 재료로 가구를 조립하는것에 비유할 수 있습니다. 집에서 사용할 가구를 조립하거나 만들기 위해 벌목부터 시작해서 목공을 하거나, 가죽을 얻기위해 사냥을 하고싶은 사람은 거의 없을것입니다. 🙄 그래서 이케아 혹은 가구점에 가서 기본적인 재료를 사서 입맛대로 조립하고 배치할 수 있습니다. 재료의 선택권이나 통제권은 사용자에게 있는 것입니다.

 


참고자료

https://webclub.tistory.com/458

 

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

Framework Vs Library 프레임워크와 라이브러리의 정확한 차이점은 무엇일까요? 대중 알것 같지만 정확히 어떠한 차이점이 있는지 모르고 있는 경우가 많을지도 모릅니다. 프레임워크는 단지 미리 만

webclub.tistory.com

https://velog.io/@whitecloud94/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-vs-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC

 

프레임워크 vs 라이브러리

컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한

velog.io