프레임워크(Framework)란?
소프트웨어 프레임워크(Software Framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조, 프레임워크(Framework)라고도 한다.
애플리케이션 프레임워크(Application Framework)는 소프트웨어 개발자가 응용 소프트웨어의 표준 구조를 구현하기 위해 사용하는 소프트웨어 프레임워크로 구성된다. 즉, 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임이다. 간단하게 프레임워크라고도 부른다.
웹 프레임워크(Web Framework) 또는 웹 애플리케이션 프레임워크(Web Application Framework)는 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종이다. 웹 페이지를 개발하는 과정에서 겪는 어려움을 줄여주는 것이 주 목적으로 통상 데이터베이스 연동, 템플릿 형태의 표준, 세션 관리, 코드 재사용 등의 기능을 포함하고 있다.
소프트웨어 프레임워크, 애플리케이션 프레임워크, 웹 프레임워크는 "프레임워크"라는 키워드를 검색했을 때, 연관된 몇 가지 개념들이다.
위 개념들은 아래와 같이 정리될 수 있다.
- 소프트웨어 프레임워크 = 기본 개념 구조 = 뼈대, 골조, 프레임워크
- 애플리케이션 프레임워크 = 클래스와 라이브러리 모임 = 프레임워크
- 웹 프레임워크 애플리케이션 ⊆ 프레임워크 ⊆ 소프트웨어 프레임워크
프론트엔드 프레임워크 (Front-end Framework)
위 개념을 바탕으로 프론트엔드 프레임워크(Front-end Framework)란 사용자와 만나는 화면 단인 프론트엔드를 구현하기 위한 프레임워크라고 볼 수 있다.
배경
모바일, 웹의 발달로 웹의 규모가 커지고 파일의 수가 많아지며 관리의 목적으로 프론트엔드 프레임워크가 등장했다.
장점
- 체계적인 코드 관리로 유지보수 용이
- 기본 설계 및 기능 라이브러리 제공으로 개발 생산성 향상
- 코드 재사용성 증가
- 추상화된 코드 제공을 통한 높은 확장성
단점
- 높은 학습 난이도
- 기본 설계된 구조로 인한 자유로운 개발의 한계 발생
- 미사용 기능에 대한 라이브러리 포함으로 인한 용량 증가
프론트엔드 프레임워크의 종류
앵귤러(Angular)
- 배경
- 구글 엔지니어 Misko Hevery의 개인 프로젝트로 개발
- 2012년 공식적으로 공개
- 대표 기업
- 특징
- 생성, 테스트, 빌드, 배포를 위한 모든 기능 제공
- Angular CLI를 제공하여 개발 환경 지원
- 대규모 애플리케이션 개발에 적합
- 장점
- 대부분의 기능을 자체적으로 제공, 간편한 개발 환경을 구축
- 타입스크립트를 채택, 다양한 도구의 지원, 코드의 가독성과 안전성을 향상
- 단점
리액트(React)
- 배경
- 페이스북 엔지니어 Jordan Walke에 의해 개발
- 2011년 페이스북 뉴스피드에 처음 적용
- 대표 기업
- 페이스북, 넷플릭스, 우버, 페이팔, 에어비앤비, 마이크로 소프트
- 특징
- 싱글 페이지 애플리케이션(SPA), 모바일 애플리케이션개발시 많이 활용
- 데이터 변경에 따라 컴포넌트만 효율적으로 갱신하고 렌더링
- 컴포넌트의 상태를 변화시키지 않고 관리
- 코어 기능 외의 편의 기능을 제공하지 않음
- 장점
- 거대한 사용자 커뮤니티, 다양한 레퍼런스와 많은 확장 라이브러리
- 페이스북의 지원, 지속적인 버전 관리 및 오류 수정
- 대규모 프로젝트에서도 관리가 수월하고 테스트에도 적합
- 독립적 사용 및 점직적 채택 가능
- 단점
뷰(Vue.js)
- 배경
- 구글 엔지니어 Evan You에 의해 개발
- 2014년 2월에 공식적으로 배포
- 대표 기업
- 나사, 어도비, 깃랩, 페이스북, 넷플릭스, 샤오미, 알리바바
- 특징
- 가볍게 제작한 프레임워크, 작은 규모의 애플리케이션 개발에 용이
- 선택적 채택 사용 가능
- HTML 기반 문법
- 단일 파일 컴포넌트 기반
- 장점
- 빠른 속도
- 빠른 러닝 커브
- 관리 용이, 생산성 향상, 협업 용이
- 단점