Web Server (Nginx)

0. 목표

  1. 여러대의 서버에서 서비스 하는 방법
  2. web server에서 HTML, CSS, JS 배포
  3. AWS ELB, Auto scaling group을 통한 다중 웹서버 환경 구축
  4. 운영 서버 아키텍처 알아보기 (서비리스, 마이크로, 모노)

1. 여러대의 서버에서 서비스 하는 방법

yeajunseok-web-deploy

  • index.HTML
  • page
    • album
      • index.HTML
    • signin
      • index.HTML
  • resources
    • CSS
    • js

2. Nginx HTTP 요청과 응답

webserver_2-1 webserver_2-2

  • 변경해야 할 점 webserver_2-3

  • Nginx 설정파일 수정

    ...
    server {
      server_name_;
      root  /usr/share/nginx/html/YJS-web-deploy;
      # nginx로 들어오는 http쵸정에 응답하기 위해 맨 처음으로 찾는 디렉토리이다.
    }
    
    location / {
      # location
      ## Nginx 에 요청된 URL별 특정 위체에 적용할 설정 그룹에 대한 정의 내용
      ## 여러 URL을 처리하기 위해 정규표현식을 사용하는 경우가 일반적임
    }
    
    location ~* / (album|signin){
      root /usr/share/nginx/html/YJS-web-deploy/page;
      # ~ / ~*
      ## 들어오는 URL을 정규표현식으로 처리를 위해 사용하는 옵션
      ## ~: 대소문자 구분 하여 적용
      ## ~*: 대소문자 구분 없이 적용
    
      # (album|signin)
      ## Nginx가 처리하는 URL이 album혹은 signin에 매칭되는 지 확인
      ## 해당 URL이 매칭되면 Nginx root 디렉토리를 해당 블럭에 적힌 디렉토리로 변경
    }
    ...
    
    • /etc/nginx에서 nginx.conf 수정 후 nginx reload
    • 해당 파일 수정을 통해 http://ec2-domin/album 으로 안전하게 들어올 수 있다.

3. Proxy_pass

  • 들어온 요청을 다른 웹 서버 또는 WAS로 전달 - reverse proxy
  • DB서버와 연결되 있는 WAS의 ip와 포트 번호를 감출 수 있음
  • Nginx 설정파일 수정

    ...
    location /api {
      Proxy_pass {ec2_private_dns/ip}:8080
    }
    ...
    

4. Load balancer

webserver_2-4
[동시 접속자 최과 된다면?]

webserver_2-5
[LB_서버 이중화]

webserver_2-6
[LB_트래픽 분산]

5. Scale-up VS Scale-out

Scale-up (사양 추가)

  • 물리머신(베어메탈), VM, Container 등 OS가 작동하는 물리적/논리적 머신의 CPU, RAM, Disk 등 서버의 자원을 올리다.
  • AI, Big Data등 고성능 머신이 필요한 경우

Scale-out (서버)

  • 데이터 처리가 많은 환경에서 하나의 서버가 처리하는 일을 같은 서버가 나눠서(분산)처리
  • 일반적인 웹 서비스에 적합

6. AWS ELB (Elastic Load balancer)

  • AWS에서 제공하는 L4스위치 기능을 제공하는 로드밸런싱 서비스
  • ELB가 받은 요청을 해당하는 EC2인스턴스, 서비스 그룹 등 다양하게 전달 할 수 있다.
  • 너무 많은 요청을 처리하고 있거나, 정상적으로 작동하지 않는 서버에는 요청을 보내지 않는다. (고가용성 보장)
  1. 클래식 로드벨런서
  2. 애플리케이션 로드벨런서

7. 서버 아키텍처 별 비교

  1. 웹 서비스 아키텍처
  2. 서버리스 아키텍처
    • 서버 로직을 별도로 써드파티 업체가 구현한 것을 쓰거나, 코드는 작성하지만 그 실행은 외부 업체를 통해 하는 것
    • 장점:
      • 서버가 정말 필요한 경우에만 사용하여 비용을 절감할 수 있다.
      • 코드 외적인 내용을 처리할 필요가 없어서 운영 비용을 절감할 수 있다.
      • 스케일을 키우는데 걱정할 필요가 없다.
      • 불필요한 작업(서버 구성, 서버 관리)을 줄일 수 있다)
    • 단점:
      • 제공되는 환경 내에서만 일을 처리할 수 있기 때문에 튜닝이나 외부 라이브러리 등 접근 측면에서 제한이 있을 수 있다.
  3. 모노리틱 아키텍처

태그:

카테고리:

업데이트:

댓글남기기