Spring

프레임워크(Framework)란? (라이브러리(Library)와 차이점)

서윤-정 2023. 8. 17. 12:29

 

 

 

 

 

✔️ 프레임워크(Framework)

프레임워크는 소프트웨어 개발을 위한 구조와 기본 틀을 제공하는 라이브러리와 도구의 집합이다.

특정 도메인이나 문제 해결을 위한 공통된 구조와 패턴을 제공하여 개발자가 보다 쉽고 효율적으로 애플리케이션을

개발하고 관리할 수 있도록 돕는다.

 

• 구조와 템플릿

프레임워크는 애플리케이션의 기본 구조와 디자인 패턴을 정의하여 개발자가 애플리케이션을 

구축할 때 일관성을 유지할 수 있도록 돕는다.

 

• 재사용성

프레임워크는 공통된 작업을 처리하는 미리 구현된 기능들을 제공하므로, 개발자는 이를 활용하여

코드를 재사용하고 개발 시간을 단축할 수 있다.

 

컴포넌트와 모듈화

프레임워크는 애플리케이션을 구성하는 여러 컴포넌트나 모듈을 분리하고 관리할 수 있는 기능을 제공한다.

 

설계 지침과 패턴

프레임워크는 개발자에게 애플리케이션의 설계 지침과 디자인 패턴을 제공하여 좊은 소프트웨어

아키텍처를 구축할 수 있도록 돕는다.

 

확장성

애플리케이션의 요구사항이나 확장에 따라 유연하게 확장될 수 있는 구조를 제공한다.

 

• 테스트와 디버깅

테스트와 디버깅을 위한 도구와 기능을 제공하여 애플리케이션의 품질을 향상시킬 수 있다.

 

프레임워크는 주로 특정 분야나 기술 스택에 맞추어 개발되며, 

웹 애플리케이션, 모바일 애플리케이션, 게임 개발, 데이터 분석 등 다양한 분야에서 사용된다.

대표적인 프레임워크로는 spring framework(Java 기반 웹 애플리케이션 개발), ruby on rails(웹 개발),

django(파이썬 웹 개발), react(프론트엔드 개발), angular(프론트엔드 개발), tensorflow(머신러닝) 등이 있다.

 

 

🔶 장점

- 개발 시간을 줄일 수 있다.

- 정렬화 되어 있어 일정 수준 이상의 품질을 기대할 수 있다.

- 유지 보수가 쉽다

 

🔶 단점

- 너무 의존하면 개발자들의 능력이 떨어져서 스스로 개발하는 것이 어려워진다.

- 습득에 걸리는 시간이 오래 걸린다.

 

 

 

 

 

 

 

 

✔️ 라이브러리(Library)

재사용 가능한 코드의 모음으로, 특정 기능이나 작업을 수행하기 위해 필요한 함수, 클래스, 메서드 등을

제공하는 소프트웨어 컴포넌트이다.

라이브러리는 개발자가 애플리케이션을 더 빠르고 효율적으로 개발할 수 있도록 돕는 도구이다.

 

라이브러리의 주요 특징과 역할은 다음과 같다.

 

• 재사용성

라이브러리는 공통된 기능을 추상화하고 구현한 것으로, 개발자는 이를 활용하여 코드를 재사용하고

개발 시간을 단축할 수 있다.

 

기능 확장

라이브러리를 사용하여 애플리케이션에 새로운 기능을 추가하거나 기존 기능을 확장할 수 있다.

 

모듈화

특정 기능을 독립된 모듈로 분리하고 관리할 수 있게 해준다.

 

표준화

특정 분야나 기술 스택에 관련된 표준화된 코드 패턴이나 디자인을 제공하여

개발자들 간의 일관성을 유지할 수 있도록 한다.

 

시간과 비용 절감

라이브러리를 사용하면 애플리케이션 개발에 필요한 기능을 처음부터 구현할 필요 없이 빠르게 개발할 수 있어

시간과 비용을 절감할 수 있다.

 

커뮤니티와 지원

널리 사용되는 라이브러리는 대개 커뮤니티와 문서화가 잘 되어 있어서 개발자들이 도움을 받을 수 있다.

 

라이브러리는 다양한 프로그래밍 언어와 분야에서 사용된다.

예를 들어, Java에서는 Apache Commons 라이브러리(유틸리티 함수), jQuery(웹 프론트엔드), 

requests(Python 웹 요청) 등이 라이브러리의 예시이다.

라이브러리는 프레임워크와 함께 개발자들의 생산성을 높이고 코드 품질을 향상시키는 데 도움을 준다.

 

 

 

 

 

 

 

✔️ 프레임워크? 라이브러리?

 

 

라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에게 있는가에 있다.

즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다.

둘 다 소프트웨어 개발을 위한 도구로서 코드의 재사용과 효율성을 높이는 목적을 가지고 있지만, 

그 동작 방식과 역할에서 차이가 있다!

 

 

프레임워크는

 

- 제어의 역전

프레임워크는 개발자가 작성한 코드가 아닌 프레임워크 자체가 제어 흐름을 관리한다.

개발자는 프레임워크가 제공하는 구조 안에서 코드를 작성하며, 프레임워크가 필요한 시점에 개발자가 작성한 

코드를 호출한다.

 

- 스케톨턴(스켈러톤 코드) 제공

프레임워크는 특정한 아키텍처와 디자인 패턴을 제공하므로 개발자는 이를 따라가며 코드를 작성한다.

이는 일관된 구조를 유지하며 애플리케이션의 품질을 향상시킨다.

 

- 제한된 프로그래밍 모델

프레임워크가 제공하는 모델을 따라 개발해야 하므로 개발자는 일부 제약을 받을 수 있다.

이는 애플리케이션의 일관성과 관리를 돕는다.

 

 

 

라이브러리는

 

- 사용자가 호출

라이브러리는 개발자가 필요한 시점에 따라 직접 호출하여 사용한다.

개발자는 자유롭게 라이브러리의 함수나 클래스를 활용하여 애플리케이션을 개발한다.

 

- 사용자가 제어

라이브러리를 사용할 때 개발자가 코드의 제어 흐름을 관리한다.

라이브러리는 개별적인 기능을 제공하며, 개발자는 이를 조합하여 애플리케이션을 구성한다.

 

- 다양한 선택 기능

라이브러리는 선택적으로 사용할 수 있으므로 개발자는 필요한 기능만을 가져와서 사용할 수 있다.

이는 유연한 애플리케이션 개발을 가능케 한다.

 

 

간단히 말해,

프레임워크는 개발자가 프레임워크의 구조에 따라 코드를 작성하고 프레임워크가 제어를 하며,

라이브러리는 개발자가 필요한 기능을 선택적으로 사용하고 개발자가 제어를 한다.

프레임워크는 보다 구체적이고 전체적인 개발 환경을 제공하며, 

라이브러리는 개별 기능을 제공하여 개발자의 편의를 높인다.