개발자 취업준비/springboot

라이브러리와 프레임워크

naspeciallist 2025. 1. 15. 19:59

 

이 글은 스프링부트3 백엔드 개발자 되기 책을 바탕으로 공부한 내용을 정리한 게시글 입니다.

 

우리는 개발에 생산성과 효율성을 높이기 위해서 라이브러리와 프레임워크를 사용하게 됩니다.

 

라이브러리와 프레임워크를 사용시 개발속도가 향상되고 표준화 및 품질을 보장 할 수 있습니다.

 

따라서 빠르고 효율적인 개발을 위해 필요한 라이브러리와 프레임워크가 무엇인지 알아보겠습니다.

 

라이브러리란?

라이브러리는 애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음을 말합니다. 개발자가 소프트웨어를 만들 때 필요에 따라 원하는 기능을 구현하기 위해 코드의 모음을 가져다 쓸 수 있는 일종의 도구 역할을 합니다.

라이브러리의 특징

  1. 필요한 기능만 호출해서 사용
    • 개발자가 원하는 기능만 선택적으로 호출해 사용합니다.
    • 예: 데이터베이스 연결, 수학 계산, 파일 입출력 등
  2. 제어 흐름(Control Flow)을 개발자가 관리
    • 라이브러리는 개발자가 직접 프로그램의 흐름을 제어합니다.
    • 라이브러리는 단순히 필요한 기능을 제공하고, 언제 어디서 사용할지 결정하는 것은 개발자입니다.
  3. 재사용성과 효율성
    • 자주 사용하는 기능이나 복잡한 기능을 직접 구현하지 않고, 검증된 라이브러리를 사용함으로써 개발 시간을 절약하고 코드의 품질을 높일 수 있습니다.

 

라이브러리의 구성

  • 함수(Function) 또는 메서드(Method)
    → 특정 작업을 수행하는 코드 블록
  • 클래스(Class)
    → 객체지향 프로그래밍에서 사용되는 설계도
  • 모듈(Module)
    → 여러 함수나 클래스를 묶어 놓은 파일

예를 들어 로그 생성 기능, 로그 포매팅을 다양하게 지원하는 기능, 로그 레벨을 설정 할 수 있는 기능들이 구현되어 있는 로그 라이브러리가 있으면 개발자는 이런 기능이 묶여 있는 로그 라이브러리를 의존성에 추가하기만 하면 됩니다. 그러면 라이브러리에서 제공하는 기능들을 직접 구현 하지 않고도 프로젝트에서 사용 할 수 있습니다.

 

프레임워크란?

프레임워크는 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경입니다. 프레임워크는 틀(frame)과 일하다(work)의 합성어로 일하기 위한 틀을 제공하는 겁니다. 그래서 개발자는 그 틀에서 일을 해야하죠. 프레임워크는 정해진 틀에서 개발해야 한다는 단점이 있지만 개발 효율은 굉장히 높다는 장점이 있습니다.

 

프레임워크의 특징

  1. 제어의 역전(Inversion of Control, IoC)
    • 프레임워크가 프로그램의 흐름(제어)을 관리합니다.
    • 개발자는 정해진 규칙에 따라 필요한 부분만 구현합니다.
    • 예: Spring에서는 웹 요청이 들어오면 프레임워크가 컨트롤러를 호출합니다.
  2. 일정한 개발 규칙 제공
    • 코딩 스타일과 설계 구조를 표준화합니다.
    • 프로젝트가 커져도 일관성 있는 코드 유지가 가능해집니다.
  3. 재사용성과 확장성
    • 공통적으로 사용되는 기능을 미리 제공하여 개발자가 중복 코드를 줄이고 효율적으로 개발할 수 있습니다.
    • 플러그인 방식으로 기능을 쉽게 추가하거나 확장할 수 있습니다.
  4. 생산성 향상
    • 기본적인 기능이 내장되어 있어 빠르게 개발을 시작할 수 있습니다.
    • 예: 보안, 세션 관리, 데이터베이스 연결 등

 

프레임워크의 구성 요소

  1. 라이브러리(Library)
    • 특정 기능을 제공하는 도구(필요할 때 호출)
  2. 템플릿(Template)
    • 미리 만들어진 코드 구조(개발자는 필요한 부분만 채움)
  3. 도구 및 API
    • 다양한 기능을 쉽게 사용할 수 있도록 지원

대표적인 프레임워크로는 java에서는 Spring Framework가 있고 python에는 Django가 있습니다. 그리고 프런트엔드에서 자주 쓰이는 React도 컴포넌트 기반의 프레임워크 입니다.

 

프레임워크는 빠른개발을 돕고 유지보수가 용이하며 기능추가 및 확장이 용이 합니다. 뿐만 아니라 프레임워크에서 보안 관련 기능을 지원하기 때문에 보안적인 측면에서도 매우 유용합니다. 하지만 구조와 규칙이 복잡해 익숙해지기 까지 시간이 필요하고 정해진 규칙을 따라야 하므로 자유도가 떨어진다는 단점이 있습니다. 

 

 

라이브러리와 프레임워크는 개발자가 소프트 웨어를 개발하기 위해 사용하는 도구 이지만 사용목적에 따라 차이가 있습니다 프레임워크는 어플리케이션을 개발 할 때 전체적인 구조를 잡기 위해 사용하는 것이고 라이브러리는 개발을 하는 과정에서 필요한 기능을 구현하기 위해 사용하는 겁니다.

 

라이브러리 프레임워크 둘 다 처음에는 배우기 어렵고 복잡해 제약이 있는 것처럼 보일 수 있습니다. 하지만 적극적으로 익히고 활용하면 빠른 개발 속도와 높은 품질의 코드를 만들어 낼 수 있는 매우 강력한 도구가 될 수 있을 겁니다.