Web Server
Server
- 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
Web Server
- 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터
- 클라이언트로부터 HTTP 요청을 받아 정적 컨텐츠를 제공하는 프로그램
- 정적 컨텐츠
- 어느 사용자 요청이든 항상 동일한 컨텐츠
- 요청 인자 값에 상관 없이 달라지지 않는 컨텐츠
- 이미지, HTML, CSS, JS, 파일
Web Server 의 기능
- 클라이언트로부터 HTTP 요청을 받을 수 있다.
- 정적 컨텐츠 요청 시 정적 컨텐츠를 제공할 수 있다.
- 동적 컨텐츠 요청 시 Web Application Server (WAS) 로 전달
- WAS 가 처리한 결과를 클라이언트에 전달
WAS (Web Application Server)
- 클라이언트 요청에 대해 동적인 처리가 이뤄진 후 응답
- 웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에 전달
- 프로그램 실행 환경과 데이터 베이스 접속 기능 제공
- 비즈니스 로직 수행 가능
- 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램
- 동적 컨텐츠
- 상황에 따라 변하는 정보
- 요청 인자에 따라 바뀔 수 있는 컨텐츠
WAS 의 기능
- 클라이언트로부터 HTTP 요청을 받을 수 있다. (대부분의 WAS 는 Web Server 내장)
- 요청에 맞는 정적 컨텐츠 제공 가능
- DB 조회나 다양한 로직 처리를 통해 동적 컨텐츠 제공 가능
Web Server 를 별도로 운영하는 이유?
- WAS 의 부담을 줄어주기 위해
- 책임 분할을 통한 서버 부하 방지
- 정적 컨텐츠는 Web Server 담당
- 동적 컨텐츠는 WAS 담당
- 여러 대의 WAS 로드 밸런싱
- 여러 대의 WAS Health Check
- 서버의 주기적으로 HTTP 요청을 보내 서버의 상태를 확인
- 보안
- 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있다.
Scale-up
- 서버 액세스가 증가 할 때 서버 하드웨어 성능을 높여 해결하는 방법
Scale-out
- 서버 액세스가 증가 할 때 복수의 서버를 사용하여 분담 처리 하는 방법
Nginx
- 빠른 웹서버
- Reverse Proxy 로 사용가능
- SSL 지원
- 웹페이지 접근 인증
- 압축
- 비동기 처리
Proxy Pattern 프록시 패턴
- 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴
Proxy Server 프록시 서버
- 대신 처리하는 서버
- 클라이언트와 서버간의 중계 서버
- 통신을 대리 수행하는 서버
- 캐시, 보안, 트래픽 분산 등 여러 장점이 있다.
Forward Proxy
- 클라이언트와 인터넷 사이에 위치한 프록시 서버
- 클라이언트 대신 서버에 요청을 보내주는 역할
- 캐싱
- 클라이언트가 요청한 내용을 캐싱
- 뒷단을 통하지 않고 응답 가능
- 전송 시간 절약
- 불필요한 외부 전송 제거
- 외부 요청 감소 → 네트워크 병목 현상 방지 (트래픽 감소)
- 익명성
- 클라이언트가 보낸 요청을 감춘다.
- 서버가 응답 받은 요청을 누가 보냈는지 알지 못하게 한다.
- 서버가 받은 요청 IP = 프록시 IP
Reverse Proxy
- 인터넷과 서버 사이에 위치한 프록시 서버
- 서버 대신 클라이언트에 응답을 보내주는 역할
- 캐싱
- 보안
- 서버 정보를 클라이언트로부터 숨긴다.
- 클라이언트는 Reverse 프록시를 실제 서버라고 생각하고 요청
- 실제 서버의 IP 가 노출 되지 않는다.
- Load Balancing 로드 밸런싱 (선택적)
- 부하 분산 - 해야할 작업을 나누어 서버의 부하를 분산
Load Balancer 로드 밸런서
- 여러 대의 서버가 분산 처리할 수 있도록 요청을 나누어주는 서비스
- L2
- L3
- L4
- Transport Layer (IP & Port) Level 전송 계층 에서 로드 밸런싱 (TCP/UDP)
- 요청을 담당하는 여러 대의 서버로 (서버 A, 서버 B) 로드 밸런싱
- L7
- Application Layer (User Request) Level 응용 계층 에서 로드 밸런싱 (HTTPS/HTTP/FTP)
- /category 와 /search 를 요청 담당 서버들로 로드 밸런싱
SSL
웹페이지 접근 인증
- WAS에서 하는 로그인 검증을 Nginx 에서 대신 해준다.