■ 웹 애플리케이션 동작 원리를 살펴보자
웹 애플리케이션 = 우리가 인터넷을 통해 사용하는 모든 서비스로,
사용자의 브라우저와 서버 간의 상호작용을 통해 동작한다.
사용자가 요청을 보내고, 서버가 이를 처리하여 응답을 보내는 과정을 반복함으로써
우리가 웹을 통해 다양한 서비스를 이용할 수 있는 것이다.
이 때 브라우저와 서버 간 상호작용은 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의 차이점?
백엔드 서버는 크게 두 가지로 나눌 수 있다.
- Web Server: 정적 콘텐츠(HTML, CSS, JavaScript, 이미지 파일 등)를 제공하는 서버.
- 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 프로토콜!
요청과 응답의 형태!
'Web' 카테고리의 다른 글
[Web] 역대 클라이언트-서버 간 통신 방식 총 정리 (0) | 2024.08.11 |
---|---|
[Web] 웹 브라우저 내부 구조 한 눈에 보기!👓 / 브라우저 엔진, 렌더링 엔진? / 돔 트리 (0) | 2024.05.12 |