1 ) Web Server
- 웹 서버는 HTTP 기반으로 동작하며 정적 리소스(HTML, CSS, JS, 이미지 등)를 제공한다.
- 정적 리소스? - 리소스가 이미 완성된 채로 서버에 존재하여 원본 그대로 응답하는 데이터
- WAS(Web Application Server)
- HTTP 기반으로 동작하며 웹 서버의 기능을 포함한다. 추가적으로 코드를 실행해서 Application 로직을 수행하고 DB와 상호작용하여 동적 컨텐츠를 생성.
- 대표적인 WAS
- Tomcat - Spring boot 내장
- Jetty
- Undertow
- Web Server 와 WAS 차이점
- 실제로는 Web Server도 Application 로직 포함 가능.
- WAS는 Application 코드를 실행하는 것에 더욱 특화되어있다.
- java에서는 Servlet Container 기능을 제공하면 WAS 이다.
- Web System 구성
- WAS 만 사용하면 많은 문제점 발생.
- 실제 Web System 구성
- 정적 리소르는 Web Serve에서 처리, Application 로직이 필요한 경우 WAS에 전달
- 실제 Web System 구성의 장점
- 효율적으로 리소스 관리
- 오류 화면 제공
2 ) Servlet
- Servlet?
- HTTP 프로토콜 기반 요청(Request) 및 응답(Response)을 처리하는데 사용.
- JAVA에서 ServletDMS HttpServlet 클래스를 상속받아 구현되며, 웹 애플리케이션 개발의 핵심 기술 중 하나
- 역할
- 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송하는 역할
- 서버에서 처리해야 하는 작업
- 서버와 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 요청 정보를 꺼내서 사용.
- 생산된 Response 객체에 HTTP 응답 정보를 입력.
- Servlet Container
- 서블릿을 초기화, 생성, 관리, 호출, 종료하는 역할
- Thread
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것
- Java에서 Main method를 실행하면 main이라는 이름을 가진 Thread가 실행되며 하나의 Thread는 한번에 하나의 코드 라인만 수행한다.
- 동시 처리가 필요한 경우 추가적으로 생성해야한다,
- SSR (Server Side Rendering)
- 서버에서 동적으로 HTML을 만들어 클라이언트에게 제공하는 기술로 백엔드 개발자 영역에 속한다.
- 동작 흐름
- 서버에서 HTML 요청
- 서버에서 로직을 거친 후 DB 조회
- 조회 결과를 기반으로 HTML 동적 생성
- 생성된 HTML 응답
- CRS (Client Side Rendering)
- 웹 브라우저에서 자바스크립트를 사용해 동적으로 HTML을 생성해서 적용하는 기술
- 웹을 모바일 앱처럼 부분 변경할 수 있게 해준다.
- 동작 흐름
- HTML 요청, 비어있는 HTML을 응답 받는다. JS가 존재하는 주소 링크 응답
- 자바스크립트 를 요청
- HTTP API 요청을 하고 화면에 필요한 데이터를 JSON 형채로 응답받는다.
- 응답받은 JSON 데이터로 HTML을 동적으로 그린다.
'TIL > Spring' 카테고리의 다른 글
TIL 2024-11-05 (Spring 입문 - Spring Annotation, Mapping) (0) | 2024.11.05 |
---|---|
TIL 2024-11-04 (Spring 입문 - MVC) (1) | 2024.11.04 |
TIL 2024-10-31 (Spring 입문 - HTTP) (0) | 2024.10.31 |
TIL 2024-10-30 (Spring 입문 - 2) (1) | 2024.10.30 |
TIL 2024-10-29 (Spring 입문 - 1) (0) | 2024.10.29 |