본문 바로가기
Web

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

by Caffein not null 2025. 6. 19.

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

 

웹개발을 배우다 보면 "React는 라이브러리야", "Vue는 프레임워크야"라는 말을 듣게 됩니다.

그런데 정작 라이브러리와 프레임워크가 뭐가 다른지 명확하게 설명하기는 어렵죠

심지어 경험 있는 개발자들도 이 두 용어를 헷갈려 하는 경우가 많습니다.

오늘은 이 두 개념을 실생활 예시로 쉽게 알아보겠습니다.

 

라이브러리란?

내가 필요할 때 가져다 쓰는 도구 상자

집에서 가구를 조립한다고 생각해봅시다.

도구 상자에는 드라이버, 망치, 렌치 등 다양한 도구가 들어있습니다.

  • 나사를 조일 때는 드라이버를 꺼내 쓰고
  • 못을 박을 때는 망치를 꺼내 쓰고
  • 볼트를 조일 때는 렌치를 꺼내 씁니다.

중요한 점은 내가 언제, 어떤 도구를 사용할지 결정한다는 것입니다.

도구들은 가만히 상자에 있다가 내가 부를 때만 나와서 일을 도와줍니다.

 

라이브러리 예시

 

React (JavaScript UI 라이브러리)

  • 웹페이지에서 "버튼을 클릭하면 화면이 바뀌게 하고 싶어"
  • React: "여기 useState 훅 써봐!"
  • 개발자가 필요한 순간에 React 기능을 가져다 사용

Java의 ArrayList (Java 컬렉션 라이브러리)

  • "리스트에 데이터를 추가하고 싶어"
  • ArrayList: "여기 .add() 메서드 써봐!"
  • 개발자가 원하는 타이밍에 메서드를 호출

 

프레임워크란?

미리 짜여진 틀 안에서 내가 살을 붙이는 것

 

아파트를 건설한다고 생각해봅시다.

건설회사는 이미 기본 설계도와 골조를 다 만들어놨습니다.

  • 전체적인 구조와 규칙은 이미 정해져 있고
  • 내가 할 일은 정해진 위치에 방을 꾸미고, 인테리어를 하는 것
  • 언제 무엇을 해야 하는지는 건설회사(프레임워크)가 결정합니다.

"지금은 배관 공사 시간이야", "이제 벽지 바르는 시간이야"라고 프레임워크가 알려주면

나는 그 순서에 맞춰서 내 작업을 하는 거죠.

 

프레임워크 예시

 

Spring (Java 웹 프레임워크)

  • Spring: "웹 애플리케이션 만들 때는 이 순서로 해야 해 Controller에서 요청 받고, Service에서 비즈니스 로직 처리하고, Repository에서 데이터 저장하고..."
  • 개발자: "알겠어, 네가 정한 규칙대로 할게"

JavaScript의 Express.js (Node.js 웹 프레임워크)

  • Express: "서버는 이런 형태로 만들어야 해. 라우터 설정하고, 미들웨어 등록하고..."
  • 개발자: "네가 정한 틀에 맞춰서 코드를 작성할게"

 

핵심 차이점 : 누가 주도권을 가지는가?

 

라이브러리 = 내가 주인

  • 내가 언제 라이브러리를 호출할지 결정
  • 내가 전체 프로그램의 흐름을 제어
  • 필요한 기능만 골라서 사용 가능

카페에서 음료를 주문하는 것과 비슷합니다.

내가 원할 때 "아메리카노 하나 주세요"라고 주문하면,

바리스타(라이브러리)가 커피를 만들어줍니다.

프레임워크 = 프레임워크가 주인

  • 프레임워크가 언제 내 코드를 호출할지 결정
  • 프레임워크가 전체 프로그램의 흐름을 제어
  • 프레임워크의 규칙을 따라야 함

회사에 출근하는 것과 비슷합니다.

회사(프레임워크)가 "9시에 출근해서, 회의하고, 점심 먹고, 오후에 업무 보고"라는 틀을 정해놓으면,

직원(개발자)은 그 틀 안에서 자신의 업무를 처리합니다.

 

헷갈리는 사례들

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

React는 공식적으로는 라이브러리입니다.

UI를 만드는 도구들을 제공하지만, 전체 앱의 구조를 강제하지는 않거든요.

하지만 실제로 사용할 때는 프레임워크처럼 느껴지기도 합니다.

Java의 Spring은?

Spring은 확실한 프레임워크입니다.

애플리케이션의 전체 구조와 동작 방식을 Spring이 결정하고, 개발자는 그 틀 안에서 코드를 작성하니까요.

 

그럼 어떤걸 사용해야 할까?

라이브러리를 사용해야 할 때

  • 기존 프로젝트에 특정 기능만 추가하고 싶을 때
  • 자유롭게 코드 구조를 설계하고 싶을 때
  • 가볍게 시작하고 싶을 때

프레임워크를 사용해야 할 때

  • 처음부터 큰 프로젝트를 체계적으로 만들고 싶을 때
  • 팀원들과 일관된 코드 스타일을 유지하고 싶을 때
  • 검증된 구조 위에서 안전하게 개발하고 싶을 때

 

마무리

라이브러리와 프레임워크의 차이는 결국 "누가 주도권을 가지느냐"입니다.

  • 라이브러리: 내가 필요할 때 도구를 가져다 쓰는 것
  • 프레임워크: 정해진 틀 안에서 내 코드를 작성하는 것

둘 다 개발을 쉽고 빠르게 해주는 고마운 존재들입니다.

상황에 맞게 적절히 선택해서 사용하면 됩니다.

 

처음에는 구분이 어려울 수 있지만,

실제로 여러 라이브러리와 프레임워크를 사용해보다 보면 자연스럽게 차이를 체감하게 될 거예요!