라이브러리와 프레임워크 [Library & Framework]

November 07, 2023

library

라이브러리

‘라이브러리’를 주제로 글을 작성하게 되었습니다. 라이브러리와 프레임워크 비슷해보이지만, 아주 다른 두가지를 비교해보며 대표적으로 사용되는 프론트엔드,백엔드 라이브러리 및 프레임워크까지 알아보도록 합니다.

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

라이브러리 (Library)

라이브러리(library)는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴, 클래스, 값, 자료형 사양을 포함할 수 있다. - 위키백과

재사용이 가능한 기능들을 미리 구현해 놓은 코드의 모음으로, 특정한 기능을 구현하는 함수 및 클래스 등의 집합입니다. 개발에 필요한 것을 구현해놓아 필요한 곳에서 호출하여 사용 가능하도록 만들어진 도구들을 의미합니다. 코드의 재사용성이 높아 쉽게 원하는 기능을 만들 수 있으며 개발에 필요한 시간과 돈을 절약할 수 있습니다.

프레임워크 (Framework)

컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. - 위키백과

어플리케이션의 개발 시의 동작 방식과 구조 등을 정의하는 뼈대, 틀을 제공하여 일정한 형태와 필요한 기능들을 갖추고 있는 소프트웨어를 의미합니다. 개발자에게 코드를 작성하는 지침을 제공하며, 특정 어플리케이션이나 도메인을 위한 공통적인 기능과 패턴을 제공합니다. 짜여진 구조 안에서 개발에 필수적인 기반 코드 및 데이터베이스 연동, 라우팅 등을 처리하기 위한 공통적인 코드의 양을 줄일 수 있으며, 개발자들은 핵심 로직에 집중하여 개발할 수 있습니다.


라이브러리와 프레임워크에 대한 예시

프론트엔드에서 사용하는 라이브러리의 대표적인 예시로는 리액트(React)가 있으며, 백엔드에서 사용하는 대표적인 라이브러리로는 Python 기반의 Django가 있습니다.

프론트엔드에서 대표적으로 사용하는 프레임워크로는 Vue.js, Angular, React 기반의 Next.js가 있다. 백엔드에서 Java 기반의 Spring과 Spring Boot가 있습니다.

프론트엔드 라이브러리와 프레임워크

React (프론트엔드 라이브러리): React는 Facebook에서 개발한 JavaScript 라이브러리로, 사용자 인터페이스를 만들기 위한 컴포넌트 기반 접근 방식을 제공합니다. 컴포넌트 기반 아키텍처를 활용하여 웹 애플리케이션을 구축하는 데 널리 사용됩니다.

Vue.js (프론트엔드 프레임워크): Vue.js는 프레임워크로, 작은 규모의 프로젝트부터 큰 규모의 애플리케이션까지 다양한 프론트엔드 프로젝트에 적합합니다. Vue.js는 컴포넌트 기반의 아키텍처를 특징으로 하며, 간결하고 직관적인 문법을 제공합니다. 또한 데이터와 화면 간의 양방향 데이터 바인딩을 통하여 데이터 변경이화면에자동으로 반영되고 화면에서의 상호작용이 데이터에 반영되는 편리한 방법을 제공합니다.

Angular (프론트엔드 프레임워크): Angular는 Google에서 개발한 프론트엔드 프레임워크로, 높은 생산성과 강력한 기능을 제공합니다. 라우팅, 상태 관리, 의존성 주입 등을 내장하고 있어 주로 큰 규모의 애플리케이션을 구축하는 데 사용됩니다.

Next.js (프론트엔드 프레임워크): Next.js는 React 기반의 프론트엔드 프레임워크로, 서버 사이드 렌더링(SSR) 및 정적 사이트 생성(SSG)을 지원합니다. 검색 엔진 최적화(SEO) 및 초기 로딩 성능을 향상시키는 데 도움을 줍니다. 서버 사이드 렌더링 및 정적 사이트 생성을 위한 다양한 플러그인을 제공합니다.

백엔드 라이브러리와 프레임워크

Django (백엔드 프레임워크, Python 기반): Django는 Python 기반의 백엔드 웹 프레임워크로, 웹 애플리케이션을 빠르게 구축하는 데 도움을 주며, 데이터베이스 모델링, 인증, 보안, 관리자 인터페이스 등을 제공합니다.

Spring (백엔드 프레임워크, Java 기반): Spring은 Java 기반의 백엔드 프레임워크로, 엔터프라이즈 애플리케이션(Enterprise Application) 애플리케이션을 구축하는 데 사용됩니다. Spring은 여러 모듈을 제공하여 웹 애플리케이션, 데이터 액세스, 보안, 인증 등을 처리할 수 있습니다.

Spring Boot (백엔드 프레임워크, Java 기반): Spring Boot는 Spring 기반의 프레임워크로, Production-Ready으로 디자인되어 애플리케이션을 빠르게 시작하고 구성할 수 있는 도구를 제공합니다. 초기 설정 및 프로젝트 구성을 최소화하고 생산성을 향상시키는 데 초점을 맞추어 기본 설정을 제공하여 더 빠른 개발을 가능하게 합니다.


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

라이브러리는 개발자가 직접 호출하여 사용하는 코드의 모음으로 제어의 흐름을 개발자가 관리한다. 따라서 라이브러리에서 제공해주는 함수나 클래스 등을 개발자가 필요한 시점에 직접 호출하고 관리합니다.
프레임워크 안에서 개발자는 프레임워크가 정의한 규칙과 패턴을 따라야 하며, 개발자가 작성한 코드를 프레임워크가 호출하여 제어의 흐름을 개발자가 아닌 프레임워크가 관리합니다.

제어의 역전(Inversion of Control, IoC) : 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. - 위키백과

“제어의 역전(IoC)“은 프레임워크와 밀접한 관련을 가진 개념으로, 프레임워크는 제어의 역전 원칙을 따라 구현합니다. 개발자가 프레임워크에서 정의한 규칙가 패턴을 따르도록 하며 애플리케이션의 주요한 흐름과 제어를 프레임워크가 가집니다.


참고자료

wiki/라이브러리

wiki/프레임워크

[wiki/제어반전](https://ko.wikipedia.org/wiki/%EC%A0%9C%EC%96%B4%EB%B0%98%EC%A0%84)_

[개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이

프레임워크 vs 라이브러리



Written by @Seongsim Kang

넥스트이노베이션의 기술, 문화, 뉴스, 행사 등 최신 소식 및 넥스트이노베이션이 겪은 다양한 경험을 공유합니다.