우선, 안전한 서비스 구축을 위해 Virtual Private Cloud 인 VPC에 웹 서버와 (웹) 어플리케이션 서버, DB 등을 구성하였다.
이때 internet gateway라는 것이 필요한데, 이 internet gateway는 인터넷과 VPC 내의 AWS 리소스들 간의 연결을 지원한다.
VPC 안에서 서버와 DB를 두 개의 Available Zone에 중복으로 구성하였는데, 이는 이중화를 위한 구성으로 한 AZ이 문제가 생겨도(한 쪽에 물리적으로 문제가 생겨도) 문제 없이 서비스가 가능하도록한 Active-Acitve 구조이다.
각 AZ에 바로 AWS 리소스를 위치시키지 않고 Public Subnet과 Private Subnet에 위치시켰다. Public Subnet은 외부와 통신이 가능한 subnet으로 Public subnet의 라우팅 테이블은 Internet Gateway와 연결되어 있다. 반면 Private subnet은 외부와 통신이 직접적으로 불가능한 서브넷으로, 외부와의 통신을 위해 Public Subnet에 NAT Gateway를 위치시켰다. Private Subnet의 라우팅 테이블은 NAT Gateway랑 연결되어 아웃바운트 트래픽을 보낸다.
위와 같은 방식으로 AWS 리소스를 보호하고 있지만 여기에 추가적으로 각 리소스들을 security group으로 씌워 인바운드/아웃바운드 트래픽을 제어함으로서 더 높은 보안성을 확보 할 수 있다.
Bastion Host는 위와 같이 보안을 위해 접근이 제한된 구조에서 쉽게 접근하여 리소스 관리를 할 수 있도록 하는 요소이다. Bastion Host는 관리자 IP만 SSH 접속을 허용하고, Webserver나 appserver 등등은 Hastion Host의 접근을 허용하는 방식으로 구성하면 된다.
첫 Private Subnet에는 웹 서버가 두번째 Private Subnet에는 어플리케이션서버가 위치한다. 여기에 사용되는 EC2들은 각각 Auto scaling Group으로 묶어 Auto scaling이 가능하도록 하였다. Auto scaling을 통해서 부하에 따라 EC2를 늘리고 줄이는 Scale out/Scale In이 가능하다. 또한 Elastic Load Balancer를 두어 여러 EC2 중 여유로운 EC2에 연결하도록 하여 부하 분산을 할 수 있도록 했다.
External ELB는 Application load balancer를 두었고, internal ELB는 Network Load balancer를 두었다. ALB는 L7 로드밸런서로 IP+포트번호+패킷내용을 보고 스위칭한다. 반면, NLB는 L4 로드 밸런서로 IP+포트번호로만 스위칭 한다. ALB는 고정 IP를 가지지 못해 DNS NAME을 이용해야 하는데, NLB는 Elastic IP를 Static IP로 사용이 가능하여 DNS NAME과 IP주소 모두 접근 가능하다. 그래서 고정 IP로 ALB에 Access하고 싶다면 ALB 앞에 NLB를 두면 되지만, 이 아키텍처에서는 고려되지 않았다.
프론트엔드(웹 서버) 에는 정교한 LB을 위해 L7 LB 인 ALB를 사용하였고, 백엔드(앱서버)에서는 빠른 속도를 위해 NLB를 위치시켰다.(포트,ip로만 스위칭 해도 충분) API GATEway 연결을 고려해서도 internal을 NLB로 하는데 Internal을 ALB로 해도 된다.
그리고 ALB는 기본적으로 multi AZ으로 LB을 지원하지만, NLB는 기본적으로 single AZ만 지원한다. Multi AZ을 지원하게 하려면 추가적인 금액을 지불해야 한다.
ALB는 기본적으로 RoundRobin 방식으로 사용하고, Least Outstanding Requests를 사용한다.
RoundRobin방식은 들어오는 요청을 모든 서버에 균등하게 분배하는 방식으로 EC2에 차례차례 요청을 할당하는 방식이라고 보면 된다.
Least Outstanding Request는 EC2에 연결된 요청(연결)들의 개수를 확인하고 연결이 제일 적은(일을 제일 적게하는) EC2에 요청을 분배한다.
NLB의 경우 IP hash 방식을 쓰는데, 이는 요청 온 사용자의 IP를 해싱한 후 그 결과에 따라 EC2에 분배한다. 사용자의 IP는 고정되기 때문에 항상 같은 EC2로 연결되는 것을 보장 받을 수 있다.(TCP 연결이 지속되는 동안에는 단일 대상으로 라우팅한다.)
'개인 공부 > 면접 준비' 카테고리의 다른 글
DAY? AWS를 활용한 웹 3Tier Architecture_3 (0) | 2022.08.30 |
---|---|
DAY? AWS를 활용한 웹 3Tier Architecture_2 (0) | 2022.08.29 |
DAY? 통신 프로토콜 (0) | 2022.08.28 |
DAY 2 Again - 고성능 컴퓨팅을 위해서 AWS 활용하기 (0) | 2022.08.15 |
DAY 1 Again-하이브리드 클라우드를 쓰려면 어째야 될까? (0) | 2022.08.15 |