Framework/Spring

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

쉬지마 이굥진 2024. 1. 16. 18:23

전에 KDT로 부트캠프에서 강의 들을 때도, Spring framework를 사용해서 팀 플젝 할 때 중간중간 문득!

그래서 프레임워크는 뭔데 ? 라이브러리랑 뭐가 다른건데? 라는 의문이 들었었다. 

그럴 때 마다 구글링 해서 찾아보고, 아 ~~~ 이거구나! 하고 넘어가니까 뒤돌아서면 까먹는거다.

아예 기록해둬서 안까먹도록 박제 하려고 포스팅한다.

※ 백엔드 취준생이 작성한 글로, 틀린 개념이 있다면 댓글로 지적해주시면 감사하겠습니다.

 

  • 프레임워크란?
    • 개발자가 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가 시키기 위해, 일련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공하는 것을 말함
    • 제어의 역전 개념이 적용된 대표적인 기술
  • 프레임워크의 특징
    • 개발자가 따라야 하는 가이드를 제공
    • 개발할 수 있는 범위가 정해져있음
    • 개발자를 위한 다양한 도구, 플러그인들을 지원함
  • 프레임워크의 장단점
    • 장점
      • 개발 시간을 줄일 수 있음
      • 정형화 되어 있어 일정 수준 이상의 품질을 기대할 수 있음
      • 유지 보수가 쉬움
    • 단점
      • 너무 의존하면 개발자들의 능력이 떨어져서 스스로 개발하는 것이 어려워짐
      • 습득에 걸리는 시간이 오래 걸림
  • 프레임워크의 종류
    • 영속성 Framework
      • 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들을 라이브러리화하여 구현한 프레임워크
      • Mybatis, Hibernate
    • 자바 Framework
      • Java EE를 통한 웹 어플리케이션 개발에 초점을 맞추어 필요한 요소들을 모듈하하여 제공하는 프레임워크
      • Spring Framework, 전자정부표준-Spring, Struts
    • 화면 구현 Framework
      • Front-End를 보다 쉽게 구현할 수 있게 틀 제공
      • Bootstrap, Foundation
    • 기능 및 지원 Framework
      • 특정 기능이나 업무 수행에 도움을 줄 수 있는 기능을 제공
      • Log4j, JUnit 5, ANT

  • 라이브러리란?
    • 개발자가 만든 클래스들의 나열 (= 특정 기능을 구현한 코드의 모음)
    • 다른 프로그램들에서 사용할 수 있도록 제공하는 방식
  • 라이브러리의 장단점
    • 장점
      • 재사용성 : 다른 프로젝트에서 쉽게 재사용 가능
      • 독립성 : 필요한 부분만 선택적으로 사용 가능
      • API : 라이브러리는 일반적으로 api를 통해 개발자에게 제공됨
      • 언어 독립성 : 일부 라이브러리는 특정 프로그래밍 언어에 의존하지 않고 여러 언어에서 사용할 수 있도록 설계되어있음
      • 확장성 : 애플리케이션에 필요한 부분만 선택적으로 추가해서 사용할 수 있음. 이는 애플리케이션의 확장성을 높여줌
    • 단점
      • 여러 라이브러리 간에 서로 버전이나 의존성 등의 충돌이 발생할 수 있음. (특히 큰 프로젝트에서)
      • 코드 크기 증가 - 이는 앱을 배포하거나 유지보수할 때 일부 불편할 수 있음
      • 보안 취약점이 있을 수 있음. 따라서 업데이트를 소홀히 하면 안되고 안전한 라이브러리를 선택해야 함

  • 프레임워크와 라이브러리의 차이점
    • 제어 흐름에 대한 **주도성(통제권)**이 누구에게 / 어디에게 있는가에 있음. ★
    • 즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있음.
      • 프레임워크는 그 스스로 제어 흐름의 주도성을 갖는 반면, 라이브러리는 개발자가 갖고 있다.
    • 프레임워크는 집이고, 라이브러리는 그 집 안의 가구이다.
      • (집) 사용자는 프레임워크가 주는 틀에 따라 코드를 작성해야 함.
      • (가구) 재료의 선택권이나 통제권은 사용자에게 있음.
    • 라이브러리와 달리, 프레임워크는 이미 프로그래밍에 대한 규칙을 갖고 있다.
      • ex) 설정 파일의 태그 설정이나, DB연동 방법 등에 대한 규칙을 갖고 있고 개발자는 이를 따라야 한다.


결론

  1. 프레임워크와 라이브러리는 둘 다 코드 작성에 도움이 되는 타인이 작성코드의 집합이다.
  2. 프레임워크는 프로그램이 필요한 것을 개발자에게 알려줌으로써 제어권을 역전하고, 라이브러리는 개발자가 필요할 때 마다 설치, 혹은 호출함으로써 개발자가 능동적으로 사용하게 된다.