🖥️ 정적 페이지 Static Pages
- 데이터베이스에서 정보를 가져오거나 등 별도의 서버에서의 처리가 없어도, 사용자들에게 보여줄 수 있는 페이지.
- 어떠한 사용자가 오던간에 동일한 페이지를 보여준다.
ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들
🖥️ 동적 페이지 Dynamic Pages
- 서버의 데이터베이스에서 정보를 가져와서 처리하는 것처럼, 어떠한 요청에 의하여 서버가 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지.
- 사용자들마다 다른 페이지가 보여질 수 있다.

🖥️ 웹 서버 Web Server
- 클라이언트가 요청한 정적인 콘텐츠를 HTTP 프로토콜을 통해 제공해주는 서버
- 정적페이지를 보내주고, 정적 콘텐츠 (HTML, CSS JS) 제공이 가장 큰 역할이다 (WAS를 거치지 않고 바로 자원 제공)
- 동적인 요청이 클라이언트로부터 들어왔을 때, 해당 요청을 웹 서버에서 처리할 수 없기 때문에 컨테이너로 보내주는 역할도 한다
- 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답)한다
ex) Apache HTTP Server, Nginx, IIS(winodw 전용 웹서버)
🖥️ 어플리케이션 서버 Application Server
- 웹 서버 하나에서 비즈니스 로직을 처리하는데는 부하가 커서 별도의 서버가 필요하게 되었고 이를 어플리케이션 서버라 부르게 되었다.
- 어플리케이션 서버는 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 비즈니스 로직을 수행해 주는 미들웨어로 볼 수 있다.
- 웹 애플리케이션 서버는 동적데이터를 처리하며, 주로 데이터베이스 서버와 같이 수행이 된다.
- 애플리케이션 서버가 HTTP 서버를 통해 브라우저에게 요청된 데이터를 전송하기 전에, 애플리케이션 서버가 업데이트하기 때문에 동적이라고 한다.
- 어플리케이션 서버는 Java, JavaScript, PHP, Python, Ruby, nodejs 등의 다양한 언어로 애플리케이션 서버를 만들 수 있다.
자바로 J2EE 스펙을 구현하여 서블릿으로 작성된 애플리케이션을 실행할 수 있으면 WAS이다.
즉 WAS는 어플리케이션 서버의 한 종류라고 볼 수 있다
한국에서는 일반적으로 "WAS" 또는 "WAS S/W"로 통칭하고 있으며
공공기관에서는 "웹 응용 서버"로 사용되고,
영어권에서는 "Application Server" (약자 AS)로 불린다.
🖥️ WAS (Web Application Server)
- 동적인 콘텐츠를 생성하고 제공하는 서버
- 비즈니스 로직을 처리하며 데이터베이스와의 연동을 통해 사용자 요청에 맞는 데이터를 제공한다
- WAS는 웹서버와 함께 동작하며, 웹 서버로부터 받은 동적 콘텐츠 생성을 위한 요청을 처리한다
- ex) Apache Tomcat, JBoss, Jeus
🖥️ CGI (Common Gateway Interface)
- 웹 서버와 외부 프로그램 간의 인터페이스를 정의하는 표준
- 웹 서버가 동적인 콘텐츠를 제공하기 위해 외부 프로그램을 호출하고 그 결과를 클라이언트에 전달하는 방식을 의미 (요청을 전달하기 위한 중간 매개체)
- 요청마다 새로운 프로세스를 생성하므로 메모리를 많이 사용하고 DB 커넥션도 새로 연결하기에 느리다. 이를 위해 Java에서는 CGI 보다 조금 더 발전한 기술인 서블릿을 사용한다
- PHP, Python, Java 등 다양한 언어로 CGI를 구현할 수 있다
🖥️ 서블릿 Servlet
- Java를 사용하여 동적인 웹 페이지를 생성하는 서버측 프로그램 혹은 그 사양을 말한다
- 클라이언트의 요청에 따라 동적으로 콘텐츠를 생성하며, 주로 HTML을 생성하여 웹 브라우저에 전달한다
- 웹 서버의 성능을 향상하기 위해 사용하는 Java 클래스의 일종이다 (Java를 사용하여 웹을 만들기 위한 기술이다)
- 웹 서버와 직접 데이터를 주고 받지 않으며, 전문 프로그램에 의해 관리된다
- 서블릿의 생성과 실행, 소멸 등 생명주기를 관리하는 프로그램을 서블릿 컨테이너 라고 한다
ex) Tomcat

- JSP (Java Server Pages) : HTML이나 Java코드를 써서 사용자에게 정보를 보여준다. JSP가 처음 실행될 때 Servlet 엔진이 이것을 Servlet으로 컴파일시켜서 내부적으로는 Servlet으로 동작한다.
🖥️ 웹 컨테이너 Web Container
- 서블릿과 JSP같은 Java 기반 웹 컴포넌트를 실행하고 관리하는 환경을 제공한다.
- 동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈
- 서블릿의 생명주기를 관리하고, 멀티스레딩을 지원하며, 보안 관리 등의 기능을 수행한다
- ex) Apache Tomcat

🖥️ 웹 컨테이너의 작동
- 클라이언트는 웹서버로 요청을 보낸다
- 서블릿을 포함하는 WAS는 컨테이너로 요청을 보낸다
- 컨테이너가 요청을 각 서블릿에게 전달한다
- 서블릿 메서드가 로드된다
- 서블릿은 컨테이너에 관련 응답을 넘겨준다
- 컨테이너는 이를 서버에 전달한다. 서버는 응답을 클라이언트에게 전달한다

✏️ 기능을 분리하여 서버 부하를 방지한다
웹 어플리케이션 서버에서는 DB조회나 다양한 로직을 수행하게 된다.
만약 동적 콘텐츠까지 웹 애플리케이션 서버가 제공하게 된다면 자원이 분할되어 동적 콘텐츠에 사용될 자원의 부하가 증가하게 된다.
속도가 느려지게 되므로 정적 콘텐츠는 웹 서버에서 클라이언트에게 빠르게 제공하는 것이 좋다.
✏️ 물리적으로 분리하여 보안을 강화한다
웹 애플리케이션 서버 앞단에 웹 서버가 존재하게 되는데 웹 서버에서 보안 처리를 하도록 하여 보안을 강화할 수 있다.
✏️ 여러 대의 웹 어플리케이션 서버 연결이 가능하다
하나의 웹 서버를 두고 여러 개의 웹 애플리케이션 서버를 연결하여 사용할 수 있다.
이를 통해 Python Application, Java Application 등 언어에 국한되지 않은 웹 애플리케이션 서버 사용이 가능하다.
또한 트래픽이 많아져 서버를 늘리거나 트래픽이 적어져 서버를 줄이는 경우에도 쉽게 처리할 수 있으며, 로드 밸런싱을 통해 무중단 배포와 유연한 장애 처리가 가능하다.
refer to
https://s-y-130.tistory.com/290
https://woo-chang.tistory.com/70
'IT > IT' 카테고리의 다른 글
| IntelliJ 인텔리제이 단축키 (0) | 2025.05.27 |
|---|---|
| IntelliJ 인텔리제이 폰트 설정 (0) | 2025.05.27 |
| npm과 yarn (0) | 2025.02.12 |
| 사용 중인 포트 강제 중단 (0) | 2025.01.23 |
| Web3 (0) | 2025.01.17 |