본문 바로가기
취준/CS 기술면접 준비

라이브러리(Library)와 프레임워크(Framework) 차이

by 윤숩 2025. 1. 5.
728x90
728x90

 

소프트웨어 개발에서 코드의 재사용성과 생산성을 높이기 위한 도구입니다. 두 개념은 비슷해 보이지만, 사용 방식과 제어 흐름에서 중요한 차이가 있습니다.

 


1. 라이브러리(Library)

정의

  • 라이브러리는 특정 기능을 구현한 코드 모음으로, 개발자가 필요할 때 호출하여 사용할 수 있습니다.
  • 개발자가 제어 흐름을 주도하며, 필요한 함수나 클래스를 직접 가져와 사용합니다.

특징

  1. 제어 흐름: 개발자가 주도.
    • 개발자가 원하는 기능을 직접 호출(call)하여 사용.
  2. 유연성: 개발자가 애플리케이션의 구조를 자유롭게 결정.
  3. 모듈화: 필요한 부분만 가져와 사용 가능.

예시

  • JavaScript: Lodash, Axios
  • Python: NumPy, Pandas
  • Java: Apache Commons, JUnit
// JavaScript 라이브러리 예시 (Lodash)
import _ from 'lodash';

// 배열 요소를 랜덤으로 섞음
const shuffled = _.shuffle([1, 2, 3, 4]);
console.log(shuffled);

 


2. 프레임워크(Framework)

정의

  • 프레임워크는 애플리케이션의 기본 구조와 흐름을 제공하며, 개발자는 이 구조에 맞춰 코드를 작성합니다.
  • 프레임워크가 제어 흐름을 담당하며, 개발자가 작성한 코드를 필요할 때 호출합니다.

특징

  1. 제어 흐름: 프레임워크가 주도.
    • 개발자가 작성한 코드는 프레임워크에 의해 호출(callback)됨.
  2. 규칙과 구조 제공: 프레임워크의 규칙에 따라 코드를 작성해야 함.
  3. 통합된 기능 제공: 다양한 기능이 기본적으로 포함되어 있어 개발이 편리.

예시

  • Python: Django, Flask
  • Java: Spring, Hibernate

3. 차이점

특징 라이브러리 (Library) 프레임워크 (Framework)
제어 흐름 개발자가 직접 제어 (내가 호출) 프레임워크가 제어 (프레임워크가 호출)
유연성 자유롭고 필요에 따라 사용 가능 정해진 규칙과 구조를 따라야 함
목적 특정 기능 제공 (e.g., 데이터 처리, 네트워크) 애플리케이션의 구조와 워크플로 제공
사용 사례 특정 문제를 해결하거나 반복 작업을 줄임 프로젝트 전체 구조 및 워크플로 설계
종속성 독립적 프레임워크에 의존
학습 곡선 상대적으로 쉬움 비교적 어려움 (구조와 규칙 학습 필요

 


4. 라이브러리와 프레임워크의 관계

  • 라이브러리는 도구, 프레임워크는 틀로 비유할 수 있습니다.
  • 프레임워크 안에서도 특정 작업을 처리하기 위해 라이브러리를 사용할 수 있습니다.
    • 예: React(프레임워크)에서 Axios(라이브러리)를 사용해 API 요청 처리.

5. 어떤 것을 선택해야 할까?

라이브러리를 선택해야 할 때

  1. 애플리케이션의 구조를 자유롭게 설계하고 싶을 때.
  2. 특정 기능만 필요로 하는 경우.
  3. 프로젝트의 유연성이 중요한 경우.

프레임워크를 선택해야 할 때

  1. 표준화된 방식으로 개발을 진행하고 싶을 때.
  2. 프로젝트 규모가 크고 유지보수가 중요할 때.
  3. 다양한 기능이 이미 통합된 솔루션이 필요할 때.

6. 사례로 이해하기

집을 짓는 비유

  • 라이브러리:
    • 벽돌, 망치 같은 도구를 제공.
    • 집을 짓는 방법은 사용자가 결정.
  • 프레임워크:
    • 집의 설계도를 제공.
    • 설계도에 맞춰 벽돌과 망치를 사용해야 함.

개발 사례

  • 라이브러리 사용:
    • "API 요청을 간단히 처리하기 위해 Axios를 사용하겠다."
  • 프레임워크 사용:
    • "React를 사용해 전체 애플리케이션 구조를 설계하고, Axios로 API 요청을 처리하겠다."

결론

  • 라이브러리는 특정 기능을 제공하는 도구로, 개발자가 사용법을 선택합니다.
  • 프레임워크는 애플리케이션의 기본 틀과 흐름을 제공하며, 개발자는 그 틀 안에서 작업해야 합니다.
  • 프로젝트의 성격과 요구사항에 따라 적절한 도구를 선택하는 것이 중요합니다. 😊
728x90
728x90

댓글