1.2.3 서버란?
서버는 프로그램이다. 이 프로그램은 지정된 포트, 8080포트에 소켓을 열어 클라이언트가 연결할 때까지 무한 대기하며 기다린다. 그러다가 클라이언트가 연결하면 해당 클라이언트 소켓에서 요청을 받아와 수행하고 응답을 작성해 전달한다.
서버에서 클라이언트의 요청을 읽어올 때 또는 응답을 작성할 때 파일을 주고 받으면 FTP File Transfer Protocol 서버가 되고, 하이퍼텍스트 트랜스퍼 프로토콜을 사용한다면 HTTP 서버가 되는 것이다.
1.2.4 정적 웹 서버
Static Web Server란 HTTP 서버 중에서도 리소스 파일을 리턴하는 서버를 의미한다.
서버 호스트가 8080에서 실행하고 있는 로컬 호스트라고 가정하면, localhost:8080/file.html HTTP 요청을 서버로 보내면 정적 웹 서버인 서버는 지정된 디렉토리 경로에서 file.html를 찾아 그 내용을 HTTP 응답 바디에 넣어 전송한다.
이때, 서버는 해당 html 파일에 아무 작업도 하지 않고 파일을 있는 그대로 리턴한다. 그래서 정적 Static Web Server이다.이런 정적 웹 서버의 예로 아파치, Nginx 등이 있다. 아파치, Nginx를 설치하고 지정된 경로에 원하는 리소스 파일을 저장하면 자동으로 해당 리소스는 웹 서버를 통해 접근할 수 있다.
1.2.5 동적 웹 서버
동적 웹 서버는 파일을 있는 그대로 리턴하지 않는다. 동적 웹 서버는 요청을 처리한 후 처리한 결과에 따라 응답 바디를 재구성하거나 HTML 템플릿 파일에 결과를 대체해 보낸다.
비즈니스 요구사항에 따라 이 로직은 변한다. 그러므로 개발자들은 아파치나 Nginx 같은 서버 프로그램을 사용하지 못한다. 자바 프로그램 중 동적 웹 서버 구현을 도와주는: 프로그램이 있다. 바로 서블릿 엔진이다 아파치 톰캣이 서블릿 엔진에 해당한다.
1.2.6 자바 서블릿 컨테이너/엔진
서블릿 컨테이너 또는 서블릿 엔진은 서버 프로그램이다. 개발자들은 서블릿 엔진을 설치한 후 서블릿 엔진에게 자기가 개발한 비즈니스 로직, 즉 클래스 파일과 해당 클래스 파일을 어느 요청에서 실행해야 하는지 알려줘야 한다. 서블릿 엔진이 이해할 수 있는 형태로 클래스 파일을 작성해야 한다. 구체적으로 서블릿 엔진이 이해할 수 있는 클래스란 javax.servlet.http.HttpServlet 의 상속받는 서브 클래스를 의미한다.
⭐ 스프링 부트도 내부적으로는 서블릿 엔진의 사용을 위해 서블릿을 상속 및 구현한다.
'React.js, 스프링 부트, AWS로 배우는 웹 개발 101' 카테고리의 다른 글
[TIL] 25/01/28, Service Layer : Business Logic (0) | 2025.01.29 |
---|---|
[TIL] 25/01/27, REST API (0) | 2025.01.28 |
[TIL] 25/01/26, 백엔드 서비스 아키텍처 (0) | 2025.01.26 |
[TIL] 25/01/25, build.gradle 속성 (0) | 2025.01.25 |
[TIL] 25/01/20, Todo 웹 애플리케이션 기능 (0) | 2025.01.20 |