개발을 하다보면 프레임워크
와 라이브러리
라는 단어를 자주 접하게 된다.
아래의 간단한 예시로 차이점을 알고 넘어가는 것이 좋다.
A는 게임 원화가
가 꿈이다.
A는 그림을 그리기 위해, 어떤 Tool
을 선택해야 할 지 고민하고 있다.
어떤 툴을 선택할 것인가?
모든 Tool은 그림을 그리기 위한 프로그램
이지만, Tool
마다 제공하는 기능과 지향점. 그림을 완성해나아가는 작업 방식이 상이하다.
따라서, 해당 프로그램을 사용하는 유저는 그 프로그램에서 제공하는 기능과 방향성에 맞춰 작업을 진행하게 된다.
ClipStudio
로 작업툴을 결정한 A는 편안한 작업을 위해 추가적으로 플러그인
을 설치했다.
미대생 A는 손떨림 방지 플러그인
과 자동 색보정 플러그인
을 추가하여 작업을 원활하게 진행했다.
위의 예시에서 프레임워크
와 라이브러리
는 각각 아래에 해당한다.
프레임워크
와 라이브러리
모두 효율적
이고 효과적
인 작업을 위해 사용한다.
하지만, 작업을 진행 과정에서 통제권
이 누구에게 있느냐에 차이점이 발생한다.
개발자의 관점에서 생각해보자.
개발자가 라이브러리
를 사용할 경우, 라이브러리를 개발자의 의도대로 원하는 곳에 import를 해, 필요한 곳에서 라이브러리를 사용한다.
반면, 프레임워크
는 개발자의 코드를 불러오기 때문에 프레임워크의 요구대로 파일명을 정하거나, 디렉토리를 구성하거나, 코드를 작성해야한다.
NextJS : page기반 자동 라우팅 방식 등
express : MVC 패턴기반 백엔드 및 라우팅, MiddleWare 방식 등
socket io : IceCandidate 생성 및 stream 공유 방식 등
위처럼 개발자의 코드는 프레임워크에서 요구하는 규칙에 맞춰 작성된다. 즉, 코드를 작성하는 규칙에 의해 일부분의 코드 제어권
이 개발자에서 프레임워크로 넘어간 것이다.