반응형
목차
Web Application
1. Web Server
- 웹 서버는 HTTP 기반으로 동작하며 정적 리소스를 제공.
💡정적 리소스
- 리소스가 이미 완성된 채로 서버에 존재하여 원본 그대로 응답하는 데이터를 의미.

- 대표적인 Web Server
- NGINX
- Apache
2. WAS(Web Application Server)
- HTTP 기반으로 동작하며 웹 서버의 기능을 포함함.
- 추가적으로 코드를 실행해서 Application 로직을 수행하고 DB와 상호작용하여 동적 컨텐츠 생성.

- 대표적인 Web Application Server
- Tomcat - Spring Boot에 내장되어 있음.
- Jetty
- Undertow
- Web Server와 WAS(Web Application Server)의 차이점
- 실제로는 Web Server도 Application 로직 포함 가능.
- WAS는 Application 코드를 실행하는 것에 더욱 특화되어 있음.
- Java에서는 Servlet container 기능을 제공하면 WAS.
3. Web System 구성
- WAS 만 사용하는 경우
- WAS가 너무 많은 역할 담당.
- 서버 과부하 발생 가능성이 높아짐.
- 실행에 가장 중요한 Application 로직이 정적 리소스로 인해 수행되지 않을 수 있음.
- WAS에 장애가 생기면 아무런 화면도 보여주지 못함.
- 오류 페이지를 클라이언트에게 응답할 수 없음.
- WAS가 너무 많은 역할 담당.
- 실제 웹 시스템 구성
- 정적 리소스는 Web Server에서 처리함.
- Web Server는 Application 로직이 필요한 요청만을 WAS에 전달.
- 실제 웹 시스템 구성의 장점
- 효율적으로 리소스 관리 가능.
- 정적 자원이 많이 사용된다면 Web Server를 Scale Out.
- Application 관련 자원이 많이 사용된다면 WAS를 Scale Out 함.
- 오류 화면 제공할 수 있음.
- Web Server는 오류가 발생할 확률이 아주 낮음.
- WAS는 오류가 발생할 확률이 아주 높고, 장애가 자주 발생함.
- WAS는 DB와 상호작용하기 때문에 DB에 문제가 생겨도 문제가 발생함.
- 효율적으로 리소스 관리 가능.
4. Servlet
- HTTP 프로토콜 기반 요청(Request) 및 응답(Response)을 처리하는데 사용.
- JAVA에서 Servlet은 HttpServlet 클래스를 상속받아 구현되며, 웹 애플리케이션 개발의 핵심 기술 중 하나.
- Servlet의 역할
- 서버에서 처리해야하는 작업
- 서버와 TCP/IP 연결
- HTTP Request Message 필요한 형태로 변환하여 읽기
- HTTP Method 및 URL 분석
- HTTP Header 분석
- HTTP Message Body 읽기 및 변환
- 분석한 결과를 통해 프로세스 실행
- 비지니스 로직 실행
- HTTP Response Message 생성
- HTTP Start Line 생성
- Header 생성
- HTTP Message Body에 응답 데이터를 요청한 형식에 맞춰 응답
- 처리가 불가하다면 예외처리
- 응답 전달
- 연결 종료
- 서버에서 처리해야하는 작업
- Servlet 동작 순서
- WAS는 HTTP 요청 메세지를 기반으로 새로운 Request, Response 객체 생성
- WAS는 만들어진 Request, Response 객체를 서블릿 컨테이너에 넘겨주며 ExampleServlet 객체 호출
- ExampleServlet에서 비지니스 로직 처리
- 응답에 필요한 정보를 개발자가 입력
- WAS는 Response 객체 정보(개발자가 입력한 정보)로 HTTP 응답 메세지 생성.
- 개발자가 하는 일
- Request 객체에 담겨져있는 HTTP 요청 정보를 꺼내서 사용.
- 요청 정보(URL, Method, Message Body)를 통해 필요한 기능(비지니스 로직)을 수행.
- 생선된 Response 객체에 HTTP 응답 정보를 입력.
- Request 객체에 담겨져있는 HTTP 요청 정보를 꺼내서 사용.
5. Servlet Container
- Servlet을 지원하는 WAS 내부에는 서블릿 컨테이너가 있음.
- 서블릿을 초기화, 생성, 관리, 호출, 종료하는 역할 수행.
- Servlet의 생명주기
- Servlet은 서블릿 컨테이너가 생성 및 관리.
- WAS(서블릿 컨테이너 포함)가 종료될 때 Servlet도 함께 종료됨.
- Servlet 객체 생성시점
- 개발자가 직접 인스턴스화 하여 사용하는 것이 아닌, 코드만 작성하면 서블릿 컨테이너가 생성함.
- Servlet Container가 하는 일
- 서블릿을 초기화, 생성, 관리, 호출, 종료하는 역할 수행.
- Servlet 객체를 싱글톤으로 관리.
- 동시 요청에 대한 처리를 위해 Multi Thread 지원.
- 서블릿을 초기화, 생성, 관리, 호출, 종료하는 역할 수행.
💡싱글톤이란?
- 객체를 하나만 생성하여 생성된 인스턴스를 공유하여 사용하는 것.
- 특정 클래스의 인스턴스가 여러 개 생성되지 않도록 하여 자원의 낭비를 방지.
- 인스턴스를 공유함으로써 일관되게 유지하기 위함.
- 공유 변수 사용을 주의해야함!
반응형
'스파르타 내일배움캠프 > TIL(Today I learned)' 카테고리의 다른 글
25.04.01 TIL - 프레임워크, 라이브러리, Annotation, Lombok (2) | 2025.04.01 |
---|---|
25.03.31 TIL - Web Application(2) (2) | 2025.03.31 |
25.03.27 TIL - HTTP(3) (2) | 2025.03.27 |
일정 관리 앱 프로젝트 회고 (2) | 2025.03.26 |
25.03.26 TIL - 일정 관리 앱 트러블 슈팅 (1) | 2025.03.26 |