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

eunbi·2025년 2월 2일

CS 총정리

목록 보기
3/22

웹 개발을 하다 보면 프레임워크(Framework)라이브러리(Library) 라는 용어를 자주 접하게 된다.

이 둘은 모두 개발을 도와주는 도구이지만, 근본적인 차이점이 존재한다.


1. 프레임워크와 라이브러리의 핵심 차이점

프레임워크(Framework): 애플리케이션의 전체적인 구조와 흐름을 제공하는 도구

라이브러리(Library): 특정 기능을 제공하며, 개발자가 직접 제어하는 코드 모음

구분프레임워크 (Framework)라이브러리 (Library)
제어 흐름제어의 역전(Inversion of Control) → 프레임워크가 전체 흐름을 결정개발자가 직접 코드 흐름을 제어
사용 방식프레임워크의 규칙과 구조를 따라야 함필요할 때 호출하여 사용
예시Next.js, Angular, Vue.js, SpringReact, Lodash, Axios, Moment.js
유연성프레임워크가 전체 구조를 관리 → 제한적 유연성개발자가 원하는 대로 활용 가능

핵심 차이점: 제어의 흐름(Control Flow)을 누가 가지느냐에 따라 구분된다.

프레임워크는 "우리 코드가 프레임워크에 의해 실행"되지만,

라이브러리는 "우리가 직접 라이브러리를 호출하여 실행"하는 방식이다.


2. 프레임워크(Framework)란?

프레임워크의 정의

  • 애플리케이션의 전체적인 구조를 제공하는 도구
  • 개발자는 프레임워크가 제공하는 규칙과 패턴을 따라야 함
  • "제어의 역전(Inversion of Control, IoC)" 개념을 따름 → 프레임워크가 코드 실행을 주도

프레임워크의 특징

  • 일관된 구조 제공 → 프로젝트의 유지보수성과 확장성이 높음
  • 일정한 규칙이 필요 → 개발자가 특정 방식으로 코드를 작성해야 함
  • 일반적으로 여러 개의 기능을 포함 (라우팅, 상태 관리, API 통신 등)

대표적인 프레임워크 예시

📌 Next.js (React 기반 프레임워크)

export default function Home() {
  return <h1>Hello, Next.js!</h1>;
}
  • Next.js는 페이지 기반 라우팅, SSR/SSG 지원, API 라우트 제공 등 구조를 제공한다.
  • 개발자는 Next.js의 규칙을 따라 프로젝트를 구성해야 한다.

📌 Angular (구글의 프론트엔드 프레임워크)

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  template: '<h1>Hello, Angular!</h1>'
})
export class AppComponent {}
  • Angular는 컴포넌트 기반 개발, 의존성 주입(DI), 라우팅 관리 등 구조를 제공한다.
  • 개발자는 Angular가 요구하는 패턴과 규칙을 따라야 한다.

프레임워크를 사용하면 개발 속도가 빨라지지만, 자유도가 낮아진다.

정해진 방식으로 코딩해야 하므로 일관성이 높아지는 장점이 있다.


3. 라이브러리(Library)란?

라이브러리의 정의

  • 특정 기능을 수행하는 함수들의 모음
  • 개발자가 필요할 때 직접 호출하여 사용
  • 제어의 역전이 없음개발자가 코드 흐름을 직접 결정

라이브러리의 특징

  • 개발자가 원하는 대로 호출하여 사용 가능
  • 프레임워크보다 유연성이 높음
  • 필요한 기능만 선택적으로 사용할 수 있음

대표적인 라이브러리 예시

📌 React (UI 라이브러리)

import React from "react";

function App() {
  return <h1>Hello, React!</h1>;
}

export default App;
  • React는 UI를 그리는 라이브러리일 뿐, 전체적인 프로젝트 구조를 강제하지 않는다.
  • 라우팅, API 관리 등은 개발자가 직접 추가해야 함

📌 Axios (HTTP 요청 라이브러리)

import axios from "axios";

axios.get("https://jsonplaceholder.typicode.com/posts")
  .then(response => console.log(response.data));
  • Axios는 HTTP 요청을 쉽게 수행하는 라이브러리
  • 개발자가 필요할 때만 호출하여 사용 가능

라이브러리는 특정 기능을 수행하며, 개발자가 원하는 방식으로 활용할 수 있다.

제한이 없으므로 자유도가 높지만, 프로젝트 구조를 개발자가 직접 관리해야 한다.


4. 프레임워크 vs 라이브러리 예제 비교

프레임워크와 라이브러리는 프로젝트의 코드 흐름을 제어하는 방식에서 차이를 보인다.

React (라이브러리)

import React, { useState } from "react";

function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>{count}</h1>
      <button onClick={() => setCount(count + 1)}>증가</button>
    </div>
  );
}

export default App;

React는 UI를 관리하는 라이브러리이므로, 프로젝트의 흐름을 개발자가 직접 결정해야 한다.

라우팅, 상태 관리, API 호출 등을 추가해야 한다.


Next.js (프레임워크)

import { useState } from "react";

export default function Home() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>{count}</h1>
      <button onClick={() => setCount(count + 1)}>증가</button>
    </div>
  );
}

Next.js는 React 기반 프레임워크로, 프로젝트 구조와 실행 방식을 제공한다.

서버 사이드 렌더링(SSR), API 라우트 등을 내장하고 있어 별도의 설정이 필요 없다.


5. 프레임워크와 라이브러리는 언제 사용해야 할까?

프레임워크를 사용할 때

프로젝트의 일관성이 중요할 때

팀 협업이 필요할 때

빠르게 개발하고 싶을 때

대규모 프로젝트에서 코드 유지보수를 쉽게 하고 싶을 때

👉 예시: Next.js, Angular, Vue.js


라이브러리를 사용할 때

자유롭게 커스텀하고 싶을 때

프로젝트의 구조를 직접 관리하고 싶을 때

작은 규모의 프로젝트를 만들 때

특정 기능만 추가하고 싶을 때

👉 예시: React, Lodash, Axios


🎯 결론

  • 프레임워크(Framework) 는 프로젝트의 구조와 흐름을 제어하며, 제어의 역전(IoC) 개념을 따른다.
  • 라이브러리(Library) 는 특정 기능을 수행하며, 개발자가 필요할 때 직접 호출하여 사용한다.
  • 프레임워크는 개발 속도를 높이고 유지보수를 쉽게 하지만, 유연성이 제한된다.
  • 라이브러리는 유연성이 높지만, 프로젝트의 구조를 개발자가 직접 관리해야 한다.
  • 실무에서는 프레임워크와 라이브러리를 함께 사용하며, 프로젝트 요구사항에 따라 적절한 도구를 선택하는 것이 중요하다.

0개의 댓글