Search

웹에서 프레임워크가 필요한 이유

생성일
2023/01/09

웹 프레임워크 등장 배경

과거 인터넷
정적인 이미지와 텍스트로만 이루어진 거대한 문서 저장소
HTML만 있으면 충분했다.
모두 SSR(Server-Side Rendering) 방식으로 동작
서버가 요청을 처리한 다음 HTML과 자바스크립트 응답을 브라우저에 전송하면 브라우저는 서버로부터 전달되는 HTML 코드를 화면에 뿌려주기만 하면 됐다.
이후 동적으로 구성되는 부분은 함께 전달된 자바스크립트를 파싱하여 화면을 구성
현재 인터넷
전자 상거래, 금융 등 수많은 분야의 일을 처리할 수 있게 발전
필요한 애플리케이션 역시 웹과 모바일 앱 양쪽으로 작성
시간이 지날수록 웹 기술은 고도의 복잡도를 띠며 발전
과거와 달리 웹 앱을 만드는데 필수인 기술들을 기존 방식으로 작성하기에는 개발자의 시간과 노력이 너무 많이 들게 됐다.
자연스럽게 웹 개발에 필수적인 요소들을 묶어 개발자들이 쉽게 쓸 수 있게 하고자 하는 시도가 생겨났다.
그 결과물을 우리는 ‘웹 프레임워크(Web Framework)’ 라고 부르기로 했다.

웹 프레임워크의 장점

데이터베이스에 연결을 설정하고 데이터를 관리하거나, 세션을 맺고 유지하는 등의 동작을 정해진 방법과 추상화된 인터페이스로 제공
이 방법들이 프레임워크 사용자의 자유도를 제약한다고 생각할 수도 있지만 프레임워크에서 표준으로 제시하는 방법을 이용하면 쉽고 빠르게 안정적인 애플리케이션 구축이 가능해짐.

대표적인 웹 프레임워크

프레임워크
개발 언어
설명
리액트
자바스크립트/타입스크립트
- 싱글 페이지 애플리케이션(SPA)이나 모바일 앱 개발에 사용 - 최근 몇 년간 가장 인기 있는 프런트엔드 프레임워크 - 가상의 문서 객체 모델(DOM) 사용 - 메타가 주도하는 커뮤니티에서 유지 보수
Vue.js
자바스크립트/타입스크립트
- 리액트와 함께 인기 있는 프런트엔드 프레임워크 - SPA 구축 가능 - 모델-뷰-뷰모델(MVVM) 패턴에서 뷰모델(VM) 레이어에 해당하는 라이브러리 - 속도가 빠르다.
앵귤러
타입스크립트
- SPA를 위한 프레임워크면서 SSR을 지원 - 모듈/컴포넌트 기반으로 작성 (재사용성 높음)
스벨트(Svelte)
자바스크립트/타입스크립트
- 최근 인기 순위 1위로 등극한 프런트엔드 프레임워크 - 가상 DOM 사용 X - 적은 코드로 구현이 가능 (유지보수 용이)
Express
자바스크립트/타입스크립트
- 가장 많은 사용자를 가지고 있는 Node.js 기반 백엔드 프레임워크 - 가볍게 서버 구동 가능 - NestJS와 같이 Express를 기반으로 하는 프레임워크도 존재
스프링(Spring)
자바/코틀린
- 국내에서 인기가 높은 자바 기반 프레임워크 - 전자정부 표준프레임워크를 이용하는 프로젝트에는 다 Spring이 쓰이기에 국내에서 영향력이 높다. - 객체 지향 프로그래밍 기법을 쉽게 적용 가능
아파치 스트러츠
자바
- 주로 자바 기반의 JSP에 사용되는 프레임워크 - 모델-뷰-컨트롤러(MVC) 패턴 기반의 웹 애플리케이션을 쉽게 작성 가능
장고(Django)
파이썬
- 파이썬 기반 웹 프레임워크 - MVC 패턴
Gin
Go
- Go 기반 웹 프레임워크
루비 온 레일즈(Ruby on Rails)
루비
- 간결한 문법과 뛰어난 생산성으로 인기를 얻었다. - ActiveRecord를 이용하여 쿼리를 쉽게 다룰 수 있게 해준다.

웹 프레임워크를 선택할 때 고려하면 좋은 사항들

1. 개발 문서

쉽게 이해할 수 있게 잘 쓰인 개발 문서는 사용자의 생산성을 올려준다.
커뮤니티에 질문하고 원하는 답변을 얻으려면 시간이 오래 걸린다.
문서를 통해 문제를 해결할 수 있다면 제일 BEST

2. 사용자 수

사용자 수가 많다는 것 -> 그만큼 안정적이다.
더불어 궁금한 것이 있을 때 개발자 커뮤니티에서 답을 쉽게 찾을 수 있다.

3. 활성 커뮤니티

사용자 수가 많다는 건 활성 커뮤니티가 많다는 의미
메타, 슬랙, 디스코드, 스택 오버플로 등

4. 깃허브 스타 수와 이슈 대응

대부분의 프레임워크 -> 오픈 소스로 개발
따라서 소스 코드가 깃허브에 공개되어 있다.
깃허브 스타 수 -> 사람들의 인정
이슈 대응 -> 사용자들이 리포트하는 이슈가 얼마나 잘 대응되고 있는가?
개발이 멈춘 프로젝트는 최신 언어 트렌드와 아키텍처를 따라잡지 못하고 있는 것

Reference