스프링 MVC 1편 - 웹애플리케이션 이해

1 minute read

  • 웹서버(WS)

정적인 리소스 제공(html, css, …)

ex) nginx, apache

  • 웹 어플리케이션 서버(WAS)

동적인 리소스 제공. 로직 → DB

ex) tomcat

→ WAS가 WS의 기능까지 포함했음. 하지만 WAS가 모든것을 해결하면

낭비가 너무 크고 장애 발생시 처리가 어려움

그래서 WS → WAS → DB 로 처리

  • 서버 처리 순서

TCP/IP 연결 대기, 소켓 연결 → HTTP 요청 메시지 파싱 → 피싱 → 저장 프로세스 실행 → ( ! 개발자가 구현하는 부분) 비즈니스 로직 실행 → HTTP 응답 메시지 생성 → TCP/IP 응답 전달, 소켓 종료

→ 비즈니스 로직 외 처리를 서블릿이 대신 해준다!

서블릿에서 request, response 를 넘기면, 서블릿 컨테이너에서 request를 받아 response에 응답해서 넘겨주기만 하면 됨. 그럼 response 객체 정보로 HTTP 응답을 생성한다.

  • 서블릿 컨테이너

— 서블릿을 지원하는 WAS

— 서블릿 객체 생명주기 관리

— 싱글톤으로 관리(서블릿 컨테이너 종료시 함께 종료됨)

— JSP도 서블릿으로 변환됨

— (짱 중요) 동시 요청을 위한 멀티쓰레드 처리를 지원해줌 » 이어서…

  • 멀티 쓰레드 —> WAS가 처리

프로세스는 프로그램 실행 쓰레드는 애플리케이션의 코드를 내부적으로 하나하나 순차적으로 실행

쓰레드는 한번에 하나의 코드라인만 수행. 동시 수행이 필요할때 추가로 생성

쓰레드는 컨텍스트 스위칭 비용 발생

무한정으로 만들면 서버 죽음 → 쓰레드 풀에 쓰레드 생성해놓고 사용 반납 반복

쓰레드 풀에 있는 것 다 쓰면 쓰레드 대기하거나 거절 O

max thread를 서버 리소스에 따라 적정값을 설정하자 (테스트 툴 : 아파치 ab, 제이미터, nGrinder)

  • HTTP API

웹브라우저 → WAS → DB → DATA(보통 JSON) → 웹브라우저

다양한 시스템에서 호출(웹, 앱, 서버…) to 서버

  • 서버사이드 렌더링(SSR) : 서버에서 HTML최종결과를 만들어 전달

웹 → 서버 → DB → 동적으로 HTML 생성 → 웹

JSP, 타임리프, …

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

HTML결과를 자바스크립트를 사용해서 동적으로 생성해 적용

React, Vue.js, …

Categories:

Updated:

Leave a comment