1. 웹 애플리케이션 이해
웹 서버, 웹 애플리케이션 서버
-
HTTP 메시지에 거의 모든 것을 전송
-
Web Server
- HTTP 기반 동작
- 정적 리소스 제공
- 정적 HTML, CSS, JS, 이미지, 영상
-
웹 애플리케이션 서버 (WAS)
- HTTP 기반 동작
- 웹 서버 기능 포함
- 프로그램 코드를 실행해서 애플리케이션 로직 수행
- 동적 HTML, HTTP API (JSON)
- 서블릿, JSP, 스프링 MVC
-
웹 시스템 구성
- 정적 리소스는 웹 서버가 처리
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임
- 웹 서버는 잘 안 죽지만, WAS 서버는 잘 죽음
-
서블릿
- 개발자가 HTTP 스펙을 편리하게 사용하게끔 함
- 서블릿 컨테이너
- 톰캣 등 서블릿을 지원하는 WAS
- 서블릿 객체는 싱글톤으로 관리 → 공유 변수 사용 주의
-
동시 요청 - 멀티 쓰레드
- 쓰레드
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것
- 쓰레드가 없으면 자바 애플리케이션 실행 불가
- 요청 마다 쓰레드 생성
- 장점 : 동시 요청 처리
- 단점 : 쓰레드 생성 비용이 비싸고, 컨텍스트 스위칭 비용 발생
-
쓰레드 풀
- 필요한 쓰레드를 쓰레드 풀에 보관, 관리
- 쓰레드 풀에 생성 가능한 쓰레드의 최대치 관리 ( 톰캣은 최대 200개 )
- 적정 숫자는 상황에 따라 모두 다름