Web Server (Nginx)
0. 목표
- 여러대의 서버에서 서비스 하는 방법
- web server에서 HTML, CSS, JS 배포
- AWS ELB, Auto scaling group을 통한 다중 웹서버 환경 구축
- 운영 서버 아키텍처 알아보기 (서비리스, 마이크로, 모노)
1. 여러대의 서버에서 서비스 하는 방법
yeajunseok-web-deploy
- index.HTML
- page
- album
- index.HTML
- signin
- index.HTML
- album
- resources
- CSS
- js
2. Nginx HTTP 요청과 응답
-
변경해야 할 점
-
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
[동시 접속자 최과 된다면?]
[LB_서버 이중화]
[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인스턴스, 서비스 그룹 등 다양하게 전달 할 수 있다.
- 너무 많은 요청을 처리하고 있거나, 정상적으로 작동하지 않는 서버에는 요청을 보내지 않는다. (고가용성 보장)
- 클래식 로드벨런서
- 애플리케이션 로드벨런서
7. 서버 아키텍처 별 비교
- 웹 서비스 아키텍처
- 서버리스 아키텍처
- 서버 로직을 별도로 써드파티 업체가 구현한 것을 쓰거나, 코드는 작성하지만 그 실행은 외부 업체를 통해 하는 것
- 장점:
- 서버가 정말 필요한 경우에만 사용하여 비용을 절감할 수 있다.
- 코드 외적인 내용을 처리할 필요가 없어서 운영 비용을 절감할 수 있다.
- 스케일을 키우는데 걱정할 필요가 없다.
- 불필요한 작업(서버 구성, 서버 관리)을 줄일 수 있다)
- 단점:
- 제공되는 환경 내에서만 일을 처리할 수 있기 때문에 튜닝이나 외부 라이브러리 등 접근 측면에서 제한이 있을 수 있다.
-
모노리틱 아키텍처
댓글남기기