웹에서 프레임워크가 필요한 이유
장동호
웹 프레임워크 등장 배경
- 과거 인터넷
- 정적인 이미지와 텍스트로만 이루어진 거대한 문서 저장소
- 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
[책] nestjs로 배우는 백엔드 프로그래밍(한용재 저)