프레임워크와 라이브러리의 차이
면접에서 “프레임워크와 라이브러리의 차이를 설명해 주세요.”라는 질문이 자주 나옵니다. 두 개념을 나눠서 정리하고, 핵심 차이를 짚어 보겠습니다.
프레임워크(Framework)
정의
뼈대나 기반 구조를 뜻하며, 제어의 역전(IoC) 개념이 적용된 대표적인 기술입니다.
특징
- 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성됩니다.
- 추상적인 개념들이 문제를 해결하기 위해 서로 협력하는 방법을 정의합니다.
- 컴포넌트들은 재사용이 가능합니다.
- 높은 수준에서 패턴들을 조작화할 수 있습니다.
라이브러리(Library)
정의
단순히 활용 가능한 도구들의 집합을 말합니다. 즉, 개발자가 만든 클래스에서 호출하여 사용하며, 클래스들의 나열에서 필요한 클래스를 불러서 사용하는 방식을 취합니다.
두 개념의 차이
라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있습니다. 즉, 애플리케이션의 Flow(흐름)를 누가 쥐고 있느냐에 달려 있습니다.
- 프레임워크는 전체적인 흐름을 스스로 쥐고 있으며, 사용자는 그 안에서 필요한 코드를 짜 넣습니다.
- 라이브러리는 사용자가 전체적인 흐름을 만들며, 그 안에서 라이브러리를 가져다 쓰는 것입니다.
다시 말해, 라이브러리는 가져다 사용하고 호출하는 측에 전적으로 주도성이 있는 반면, 프레임워크는 그 틀 안에 이미 제어 흐름에 대한 주도성이 내재되어 있습니다. 프레임워크는 가져다 사용한다기보다는 그 안에 들어가서 사용한다는 관점으로 접근할 수 있습니다.
한 줄 요약
프레임워크와 라이브러리의 차이는 제어 흐름의 주도권에 있습니다. 프레임워크는 흐름을 직접 쥐고 그 안에 코드를 채워 넣게 하고(제어의 역전), 라이브러리는 내가 흐름을 만들면서 필요할 때 호출해 쓰는 도구입니다.