프레임워크란?
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.
프레임워크는 애플리케이션의 설계도를 제공하는 프로그램의 골격들이지 완성된 제품은 아니다.
결과적으로 프레임워크는 애플리케이션의 기본 바탕을 제공해 주면서 개발자들에게 어디를 수정해서 사용해서 쓸지를 알려주는 것이라고 할 수 있다. 그래서 프레임워크 자체가 소프트웨어 개발의 업무 흐름을 정의하고 있으며 개발자들에게 무엇이 필요한지 알려주고 필요한 경우 개발자들의 코드를 호출하여 사용하는 구조다.
프레임워크를 사용하는 이유
- 적은 코드 길이
- 코드 재사용
- 쉬운 디버깅과 애플리케이션 모니터링
- 단순화된 DB 연결
- 향상된 보안
대표적인 프레임워크
Angular
Angular 는 싱글 페이지 애플리케이션을 만들기 위한 프론트엔드 프레임워크다. 생동감 넘치는 프레임워크로서 완전히 클라이언트 사이드에서 돌아가는 웹앱을 만들때 사용되거나 일반적으로 소프트웨어가 지원하는 기능등을 제공하는데에도 사용된다. Angular 의 단점은 다른 프레임워크에 비해 큰 크기라고 할 수 있습니다. 기본적으로 SEO 친화적이지 않은 점도 있어서 SEO 최적화를 별도로 해줘야 한다.
Vue.js
Vue는 사용자 인터페이스를 구축하기 위한 JavaScript 프레임워크다. 표준 HTML, CSS 및 JavaScript를 기반으로 구축되며, 단순한 것부터 복잡한 것까지 사용자 인터페이스를 효율적으로 개발할 수 있는 컴포넌트 기반 프로그래밍 모델을 제공한다.
Django
Django 는 모델-뷰 템플릿 디자인 패턴을 기반으로 한 파이썬 프레임워크다. 무료이고 오픈소스 프레임워크로서 빠른 웹개발을 지향한다.
Spring
Spring은 Java로 쓰여진 MVC 프레임워크다. Spring에는 비즈니스를 빠르게 확장하고 성능을 개선시킬 수 있는 다양한 형제 프로젝트들이 존재한다. Spring 은 Java에 익숙하지 않다면 학습하는 데 시간이 많이 걸린다는 단점이 있다.
라이브러리란?
주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다.
라이브러리는 미리 작성된 코드 그룹으로서 쉽게 작업들을 완성시킬 수 있게 해준다. 라이브러리는 미리 정의된 메소드와 클래스들의 집합으로서 개발자들이 자신의 업무에서 쉽게 적용하여 빠르게 개발을 마칠수 있게 도와준다. 대부분의 프로그래밍 언어는 기본적인 라이브러리를 포함하고 있으며, 개발자들은 자기만의 라이브러리를 추가할 수도 있다.
라이브러리를 사용하는 이유
- 바로 사용이 가능한 기능들의 집합
- 새로운 애플리케이션 효율 증대
- 특정 업무 영역에 지식없이 해당 기능 적용 가능
대표적인 프레임워크
React
React는 사용자 인터페이스를 구축하기 위한 선언적이고 효율적이며 유연한 JavaScript 라이브러리다. React는 프론트엔드 라이브러리이며 프레임워크가 아니다. React 의 가상 DOM 은 DOM 동작을 빠르게 해주며 React 는 상대적으로 배우기 쉽다.
jQuery
jQuery는 빠르고 작고 기능이 풍부한 JavaScript 라이브러리다. 자바스크립트로 쓰여져 있으며, 무료이고 오픈소스인 툴킷이다. jQuery 에는 AJAX 처리, DOM 핸들링, 이벤트 핸들링, 애니메이션 이펙트 등 웹개발에 필요한 많은 기능들을 제공한다.
Redux
Redux는 자바스크립트 오픈소스 라이브러리로서 애플리케이션 상태를 관리하고 표준화하는데 사용된다. 유저 인터페이스를 디자인하고 관리하는데 사용할 수 있다. Redux 는 애플리케이션 상태를 담는 컨테이너로서 직관적이고 집약적인 API를 제공하는 가벼운 라이브러리다.
Lodash
Lodash 는 JS 유틸리티 라이브러리로서 숫자, 배열, 텍스트 그리고 오브젝트를 단순하게 사용할 수 있게 해준다. 함수형 프로그래밍 스타일을 적용하여 관리하기 편하고 간결한 자바스크립트 코드를 만들어준다.
프레임워크와 라이브러리의 차이점
프레임워크는 라이브러리를 포함한다. 프레임워크 위에 개발자가 작성한 애플리케이션 코드가 올라가게 되고, 이 애플리케이션 코드에서는 라이브러리를 호출할 수 있다.
프레임워크와 라이브러리의 가장 큰 차이점은 제어 흐름이 어디에 있는가이다. 라이브러리와 프레임워크간에 존재하는 기술적인 차이는 제어의 반전 또는 역전이라고 불리는 IoC(Inversion of Control)의 개념에 있다. 라이브러리를 사용할 때 애플리케이션의 흐름을 제어할 수 있는데 내가 언제 어디서 라이브러리를 호출할 수 있는지 제어 할 수 있다. 프레임워크를 사용할때는 프레임워크 자체가 흐름을 제어한다.
프레임워크 | 라이브러리 |
다양한 API들, 컴파일러, 애플리케이션 지원 기능, 라이브러리들이 모두 포함됨 | 보조적인 모듈, 오브젝트, 클래스, 함수, 코드들의 집합 |
프레임워크 바꾸는 것은 쉽지 않음 | 다른 라이브러리로 쉽게 대체 가능 |
제어의 반전: 프레임워크안에서는 프레임워크가 우리를 호출함 | 라이브러리의 메소드를 호출할 때 우리에게 통제권이 있음 |
프레임워크 제작에는 상당히 많은 코드가 필요하고 성능과 로딩타임에도 조금은 손해를 보게 됨 | 라이브러리 제작에는 상대적으로 적은 코드가 드는 반면, 성능이 좋고 빠른 로딩 타임을 보장함 |
이미 존재하는 프로그램에 프레임워크를 새로 적용하는 것은 상당히 많은 노력이 필요 | 기존 프로그램에 특정 기능을 구현하기 위해서 단순하게 라이브러리를 연결시키는 것 가능 |
출처
https://www.samsungsds.com/kr/insights/frameworks.html
https://www.miraeweb.com/single-post/프레임워크와-라이브러리는-어떻게-다른가
https://code-lab1.tistory.com/284
'IT 지식 > CS' 카테고리의 다른 글
캐시(Cache) (0) | 2023.03.29 |
---|---|
Webpack(웹팩)이란? (0) | 2023.02.07 |
[Network] TCP의 3-way handshake / 4-Way Handshake (0) | 2023.01.12 |
[Data Structure] ADT(추상적 자료형): 큐와 스택 (0) | 2023.01.10 |
시간 복잡도와 공간 복잡도 (0) | 2023.01.09 |