프레임워크와 라이브러리의 차이
- 2025-07-26
- 출판일: 2021-11-18
- 저자: AK
프레임워크와 라이브러리의 차이에 대한 생각.
의존성 역전?
가장 널리 쓰이는 구분법은 의존성 역전 여부인 것 같다. 내 코드가 호출을 하면 그건 라이브러리이고, 내 코드가 호출을 당하면 그건 프레임워크라는 구분.
경계가 모호한 상황
하지만 그 경계가 분명하지 않은 경우가 종종 있다.
라이브러리인 경우에도 콜백이 존재할 수 있고, 프레임워크인 경우에도 템플릿 메서드 패턴처럼 내가 호출하기도 한다.
쓰는 사람에 따라 다른 상황
어떤 라이브러리/프레임워크는 어떻게 쓰느냐에 따라 좀 더 프레임워크처럼 쓸 수도 있고 좀 더 라이브러리처럼 쓸 수도 있다. 그래서 이를테면 “리액트는 리액트 개발자가 라이브러리라고 했으니까 라이브러리가 맞다”는 류의 주장(종종 듣습니다)엔 동의하지 않는 편이다.
제약을 가하는 정도에 따른 구분
그러므로 내가 선호하는 구분은 다음과 같다.
내 코드에 상대적으로 많은 제약을 가하면 프레임워크에 가깝고, 제약을 덜 가하면 상대적으로 라이브러리에 가깝다는 식으로 느슨하게 생각하는 게 유익하다고 생각한다. 제약의 원인이 코드 자체의 설계로 인한 것이건 내가 그 코드를 가져다가 쓰는 방식으로 인한 것이건 간에.
이런 식으로 배타적 소속성보다는 정도(degree)로 생각하기가 유익한 경우가 많다. 두 개념 사이의 경계가 모호하다고 하더라도 개념을 지칭하는 용어가 있으면 때때로 유익하기도 하므로, 용어의 구분 자체가 무의미하다고 생각하지는 않는다.