스프링

[스프링] 웹서버, WAS, 서블릿 / SSR, CSR

HHRR 2024. 1. 14. 00:12
웹 어플리케이션에 대해 헷갈렸던 개념들 위주로 정리해보려 한다.

웹서버 vs WAS

  • 둘 다 HTTP 기반으로 동작한다.
  • 웹서버정적 리소스 제공한다. 
    • NGINX, APACHE가 있음
  • WAS는 웹서버 기능을 포함하면서 코드를 실행해 애플리케이션 로직을 수행한다.
    • 서블릿, JSP MVC등
    • 톰캣, Jetty, Undertow가 있음

웹 시스템 구성

  • WAS랑 DB만으로 시스템 구성이 가능한데, 이렇게되면 WAS가 너무 많은 역할을 담당해서 서버 과부하가 올 수 있다.
  • 따라서 위 그림처럼 정적 리소스는 웹서버가 처리하고 애플리케이션 로직과 같은 동적 처리가 필요하면 WAS에 요청을 위임한다.
  • 필요에 따라 웹서버랑 WAS서버를 각각 증설할 수 있어서 효율적으로 리소스를 관리할 수 있다!

서블릿

HTTP 요청이 오면 WAS가 요청, 응답 객체를 만들어서 서블릿 객체를 호출하고 개발자는 각 객체를 편리하게 꺼내서 쓰면 된다. -> HTTP 스펙을 매우 편리하게 사용할 수 있게됨!

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
  • 서블릿 컨테이너가 서브릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리해준다.
  • 서블릿 객체는 싱글톤으로 관리된다
    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근
    • 공유변수 사용 주의
  • WAS는 동시 요청을 위한 멀티 쓰레드 처리를 지원한다.
    • 쓰레드풀을 이용하면 효율적으로 쓰레드 최대치 관리가 가능하다
    • 톰캣은 최대 200개 기본 설정 
    • WAS의 주요 튜닝 포인트는 최대 쓰레드 수이다. 쓰레드 풀의 적정 숫자는 애플리케이션 로직의 복잡도, cpu, 메모리, io 리소스 상황에 따라 모두 다르다.

SSR(서버 사이드 렌더링)

HTML 최종 결과를 서버에서 만들어서 웹브라우저에 전달하는 형식이다.

주로 정적인 화면에서 사용하고 서버에 HTML 요청만 온다.

관련 기술로 JSP, 타임리프가 있다.

CSR(클라이언트 사이드 렌더링)

HTML 결과를 자바스크립트로 웹브라우저에서 동적으로 생성해서 적용한다.

주로 동적인 화면에서 사용하고 서버에서 1. HTML, 2. 자바스크립트, 3. HTTP API 데이터 요청이 오면 응답 후에 웹 브라우저에서 자바스크립트로 HTML 결과를 렌더링하는 형식이다. 

관련 기술로 React, Vue.js등이 있다.

 

김영한 - 스프링 MVC 1 - 백엔드 웹 개발 핵심 기술 강의를 듣고 정리한 내용입니다.