웹 어플리케이션을 위한 JAVA 클래스 구조를 가진 자바 서버 프로그램
서블릿은 WAS(Web Application Server)의 서블릿 컨테이너 안에서 동작한다.
HTTP 기반으로 동작 .
정적 리소스(파일), HTML, CSS, JS, 이미지, 영상 리소스 제공.
ex) Apache, Nginx
HTTP 기반으로 동작.
웹서버 기능을 포함하고 있다.
프로그램 코드를 실행해서 애플리케이션 로직 수행.
동적 HTML, HTTP API (JSON), 서블릿, JSP, 스프링 MVC 제공.
ex) Tomcat, Jetty
실제로는 WS 및 WAS 둘다 정적 리소스(파일) 제공할 수 있고, 애플리케이션 로직을 실행하는 기능도 포함하는데 Client - Web Server - WAS - DB
로 이루어진 웹 시스템 구성 관점에서
WAS가 2개의 기능을 전부 처리할 경우 서버에 과부화가 올 수 있으며 WAS에 장애가 나면 오류 화면 조차 제공하지 못하게 되므로 역할을 분리하여
WS
는 주로 정적 리소스(파일) 제공하고, 애플리케이션 동적 처리가 필요할 경우 WAS에 요청을 위임한다.
WAS
는 주로 서블릿 컨테이너 기능(애플리케이션 로직 실행)을 제공한다.
서블릿을 지원하는 WAS를 사용하면 1~9번 동작 과정중 7번 비지니스 로직을 제외한 나머지 과정을 자동으로 해준다.
1. 서버 TCP/IP 대기 및 소켓연결
2. HTTP 요청 메세지 파싱해서 읽기
3. 전송방식 및 URL 인지
4. Content Type 확인
5. HTTP Body 메세지 내용 파싱
6. 저장 프로세스 실행
7. 비지니스 로직 실행 및 데이터베이스에 접근 (사용자가 직접 코드로)
8. HTTP 응답 메세지 생성 시작
9. TCP/IP에 응답전달 및 소켓종료
톰캣처럼 서블릿을 지원하는 WAS를 의미한다.
(정확하게는 WAS = Servlet + JSP + EJB컨테이너
)
쓰레드
: application 코드를 하나하나 순차적으로 실행하는것. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행된다. 쓰레드는 한번에 하나의 코드라인만 수행한다.
출처
- 인프런 김영한 MVC1 강의
- https://12bme.tistory.com/555