본문 바로가기
Dev/Spring Framework

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

by 세대교체 2024. 12. 6.

프레임워크란

 

프레임워크(Framework)란 개발자가 소프트웨어를 개발함에 있어 구현에 드는 시간을 단축하고 재사용성을 높이기 위해 미리 정해진 구조나 설계 패턴을 제공하는 ‘뼈대’이다.

 

이는 일련의 클래스 묶음이나 템플릿을 라이브러리 형태로 제공하는 것으로 개발자가 해당 구조를 기반으로 애플리케이션을 구성하고 확장해나가게 된다.

 

대표적으로 IoC(Inversion of Control, 제어의 역전) 개념이 적용되어 있어 프로그램의 전체적인 흐름(Flow)을 프레임워크가 주도하고 개발자는 필요한 부분을 확장하거나 구현하는 방식으로 개발을 진행한다.

 

특징

 

프레임워크는 정형화된 개발 방식과 구조를 제시한다.

예를 들어 Spring Framework에서는 애플리케이션 컨텍스트나 Bean 설정 방식을 지키도록 하며 이를 통해 일관성과 유지보수성을 확보한다.


프레임워크는 정해진 패턴 및 관례(Convention)를 따른다. 개발자는 이를 준수해야 하며 이는 빠른 개발과 높은 품질을 보장하는 대신 유연성을 어느 정도 제약한다.


Spring Boot의 스타터(Starter), Spring Data JPA, Spring Security와 같은 공식 혹은 서드파티 플러그인을 통해 개발자는 복잡한 기능 구현을 활성화할 수 있다.

 

장단점

장점 단점
일정한 개발 패턴과 도구들이 제공되어 생산성이 향상된다. 프레임워크에 의존할수록 특정한 개발 방식에 갇혀 개발자의 창의성이 제한될 수 있다.
정형화된 구조로 인해 코드 품질이 상향 평준화된다. 프레임워크의 개념, 라이프사이클, 환경설정 방식 등을 숙지하는 데 시간이 걸린다.
일관된 구조와 명확한 규칙 덕분에 유지보수가 용이하다.  

 

종류

     
영속성 프레임워크
데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들을 라이브러리화하여 구현한 프레임워크

예) Hibernate, MyBatis
자바 프레임워크
Java EE를 통한 웹 애플리케이션 개발에 초점을 맞추어 필요한 요소를 모듈화하여 제공하는 프레임워크

예) Spring Framework

 

 

라이브러리란

라이브러리(Library)는 특정 기능을 구현한 클래스나 함수들의 집합이다.

라이브러리호출자의 흐름 안에서 동작하며 개발자가 필요할 때 호출하는 "도우미" 역할을 수행한다.

 

특징

 

예를 들어 JSON 파싱 라이브러리(Jackson, Gson), 로깅 라이브러리(Logback, Log4j), JUnit(테스트)는 특정 기능 구현에 초점을 맞춘다.


라이브러리를 사용할지, 어떤 시점에 사용할지, 어떤 메서드를 호출할지 모두 개발자에게 달려 있다.

 

 

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

프레임워크와 라이브러리의 가장 큰 차이는 "제어 흐름(Flow) 주도권"에 있다.

   
프레임워크
애플리케이션 전반의 흐름을 프레임워크가 주도
한다.


개발자는 필요한 지점에서 프레임워크가 정한 규칙에 맞추어 구현을 추가한다. 즉, IoC(Inversion of Control) 개념이 구현되어 있으며 애플리케이션의 생명주기, 컴포넌트 초기화 시점, 요청-응답 흐름 등을 프레임워크가 관장한다.

Spring MVC나 Spring Boot는 애플리케이션의 시작과 요청 처리 흐름을 내부적으로 관리하고 개발자는 특정 Bean이나 Controller, Service를 통해 필요한 기능을 정의하는 식이다.

라이브러리
개발자가 주도하는 흐름 안에서 유용한 기능을 제공
하는 도구다.