반응형
1️⃣ 웹(Web)
'www.xxx.com' 우리가 사용하는 대부분의 웹 주소 형식이다. 그렇다면 www는 무엇일까? 이는 'World Wide Web'의 줄임말로, 인터넷에 연결된 사용자들이 서로 정보를 공유할 수 있는 인터넷 상의 공간을 말한다. W3라고도 하며, 이를 '웹'이라고 부른다.
- 클라이언트 (Client)
- 클라이언트는 사용자 또는 사용자가 사용하는 디바이스(컴퓨터, 스마트 폰 등)를 나타냄
- 클라이언트는 서비스나 리소스에 접근하고 요청을 보내는 주체
- 사용자는 웹 브라우저를 통해 웹페이지를 요청하는 등 동작이 클라이언트의 역할
- 서버 (Server)
- 서버는 말 그대로 클라이언트에게 서비스를 제공하거나 리소스를 제공하는 컴퓨터 또는 소프트웨어
- 클라이언트의 요청에 응답하고 필요한 데이터 또는 서비스를 제공한다.
- 서버는 클라이언트의 웹 브라우저 요청에 대한 웹페이지를 전송하는 등의 역할을 수행
웹은 이처럼 모두 HTTP를 기반으로 통신하게 된다. 현재는 HTTP 메시지에 거의 모든 형태의 데이터를 담아 전송할 수 있다. ex) HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML 등
또한 클라이언트와 서버간의 통신 뿐 아니라 서버와 서버 사이에 데이터를 주고 받을 때에도 대부분 HTTP를 사용하게 된다.
* HTTP
HTTP는 'Hyper Text Transfer Protocol'의 약자로, 인터넷에서 데이터를 주고받는 데에 사용되는 프로토콜이다. HTTP는 웹 브라우저와 웹 서버 간의 통신을 위한 표준 프로토콜로 널리 사용되고 있다.
2️⃣ 웹 서버 & 웹 애플리케이션 서버
1) 웹 서버 (Web Server)
- 웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, 정적인 웹 페이지, 이미지, CSS 파일 등을 제공하는 서버
- 주로 HTTP 프로토콜을 사용하여 클라이언트와 통신하며, 정적 콘텐츠를 제공하는 데에 특화 (HTTP 기반 동작)
- 일반적으로 동적인 컨텐츠 생성이나 비즈니스 로직 처리와 같은 기능은 수행하지 않음
- ex) Apache HTTP Server, Nginx, Microsoft IIS 등
2) 웹 애플리케이션 서버 (WAS, Web Application Server)
- 웹 애플리케이션 서버는 동적인 웹 애플리케이션을 실행하고 관리하는 서버
- 웹 서버 기능 + 정적 리소스 제공 기능
- 클라이언트의 요청에 따라 데이터베이스와 상호작용하거나 비즈니스 로직을 수행 -> 동적인 콘텐츠를 생성 및 제공
- 웹 서버와 다르게 동적인 콘텐츠를 생성하고 제공하는 기능 수행. 또한 프로그램 코드를 실행하여 애플리케이션 로직을 수행
- 동적 HTML, HTTP API (JSON)
- Servlet, JSP Spring MVC 등
- ex) Java EE Server, WSGI Server, Tomcat Jetty, Undertow 등
3) 웹 서버 vs 웹 애플리케이션 서버 비교
특징 | 웹 서버 | 웹 애플리케이션 서버 |
기능 | 정적인 콘텐츠 제공 | 동적인 콘텐츠 생성 및 제공 |
역할 | 클라이언트 요청을 받아들이고, 정적인 콘텐츠 제공 | 동적인 콘텐츠를 생성하고, 데이터베이스와 상호작용 |
특정 언어나 프레임워크 |
언어나 프레임워크에 종속되지 않음 | 특정 언어나 프레임워크에 종속될 수 있음 |
주요 사용 사례 | 정적인 웹 페이지 호스팅, 이미지 및 CSS 파일 제공 | 웹 애플리케이션 실행 및 관리 |
예시 | Apache HTTP Server, Nginx, Microsoft IIS | Java EE Server, Django, Flask 등의 WSGI Server, Tomcat Jetty, Undertow 등 |
3️⃣ 웹 시스템 구성
1) WAS + DB
- 가장 간단한 구조 (최소한의 구조), 간단한 서비스에서 사용 가능
- WAS는 정적 리소스와 애플리케이션 로직 모두 제공 가능
- WAS가 너무 많은 역할을 담당하므로 서버 과부하 우려가 있음
- 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있음
- WAS 장애시 정적 리소스인 오류 화면조차 보여줄 수 없음
2) WEB + WAS + DB
- 정적 리소스는 웹 서버가 처리하고 애플리케이션 로직같은 동적인 처리는 WAS에 요청을 위임
- Web Server : 정적 리소스 처리 담당
- WAS : 중요한 애플리케이션 로직 처리 담당
- 효율적인 리소스 관리가 가능
- 정적 리소스가 많이 사용되면 웹 서버 증설
- 애플리케이션 리소스가 많이 사용되면 WAS 증설
- 정적 리소스만 제공하는 웹 서버는 잘 죽지 않지만, 동적인 컨텐츠를 제공하는 WAS는 잘 죽음. 하지만 WAS나 DB에 장애가 발생하더라도 웹 서버는 정상 작동하기 때문에 오류 화면을 보여줄 수 있음
3) CDN
'CDN (Content Delivery Network)'은 사용자에게 빠르고 안정적인 콘텐츠 제공을 위한 분산 네트워크 시스템이다. CDN은 웹 서버와 클라이언트 간의 거리를 줄여서 콘텐츠 로딩 시간을 최소화하고, 대역폭을 효율적으로 사용하여 웹 사이트의 성능을 향상시킨다. 다음은 CDN의 주요 구성 요소이다.
- Edge Servers : 엣지 서버는 사용자에게 가까운 위치에 배치되어 있어 웹 콘텐츠를 더 빠르게 전송할 수 있음
- Caching : CDN은 웹 콘텐츠를 엣지 서버에 캐시하여 반복적인 요청에 대한 응답 시간을 줄일 수 있음. 정적 콘텐츠는 특히 잘 캐시되며, 동적 컨텐츠도 가능한 범위 내에서 캐시 가능
- Load Balancing : CND은 트래픽을 균형있게 분산하여 엣지 서버 간의 부하를 분산시킴. 이를 통해 네트워크 안정성과 성능을 유지
- Security Features : 대부분의 CDN은 DDoS 공격 및 기타 보안 관련 위협으로부터 웹 사이트를 보호하는 보안 기능을 제공
- Origin Server : 콘텐츠가 원래 호스팅되는 서버
- Content Distribution Network (CDN) : 엣지 서버 네티워크와 관리 시스템으로 구성된 CDN
- Edge Server : CDN의 엣지 서버는 전 세계적으로 분산되어 있으며, 원본 서버에서 콘텐츠를 가져와 캐시하고 사용자에게 전송
- End User : 웹 사이트나 애플리케이션의 최종 사용자
참고
반응형