본문 바로가기
공부/개발 & 컴퓨터

라이브러리 vs 프레임워크

by algosketch 2022. 3. 30.

원래 올릴 생각 없이 그냥 정리한 글이었는데 그냥 올렸다.

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

개발 관련 용어를 구분하는 게 중요하다고 생각하지는 않지만, 은근 사람들이 구분하지 못 하는 것은 라이브러리와 프레임워크이다.

framework 는 단어 그대로 번역하면 “뼈대”이다. 하지만 이 뜻만 가지고 구분하기엔 실제 구분 방법과 약간의 차이가 있다. 단어 뜻으로만 해석하면 하나의 프로그램에는 하나의 프레임워크만 사용해야될 것처럼 보인다. 실제로는 하나의 프로그램에 여러 가지 프레임워크를 이용하게 된다.

프레임워크인지 아닌지를 구분하는 기준은 IoC(Inversion of Control, 제어의 역전) 이다.

  • 코드의 제어권이 나에게 있으면 라이브러리, 그렇지 않으면 프레임워크이다.
  • 필요할 때 가져다 사용하면 라이브러리, 프레임워크에서 규정하는대로 내 코드를 작성해야 한다면 프레임워크이다.
  • 내가 그 코드를 호출한다면 라이브러리, 프레임워크에서 내 코드를 호출한다면 프레임워크이다.

제어의 역전이 잘 이해가 가지 않는다면 다음과 같은 고민을 해 보자

  • C언어에서 main 함수는 누가 호출하지?
  • main 함수의 이름을 바꿀 수 있나?

코드를 작성하다가 위와 같은 의문이 생긴다면 제어의 역전이 일어난 것이다. 프레임워크는 다음과 같은 특징을 가질 수 있다.

  • 생명주기를 갖는다.
  • 컴파일타임 혹은 런타임에 코드를 생성한다.

위 기준을 갖고 라이브러리와 프레임워크를 해석해 보면 라이브러리를 얼마나 가져다 사용하든 크게 문제되지 않지만(사실 문제가 될 수도 있다), 프레임워크는 많이 사용할 수록 내가 코드를 제어할 수 있는 권한을 잃어버린다.