Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 주식
- 주린이
- javascript
- mco
- 그리디 알고리즘
- 무디스
- 잉여현금흐름
- 오버라이딩
- 현금흐름표
- FCF
- 인플레이션
- XLF
- 미국주식
- 알고리즘
- 자바
- Java
- S&P500
- 객체지향
- 제태크
- 금리인상
- 다형성
- etf
- 백준
- 기업분석
- StringBuffer
- 접근제어자
- 배당성장
- 금리인하
- object
Archives
- Today
- Total
오늘의하루
Web Server, WAS, Servlet 정리 본문
웹서버 (Web Server)
- HTTP 기반으로 동작
- "정적 리소스 제공", 기타 부가기능
- 정적(파일) HTML, CSS, JavaScript, 이미지, 영상
- 예) NGINX, APACHE
웹 애플리케이션 서버 (WAS - Web Application Server)
- HTTP 기반으로 동작
- 웹 서버 기능 포함 + 정적 리소스 제공 가능
- 프로그램 코드를 실행해서 "애플리케이션 로직 수행"
- 동적 HTML, HTTP API (JSON)
- 서블릿, JSP, 스프링 MVC
- 예) 톰캣, Jetty, Undertow
기본 웹 시스템 구성 - WAS + DB
단점
- WAS가 너무 많은 역할을 담당하기 때문에 서버 과부하 우려된다.
- WAS는 쉽게 죽는다.
- 중요한 애플리케이션 로직이 정적 리소스때문에 수행이 어려울 수 있다.
- WAS 장애시 오류 화면조차 노출이 불가능하다.
단점을 보완한 웹 시스템 구성 - WEB + WAS + DB
- 정적 리소스는 웹 서버가 처리한다.
- 웹 서버는 잘 죽지 않는다.
- WAS, DB 장애시 웹 서버가 오류 화면을 제공할 수 있다.
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임한다.
- 그러므로 WAS는 중요한 애플리케이션 로직 처리만 담당하면 되기 때문에 가벼워 진다.
- 효율적인 리소스 관리가 가능하다.
서블릿
- HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
- HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
- 개발자는 HTTP 스펙을 매우 편리하게 사용할 수 있게된다.
서블릿의 HTTP 요청,응답 흐름
- Client의 요청이 오면 WAS는 Request, Reponse 객체를 새로 만들어서 요청에 맞는 서블릿 객체를 호출한다.
- 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용할 수 있다.
- 서블릿에서 처리후 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력할 수 있다.
- WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다.
서블릿 컨테이너
톰캣 처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다.
- 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다.
- 서블릿 객체는 싱글톤으로 관리한다.
- JSP도 서블릿으로 변환 되어서 사용한다.
- 동시 요청을 위한 멀티 쓰레드 처리를 지원한다.
쓰레드란?
애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 쓰레드라고 한다.
- 쓰레드가 없다면 자바 애플리케이션 실행이 불가능하다.
- 쓰레드는 한번에 하나의 코드 라인만 수행한다.
- 동시 처리가 필요하면 쓰레드를 추가로 생성해야한다.
쓰레드 풀
필요한 쓰레드를 쓰레드 풀에 보관하여 관리한다.
- 쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관리한다.
- 톰캣의 경우 최대 200개가 기본 설정이며 변경가능하다.
- 최대 쓰레드 수를 너무 낮게하면 서버는 여유롭지만 클라이언트는 금방 응답 지연된다.
- 최대 쓰레드 수를 너무 높게하면 메모리 리소스 임계점 초과로 서버가 다운될 수 있다.
WAS의 멀티 쓰레드 지원
- 멀티 쓰레드에 대한 부분은 WAS가 처리한다.
- 개발자가 멀티 쓰레드 관련 코드를 신경쓰지 않아도 된다.
- 멀티 쓰레드 환경이므로 싱글톤 객체(서블릿, 빈)는 주의해서 사용해야한다.
- 공유 변수 사용을 조심해야한다.
기타 용어 설명
SSR : 서버 사이드 렌더링
HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달하는 방법
- 주로 정적인 화면에 사용한다.
- 자바스크립트를 사용하면 화면 일부를 동적으로 변경하긴 할 수 있다.
- 관련 기술 : JSP, 타임리프 -> 백엔드 개발자
CSR : 클라이언트 사이드 렌더링
HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용한다.
- 주로 동적인 화면에 사용한다.
- 웹 환경을 마치 앱처럼 필요한 부분부분 변경할 수 있다.
- 관련 기술 : React, Vue.js -> 프런트엔드 개발자
'Spring' 카테고리의 다른 글
[Spring 검증] @ModelAttribute와 @RequestBody의 차이 (0) | 2023.08.28 |
---|---|
Spring HandlerMapping & Adapter, ViewResolver (0) | 2023.08.23 |
Spring Web관련 Scope (0) | 2023.08.22 |
Spring Bean Scope (0) | 2023.08.21 |
Spring Bean 생명 주기 콜백 (0) | 2023.08.21 |
Comments