웹 프레임워크 등장 배경

  • 과거 인터넷
    • 정적인 이미지와 텍스트로만 이루어진 거대한 문서 저장소
      • 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로 배우는 백엔드 프로그래밍(한용재 저)