라이브러리와 프레임워크의 차이를 명확히 이해하자
소프트웨어 개발을 하다 보면 “라이브러리”와 “프레임워크”라는 용어를 자주 마주친다.
둘 다 공통 기능을 모듈화한 코드 집합이지만, 구조적 엄격성과 자유도에서 뚜렷한 차이가 존재한다.
1. 라이브러리란 무엇인가
- 공통 기능을 모듈화한 코드 묶음이다.
- 폴더명·파일명에 대한 강제 규칙이 없다.
- 개발자가 필요한 시점에 직접 호출해 사용한다.
- 자유도가 높다. 원하는 곳에 끼워 넣고, 필요 없으면 제외할 수 있다.
- 반면 제공 기능은 프레임워크보다 적다.
대표 예시 – Axios
Axios는 HTTP 요청 기능만 깔끔하게 제공하는 경량 라이브러리다.
Vue·React·Node 등 어떤 환경에서도 axios.get()을 호출하면 끝이다.
2. 프레임워크란 무엇인가
- 특정 도메인(웹, 모바일 등)의 전반적 기능을 모듈화한 집합이다.
- 폴더·파일 구조, 네이밍 컨벤션, 생명주기가 엄격히 규정돼 있다.
- 코드 흐름의 주도권이 프레임워크에 있다(제어의 역전, IoC).
- 덕분에 많은 기능(라우팅, 상태 관리, 빌드 등)을 out‑of‑the‑box로 제공한다.
- 자유도는 라이브러리보다 낮다. 규칙을 어기면 정상 동작하지 않는다.
대표 예시 – Vue.js & Django
- Vue.js: 싱글 파일 컴포넌트(
.vue), src·public 폴더 구조, CLI 빌드 파이프라인 등이 고정돼 있다.
- Vue 프로젝트 안에서는 Axios 같은 라이브러리를 손쉽게 끼워 넣을 수 있다.
- 하지만 React 전체를 Vue 내부에 통째로 삽입하기는 구조적 제약 때문에 어렵다.
- Django:
settings.py, urls.py, apps/ 폴더 등 정형화된 스캐폴딩을 따른다.
- ORM, 인증, 어드민, 템플릿 엔진까지 한 번에 제공한다.
3. 라이브러리 vs 프레임워크 – 핵심 비교표
| 구분 | 라이브러리 | 프레임워크 |
|---|
| 호출 주체 | 내가 라이브러리를 호출한다 | 프레임워크가 내 코드를 호출한다 |
| 구조 규칙 | 거의 없음 | 폴더·파일·네이밍 규칙이 명확 |
| 제공 기능 | 좁고 집중적이다 | 넓고 포괄적이다 |
| 자유도 | 높다 | 상대적으로 낮다 |
| 예시 | Axios, Lodash, D3.js | Vue.js, React(메타‑프레임워크 Next.js), Django |
4. 언제 무엇을 선택해야 할까
- 작은 기능만 필요하고 기존 아키텍처를 유지하고 싶다면 라이브러리를 도입한다.
- 애플리케이션 구조 전반을 빠르게 잡고 싶고, 팀원 간 일관된 규칙이 필요하다면 프레임워크를 선택한다.