프레임워크와 라이브러리

지드루·2022년 6월 11일
0

CS 등

목록 보기
4/8
post-custom-banner

라이브러리? 프레임워크?

흔히들 라이브러리, 프레임워크라는 말들을 쓰곤한다. 두가지가 다른것도 알고있고, 어떤 식으로 다른지 적당히는 알고있지만 정확히 설명하라고 하면 애매모호한 말만을 반복하게 되곤한다. 과연 두 개념은 정확히 어떤것을 말하고 어떤 차이점이 있을까?

라이브러리

라이브러리라 함은 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것이다. 다시말하면 필요한 기능들이 모여있는 모듈이라고 할 수 있다. 이러한 기능들을 사용자는 코드내에 라이브러리를 직접 호출함으로써 사용할 수 있다.

한마디로 사용자가 원하는 기능들을 사용할 수 있게 모듈화시킨 기능들의 집합인것이다.

프레임워크

프레임워크(Framework)는 뼈대라는 뜻이다. 우리가 어떤 서비스를 개발하고자 할 때, 여러가지 고려해야하는 사항들이 있고, 기반을 만드는데도 수많은 수고가 들게 된다. 프레임워크는 제작자가 미리 만들어놓은 설계와 구현, 클래스 등을 제공하며 사용자는 이를 이용해 서비스를 간편하게 만들 수 있게된다.

하지만 프레임워크는 이미 뼈대가 결정되어있기 때문에, 사용자는 프레임워크가 제시하는 규칙에 맞추어 서비스를 개발해야만 한다. 때문에 사용자는 프레임워크의 규칙들을 학습해야만 한다.

유명한 프레임워크로는 Spring,Flask, Django등이 있다.

다른점은?

우선 기본적으로 개념자체가 다른것은 이해할 수 있을것이다. 하지만 라이브러리와 프레임워크의 결정적인 차이점이 있다. 바로 제어권이다.

라이브러리는 코드의 제어권이 사용자에게 있다. 사용자가 라이브러리의 객체나 함수등을 직접 호출하여 사용하기 때문이다.

반면 프레임워크는 제어권이 프레임워크에 있다. 사용자가 프레임워크의 규칙을 맞추어 개발을 진행하면, 프레임워크가 흐름을 주도하는 중 개발자가만든 코드를 사용하게 된다. 이를 제어의 역전(Inversion of Control, IoC)이라고 한다. 예를들어 Java의 대표적인 프레임워크인 Spring에서는 객체의 생명주기를 개발자가 아닌 스프링 프레임워크가 주체가 되어 담당하고 있다.

기타

가장 흔하게 비유하는 것으로, 라이브러리는 도구나 연장이며 프레임워크는 차나 배, 비행기등에 비유한다. 라이브러리는 사용자가 원하는 방식대로 쓸 수 있다. 썩 만족스럽지는 못하겠지만 칼질 대신 톱질을 한다던가, 망치로 수박을 자르려고 시도해볼 수는 있다. 단순히 사용자의 마음인 것이다. 하지만 배를 타고 하늘을 난다던가 차를 타고 바다를 건너는 것은 불가능 한 것이다. 어디까지나 배나 차, 비행기, 즉 프레임워크는 본래 정해진 방식대로 운용해야만 하는 것이다.

post-custom-banner

0개의 댓글