웹 (Web): HTTP 기반
웹은 HTTP(하이퍼텍스트 전송 프로토콜) 기반으로 작동합니다. HTTP 메시지는 웹 상에서 클라이언트와 서버 간에 데이터를 교환하는데 사용되는 형식화된 텍스트입니다. HTML, 문서파일, 이미지, 오디오, 영상, XML, JSON 등 다양한 데이터유형을 클라이언트와 서버 사이에서 안전하게 전송할 수 있습니다.
웹 서버 (Web Server)
- 웹 서버는 클라이언트(웹 브라우저)로부터 HTTP 요청을 받아들이고, 정적인 웹 리소스를 제공하는 역할을 합니다.
- 정적 리소스: HTML 파일, 이미지, CSS 파일 등
- 웹 서버 예: Apache, Nginx 등
웹 어플리케이션 서버 (Web Application Server):
- 웹 어플리케이션 서버는 웹 서버의 확장된 개념으로, 동적인 웹 어플리케이션을 처리하기 위한 기능을 제공합니다.
- 웹 어플리케이션 서버는 데이터베이스 연결, 비즈니스 로직 처리, 보안, 트랜잭션 관리 등의 기능을 지원하여 동적인 컨텐츠를 생성하고 제공합니다.
- WAS 예: Tomcat, Jetty 등
서버 구성
- WAS가 정적인 리소스와 동적인 처리를 전부 할 수 있지만 이렇게되면 WAS의 부담이 매우 커지게 되고 안정성도 줄어들게 됩니다.
- 때문에 주로 위와 같이 정적 리소스는 WS가 처리하고 어플리케이션 로직 같은 동적인 처리는 WAS에 넘기는 방식으로 서버를 구성하여 WAS의 부담을 줄여줍니다.
- 로직이 동작하는 WAS에 비해 정적 리소스만 제공하는 WS는 잘 죽지 않기 때문에, WAS에 오류가 발생하더라도 WS를 통해 지정한 화면을 보여줄 수가 있습니다.
- 정적인 리소스나 어플리케이션 리소스의 양에 따라 유연하게 대처(서버 증설/축)하여 효율적인 리소스 관리가 가능해집니다.
CGI 프로그램 (Common Gateway Interface):
CGI는 웹 서버와 외부 프로그램 간의 상호 작용을 가능하게 하는 프로토콜 또는 방법론입니다.
사용자가 직접 아이콘을 더블 클릭하거나 터미널을 통해 실행시키는 프로그램을 일반적으로 `어플리케이션`이라고 합니다. 반면에 사용자가 웹 서버를통해 간접적으로 실행시키는 프로그램을 `웹 어플리케이션`이라고 합니다.
웹 어플리케이션을 실행시키기 위해선 웹 브라우저가 웹 서버에게 데이터를 요청하고 받습니다. 이때 데이터를 주고받는 규칙을 `CGI`라고 합니다. 그리고 웹 서버에 의해 실행되며 CGI 규칙에 따라서 웹 서버와 데이터를 주고받도록 작성된 프로그램을 `CGI 프로그램`이라고 합니다.
Java로 만든 CGI 프로그램을 `Servlet`이라 부릅니다. 또한 Servlet이 다른 CGI 프로그램과 다른 점은, 웹 서버와 직접 데이터를 주고받지 않고 가운데 다른 프로그램을 둔다는 점인데 이것이 바로 `서블릿 컨테이너`입니다.
서블릿 컨테이너는 Servlet의 생명주기를 관리하는 프로그램입니다. 서블릿 컨테이너가 Servlet을 대신하여 CGI 규칙에 따라 웹 서버와 데이터를 주고받기 때문에 개발자는 CGI 규칙에 대해 몰라도되고 서블릿 컨테이너와 서블릿 사이의 규칙만 알면됩니다.
즉, 개발자는 Servlet 규칙에 따라 CGI 프로그램을 만들고 배포하면 됩니다.
Servlet과 서블릿 컨테이너에 대한 좀 자세한 설명은 다음 포스팅에서 하도록 하겠습니다.
'Web' 카테고리의 다른 글
Jar와 War의 차이(spring initializr packaging) (0) | 2023.09.01 |
---|---|
Servlet에 대해 알아보자!! 동작 원리 파악하기 (0) | 2023.08.31 |
Nginx: 웹 서버와 리버스 프록시의 개념과 용도, 사용법 설명 (0) | 2023.06.28 |
확장성을 위한 Tomcat 클러스터링 구성과 설정 방법 (0) | 2023.06.28 |
Tomcat 성능 향상: 스레드 풀과 커넥터 설정 사용하기 (0) | 2023.06.28 |