Network - Web Server

iseon_u·2022년 5월 21일
0

Network

목록 보기
1/31
post-thumbnail

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

  • 인터넷과 서버 사이에 위치한 프록시 서버
  • 서버 대신 클라이언트에 응답을 보내주는 역할
  • 캐싱
    • Forward 프록시의 캐싱과 동일
  • 보안
    • 서버 정보를 클라이언트로부터 숨긴다.
    • 클라이언트는 Reverse 프록시를 실제 서버라고 생각하고 요청
    • 실제 서버의 IP 가 노출 되지 않는다.
  • Load Balancing 로드 밸런싱 (선택적)
    • 부하 분산 - 해야할 작업을 나누어 서버의 부하를 분산

Load Balancer 로드 밸런서

  • 여러 대의 서버가 분산 처리할 수 있도록 요청을 나누어주는 서비스
  • L2
    • MAC 주소 기반 로드 밸런싱
  • L3
    • IP 주소 기반 로드 밸런싱
  • L4
    • Transport Layer (IP & Port) Level 전송 계층 에서 로드 밸런싱 (TCP/UDP)
    • 요청을 담당하는 여러 대의 서버로 (서버 A, 서버 B) 로드 밸런싱
  • L7
    • Application Layer (User Request) Level 응용 계층 에서 로드 밸런싱 (HTTPS/HTTP/FTP)
    • /category 와 /search 를 요청 담당 서버들로 로드 밸런싱

SSL

  • 인증서
  • HTTPS 인증서

웹페이지 접근 인증

  • WAS에서 하는 로그인 검증을 Nginx 에서 대신 해준다.
profile
🧑🏻‍💻 Hello World!

0개의 댓글