Web

[Web] 웹 서버와 WAS 차이점에 대해 아시나요? Apache vs Tomcat

Hannana. 2024. 5. 13. 00:18
728x90
반응형

익숙한 톰캣 고양이



■ 웹 애플리케이션 동작 원리를 살펴보자

 

웹 애플리케이션 = 우리가 인터넷을 통해 사용하는 모든 서비스로,

 

 

사용자의 브라우저와 서버 간의 상호작용을 통해 동작한다.

사용자가 요청을 보내고, 서버가 이를 처리하여 응답을 보내는 과정을 반복함으로써

우리가 웹을 통해 다양한 서비스를 이용할 수 있는 것이다.

 

이 때 브라우저와 서버 간 상호작용은 HTTP 프로토콜을 기반으로 한다.

클라이언트와 서버가 HTTP 프로토콜을 기반으로 통신하는 것이다.

 

 

 

HTTP 프로토콜

 

HTTP 프로토콜은 1)무연결성과 2)무상태성을 포함하여 각 요청과 응답이 독립적으로 처리되는 특징을 가지고 있다. 

이를 통해 클라이언트와 서버 간의 효율적인 통신이 가능하며, 요청과 응답에는 각각의 정보가 포함되어 있어 서로의 상태를 이해하고 처리할 수 있다. 일반적으로  HTTP 프로토콜은 80, 8080 포트를 사용한다.

 

 

<HTTP 프로토콜의 특징>

  • 1)무연결성 (Connectionless)
    : 각 요청에 대해 새로운 연결을 맺고, 응답 후에는 연결을 끊는다. (연결 유지X) 이로써 서버의 리소스를 효율적으로 관리하면서 클라이언트 요청을 처리한다.
  • 2)무상태성 (Statelessness)
    : 요청을 독립적인 트랜잭션으로 취급하여 이전 연결했던 작업을 사용하지 않음. 이전 요청에 대한 정보를 클라이언트의 브라우저에 세션id 형태로 부여하여 인식한다.
  • 요청 정보 (Request Information)
    : 서비스를 요청한 클라이언트의 정보를 담고 있다. 클라이언트가 서버에게 보내는 요청은 HTTP 메서드(GET, POST 등)와 요청 헤더로 구성된다. 이를 통해 서버는 클라이언트의 요청을 이해하고 처리한다.
  • 응답 정보 (Response Information)
    : 서버가 클라이언트에게 보내는 응답은 HTTP 상태 코드와 응답 헤더로 구성된다. 이를 통해 클라이언트는 서버의 응답을 이해하고 적절히 처리한다.


 


 



 

◆  A)웹 서버와 B)WAS의 차이점?

백엔드 서버는 크게 두 가지로 나눌 수 있다.

  1. Web Server: 정적 콘텐츠(HTML, CSS, JavaScript, 이미지 파일 등)를 제공하는 서버.
  2. Web Application Server (WAS): 동적 콘텐츠를 생성하고, 클라이언트 요청을 처리하며, 데이터베이스와 상호작용하는 서버.

WAS는 백엔드 서버의 역할을 수행하는 서버 중 하나로

서버 측 로직을 실행하고, 동적 콘텐츠를 생성하며 다양한 백엔드 기능을 제공한다.

 

각 개념을 살펴보자.


A) Web Server

  • 예시: Nginx, Apache HTTP Server
  • 역할:
    정적 파일을 제공하고, 클라이언트 요청을 다른 서버로 프록시할 수 있다.
    -웹 서버는 주로 정적인 콘텐츠(HTML 파일, 이미지, CSS 파일 등)를 제공한다.
    클라이언트의 요청을 받아들이고, 이를 처리하여 응답을 반환한다.
    - 주로 정적 파일을 제공하는 것에 초점을 맞추어 설계되었다.
    -대표적인 웹 서버로는 아파치 (Apache), Nginx, IIS (Internet Information Services) 등이 있다.
  • 주요 기능:
    • 정적 콘텐츠 제공
    • 요청 라우팅 및 프록시 설정

 

 

 

 

 

B) WAS (Web Application Server)

  • 예시: Node.js (Express.js), Django, Spring Boot, Ruby on Rails
  • 역할: 클라이언트 요청을 처리하고, 동적 콘텐츠를 생성하며, 데이터베이스와 상호작용한다.
    -동적인 웹 애플리케이션의 실행 환경을 제공한다.
    -웹 서버의 확장으로, 서버 측 로직을 실행하는 기능을 제공한다.
    -주로 자바 기반의 서버 사이드 애플리케이션을 실행하며,
    '웹 애플리케이션 컨테이너', '서블릿 컨테이너', 'JSP 컨테이너' 등으로 불리기도 한다.


    대표적인 WAS로는 톰캣(Tomcat), 웹로직(WebLogic), 제티(Jetty), JBoss 등이 있다.
    ( 톰캣은 Java 웹 애플리케이션을 실행할 수 있는 WAS로, 스프링 프레임워크를 포함한 다양한 Java 웹 애플리케이션을 실행할 수 있도록 지원하는 서블릿 컨테이너. )

    관련 포스팅 보러가기

  • 주요 기능:
    • 동적 콘텐츠 생성
    • 데이터베이스와 상호작용
    • 사용자 인증 및 세션 관리
    • 비즈니스 로직 처리

  • Node.js를 이용한 WAS 예시 ( 클라이언트 요청을 받아서 동적 응답을 반환)
const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.get('/api/data', (req, res) => {
  res.json({ message: 'Hello from API server' });
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

 

 
 
 

 

 

 

 

참고 )

WebBrowser에서 실행되는 기술 
JS
CSS
HTML

 

 

WebServer에서 실행되는 기술 
(모듈(엔진) 필요)
WebServer 종류(모듈(엔진) 포함) ⇒ WAS
ASP IIS
JSP/servlet Tomcat, 레진, 웹 로직,
웹 스피어, 제우스

 

 

 


 

 

쉽게 말해서 

 

-요청 처리 역할 : 웹 서버(http server) (=홀 서비스)
-내부적 처리 역할 : WAS(application server) (=주방장)

 

-웹 서버는 식당의 문 열듯 늘~ 가동되어 있어야 한다. 

-주방이 준비가 되면 조리(가공)해서 제공함

-가공이 필요 없는 정적인 요청은 웹 서버가, 가공이 필요한 동적 데이터는 WAS가!

 

 

 

웹의 요청방식은 무조건 HTTP 프로토콜!

요청과 응답의 형태!

 

 

 

 

 

 

 

 

 

반응형