🧑💻 프레임워크와 라이브러리의 차이는 무엇인가?
면접에서 꼭 한번씩 듣게 되는 질문이라고 한다.
포트폴리오를 만들 때 내가 사용한 기술의 종류를 정리하면서 뭐가 프레임워크고 뭐가 라이브러리인지 애매하게 느껴졌다.
프레임워크와 라이브러리에 대한 정확한 개념이 잡혀있지 않기 때문이었을 것이다.
오늘 포스팅에서 이 둘의 차이를 정리해보자.
📁 프레임워크 Framework
프로그램의 골격, 뼈대
프레임워크란 프로그램 개발에 필요한 기본적인 요소와 규칙을 가지고 있는 기본적인 틀, 구조를 의미한다.
웹 애플리케이션 개발에 필수적인 코드, 알고리즘, DB 연동 등 기능들을 위한 기본적인 뼈대를 제공한다.
개발자는 프레임워크가 정해둔 규칙에 따라 온전히 기능 구현에만 집중할 수 있어 편리한 개발이 가능하다.
- Spring, Django, Android, Cocoa Touch, Vue.js
📁 라이브러리 Library
필요한 기능을 제공하는 도구들의 집합
라이브러리는 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다.
특정 기능을 함수 단위로 만들어 제공해, 필요할 때마다 몇번이고 호출해 사용할 수 있다.
- Lombok, JQurey, React, JSTL, Gson
👊 프레임워크 vs 라이브러리
프레임워크와 라이브러리는 프로그램 개발을 위한 다양한 기능을 제공해 개발자의 수고를 덜어주는 역할을 한다는 점에서 유사하다.
프레임워크와 라이브러리의 차이를 이해하려면 제어의 흐름이 어디에 있는지에 주목해야 한다.
프레임워크는 스스로 프로그램의 주도권을 가지고 애플리케이션의 흐름을 제어한다.
개발자는 프레임워크가 정해둔 가이드라인에 따라 필요한 코드를 작성하지만 이를 직접 호출해 사용할 수는 없다.
적절한 시점과 상황에 맞추어 코드를 실행하는 것은 프레임워크의 역할이기 때문이다.
개발자가 작성하는 애플리케이션 코드는 프레임워크가 구성해놓은 틀 안에서 수동적으로 동작하는 것이다.
반면 라이브러리는 사용자가 코드의 흐름을 직접 제어해야 한다.
스스로 동작하는 완전한 프로그램이 아니라 특정 부분의 기능만을 수행하도록 제작된 코드의 집합이기 때문이다.
따라서 개발 시 필요한 기능이 있을 경우 사용자가 적절한 시점에 직접 라이브러리를 호출해 사용해야 한다.