통합 개발 지식/개발에 필요한 잡다한 지식

프레임워크 vs 라이브러리 vs 모듈 vs 플러그인

개발자킹콩 2023. 3. 11. 00:59

 

목차

1. 프레임워크

2. 라이브러리

3. 모듈

4. 플러그인

5. 결론

 

 

 


 

 

1. 프레임워크(Framework: 뼈대, 구조)

Frame: 틀, 규칙, 법칙

work: 일 소프트웨어의 목적

즉, 목적에 따라 효율적으로 구조를 짜놓은 개발 방식이다.

 

프레임워크란 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다. 즉, 일정한 형태의 틀에 맞추어 결과물을 만들도록 하는 것이 프레임워크이다. Application 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도 뼈대(구조)를 제공해주는 것이다.  그렇기에 자주 사용하는 코드를 매번 제로 베이스부터 만들지 않아도 되니 시간/비용을 절약할 수 있다.

 

Flow(흐름)에 대한 제어 권한을 프레임워크가 자체적으로 갖고 있다. 사용자가 프레임워크 규칙을 준수해야 한다. 만들라고 하는대로 만들어야 한다.

 


 

+ 프레임워크에 대한 통찰

프레임워크와 라이브러리의 또 하나의 차이점이 존재한다. 프레임워크는 기본적 뼈대가 제공된다는 것이고 대부분의 기능의 Default Value가 존재한다. 그렇기에 무궁무진한 생산성 향상이 생긴다는 것이다. 이러한 점은 프론트엔드보다는 백엔드에서 더욱 극명한 생산성 향상을 자랑한다. 

 

백엔드는 기본적으로 프론트엔드보다 신경쓸 부분(보안과 DB, 네트워킹, 효율적 통신 등)이 매우 많다. 예전에는 C, Java로 백엔드를 구현 했으며 혼자서 안전하고 잘 동작하는 백엔드를 구축하는 것은 거의 불가능에 가까웠다. 하지만, 현재 백엔드 개발자는 혼자서 서비스를 개발할 수 있는 생산성의 경지에 도달했다.(물론 AWS가 한몫했지만) 프레임워크의 등장으로 보안과 DB(ORM) 등을 신경쓰는 백엔드 개발도 1인 개발이 가능하게 된 것이다. 생각해보니 백엔드는 싹다 프레임워크만 사용하네요??!!?!?!?!!!

 

 

 


 

 

2. 라이브러리(Library: 도서관)

라이브러리란, 마치 여러 책을 모아놓은 도서관처럼 특정 기능에 대한 도구/함수들을 모아둔 집합을 의미한다. 즉, 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합이다. 

 

Flow(흐름)에 대한 제어 권한을 사용자(개발자)가 가지고 있다. 사용자는 라이브러리를 가져다가 자유롭게 사용할 수 있어서 프레임워크보다 훨씬 자유도가 높다. 프레임워크는 그 틀에 나의 코드를 맞춰 넣어야 하지만, 라이브러리는 사용을 위한 최소한의 규칙만 지킨다면 필요한 부분만 가져다 나의 코드에 적용하면 되는 것이다.

 

 

 


 

 

3. 모듈(Module: 구성 단위, 구성 부분, 기준 치수, 기본 단위)

자주 사용하게 되는 코드를 하나의 함수나 클래스라는 단위로 묶어서 코드를 재사용할 수 있게 하는 것이다.

즉, 라이브러리와 같이 코드의 집합체를 의미하며, 라이브러리와 구분하지 않고 사용한다.

 

 

 


 

 

4. 플러그인(plug-in: 기능 확장용 소프트웨어, 플러그 접속식의 전기 제품)

 

플러그인은 어떤 특정한 하나의 문제를 해결하기 위한 컴포넌트(component)이다. 즉, 사람들이 자주 사용할만한 기능들을 직접 일일이 구현할 필요없이 필요한 기능들만 그때 그때 찾아서 사용할 수 있도록 미리 만들어 놓은 것이 플러그인이다. 

 

라이브러리보다 조금 더 작은 개념이다. 플러그인의 집합이 라이브러리하고 보면된다.

그런데 import해서 사용하는 점은 같고 구분하기 애매한 요소도 많다. 그래서 플러그인과 라이브러리는 거의 동일시되어 불리고 있다.

 

 

 


 

 

5. 결론 (프레임워크 vs 라이브러리, 모듈, 플러그인)

우리는 요리사이며 지금부터 스파게티를 만든다고 생각해보자.

그럼 방법은 두가지다. 

 

1. 백종원이 만들라는대로 만든다.(프레임워크)

필요한 재료도 정해져있고 설명서대로 따라서 사용하면 된다. -> 맛과 효율이 보장되지만 하라는대로 해야한다.

 

 

2. 내 X대로 만든다.(라이브러리, 모듈)

재료는 대강 뭔지 안다. 그럼 마트에 가서 내가 사고 싶은 재료를 사서 요리를 한다. -> 자유는 보장되지만 맛과 효율이 보장되지 않는다.

 

3. 나는 마늘 토마토 소스를 좋아하니 집에 만들어둔다.(플러그인)