- AWS 핵심 서비스로 웹 애플리케이션 구축하기 - 이론
- AWS 핵심 서비스로 웹 애플리케이션 구축하기 - 실습
이번 실습으로 아래 아키텍처 설계에 따른 인프라 구축을 해본다.
그 전에 이론 부분들을 살펴보자
1. AWS Region (리전)
- 전세계에 AWS 데이터센터가 클러스터 형태로 위치한 물리적 위치
- 1개의 리전은 고가용성, 확장성, 내결함성을 위해 3개 이상의 AZ로 구성
2. Availability Zones (가용영역, AZ)
- 모든 AWS Region은 지리적 영역 내에서 격리되고 물리적으로 분리된 최소 3개의 AZ로 구성
- 모든 가용 영역은 AWS 리전의 중복 전력, 네트워크 및 연결이 제공되는 하나 이상의 개별 데이터 센터로 구성
- AZ 간에는 높은 대역폭, 10ms 이하 짧은 지연시간의 네트워크로 구성
- AZ 간 모든 트래픽 암호화
- 모든 AZ는 서로 100km 이내 거리 위치
3. Amazon VPC
- Virtual Private Cloud
- 사용자가 정의한 논리적으로 격리된 가상의 프리이빗 네트워크 환경
- 간단한 구성만으로도 AWS의 확장 가능한 인프라를 기존 데이터센터 환경과 유사하게 사용
3-1. Amazon VPC 구성
1. VPC 생성할 리전 선택하고 IP 주소 범위 설정
2. 하나의 큰 VPC를 용도에 맞게 퍼블릭 서브넷과 프라이빗 서브넷으로 쪼갬
3. 인터넷과의 통신을 위해 설정
4. 라우팅 테이블 규칙을 설정하여 해당 VPC 내의 트래픽 경로 제어
5. 방화벽 설정하여 접속이 허용된 요청만 접속되도록 네트워크 보호
위 5가지 단계로 VPC를 구성할 수 있음
3-2. IP 주소 범위 설정
- CIDR 블록 설정
- Classless Inter-Domain Routing
- IP 대역의 시작 주소와 크기(넷마스크)를 정의
- RFC 1918의 사설 IP 대역 사용 권고
- 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8
- VPC의 네트워크 범위는 /16 ~ /28까지 가능
- CIDR는 생성 후 변경 불가능
- 향후 직접 연결할 가능성이 있는 네트워크와 주소가 중복되지 않도록 할당 권고
- On0premises network와 연동 고려
- AWS 내 리전 간 확장
3-3. 서브넷 정의
- 네트워크를 잘라서 만든 작은 범위의 네트워크 대역을 의미함
- 용도에 따른 분리
- A 서비스, B 서비스 ...
- 여러 가용영역 배포
- 고가용성 확보
- AWS가 예약한 IP 주소들
- 10.0.0.0 (네트워크 주소)
- 10.0.0.1 (VPC 라우터)
- 10.0.0.2 (DNS 용)
- 10.0.0.3 (향후 대비용)
- 10.0.0.255 (브로드캐스트 주소)
3-4. Internet Gateway 설정
외부에 있는 인터넷과 AWS 내부간에 통신을 하기 위한 연결 통로
3-5. 라우팅 테이블 구성 - 로컬 통신
- 라우팅 테이블에서는 실제 VPC 내의 트래픽이 어떤 경로로 이동하게되는지 구성하게 됨
- 라우팅 테이블은 서브넷마다 개별적으로 연결 가능
- 명시적으로 연결하지 않을 경우 로컬 통신만 가능한 기본 라우팅 테이블로 연결
- 라우팅 테이블 규칙은 Destination, Target 으로 구성되며 패킷이 이동할 때마다 Destination 과 일치하는 Target으로 이동
- Destination은 최종 목적지를 의미하며, Target은 패킷을 보낼 곳을 정의
3-6. 라우팅 테이블 구성 - 인터넷 통신
- 라우팅 테이블에서 Target을 인터넷 게이트웨이로 설정하면 해당 트래픽은 외부 인터넷으로 나갈 수 있음
- 사진에서 1.2.3.4 패킷은 인터넷 게이트웨이를 거쳐 외부 인터넷으로 나감
- 만약 10.0.1.1 로 패킷을 보내면 2개의 Destination에 충족하는데, 이 때는 가장 긴 접두사 매치를 따르게 됨
- 즉, 가장 구체적인 범위를 선택하여 포워딩한다는 의미로 local로 라우팅이 됨
3-7. 퍼블릿 서브넷과 프라이빗 서브넷
- 라우팅 테이블 설정에 따라서 인터넷 게이트웨이를 통하여 외부 통신이 가능한 서브넷은 퍼블릭 서브넷이고, 그렇지 않으면 프라이빗 서브넷으로 분류
- 외부 사용자가 접근해야하면 퍼블릭 서브넷, DB처럼 외부 사용자가 접근 못하면 프라이빗 서브넷
- 라우팅 테이블을 활용하여 간단히 망분리 환경 구성 가능
3-8. 퍼블릭 서브넷 (Public Subnet)
- 퍼블릭 서브넷에 EC2 구성하면 Public IP 부여받을 수 있음
- 인터넷과 통신은 VPC의 인터넷 게이트웨이
- 인터넷으로 라우팅은 라우팅 테이블로 설정
- 인터넷 통신은 필요한데 그 외의 통신은 원치 않을 때는 프라이빗 서브넷을 사용
3-9. 프라이빗 서브넷 (Private Subnet)
- Private IP 주소만 사용하고 Public IP 주소가 필요 없음
- 프라이빗 리소스는 Public IP 주소가 없기에 인터넷 사용을 위해 NAT 게이트웨이 필요
- NAT 게이트웨이는 원웨이 아웃 지원
- VPC 안의 리소스로부터 인터넷으로 나가는 아웃바운드 트래픽은 허용
- 인터넷으로부터 VPC 안의 리소스로 들어오는 인바운드 트래픽은 오직 요청에 의한 응답만 허용
- 인터넷에서 VPC 로 요청을 보내 NAT 게이트웨이를 거치려고 하면 실패
- 퍼블릭 서브넷과 프라이빗 서브넷으로 아웃바운드 인터넷 액세스 구현이 가능함
3-10. VPC 액세스 제어 : NACL 과 보안그룹
- 로컬과 인터넷 통신이 가능하다면 보안의 관점에서 VPC 리소스에 대한 액세스를 제어해야 함
- 서브넷 단위로 제어하는 NACL(낫클), 인스턴스 단위로 트래픽 제어하는 보안그룹
- NACL에서 허용한 트래픽이 보안그룹에 허용되지 않으면 인스턴스 접근 불가능
- 두 가지를 같이 사용하여 두 개의 방화벽 레이어로 애플리케이션 보호 가능
4. Amazon EC2
다양한 EC2와 구매 옵션을 제공하기에 사용자의 환경에 맞춰 사용 가능
4-1. EC2 호스트 가상화
- EC2는 Virtual Machine 환경
- AWS 글로벌 리전에 위치한 각각의 물리적 호스트 위에 하이퍼바이저를 통해 게스트 OS로써 EC2 인스턴스가 동작
- EC2 인스턴스를 사용하기 위해서는 AMI에 대해 알아야 함
4-2. Amazon Machine Image (AMI)
- 인스턴스 시작에 필요한 정보 제공
- 동일한 구성으로 한 AMI에서 여러 인스턴스 시작
- AMI는 다음을 포함
- 1개 이상의 Amazon Elastic Block Store (Amazon EBS) 스냅샷 또는 루트 볼륨에 대한 템플릿(운영 체제, 애플리케이션)
- AMI를 사용하여 인스턴스를 시작할 수 있는 AWS 계정을 제어하는 시작 권한
- 인스턴스에 연결할 볼륨을 지정하는 블록 디바이스 매핑
4-3. 인스턴스 유형
4-4. 인스턴스 유형 네이밍
4-5. Elastic Load Balancing
4-6. Amazon EC2 Auto Scaling
- ELB와 같이 사용되는 서비스 중에 EC2 Auto Scaling이 있음
- 인스턴스가 비정상 상태일 때 해당 인스턴스 종료하고 새 인스턴스 시작하는 역할
- 트래픽 사용량을 통해 자동 확장하거나 축소하는 역할
- 인스턴스가 낭비되지 않게 탄력적으로 사용
- 변화하는 수요에 동적으로 대응하고 비용 최적화
- 인스턴스 시작 시 필요한 정보를 제공해줘야 하는데 이 정보를 시작 템플릿에 담아 오토스케일링에 전달
4-7. 시작 템플릿 (Launch Template)
- 시작(launch)을 간소화하고 단순화하기 위해 시작 요청을 템플릿화
- 오토스케일링이 시작 템플릿을 기반으로 새 인스턴스 시작
- 웹 애플리케이션을 시작할 때 필요한 구성들을 시작 템플릿에 저장하고 운영 가능
- 수정 사항 생기면 버전 관리 쉽게 가능
'AWS' 카테고리의 다른 글
AWS 핵심 서비스로 웹 애플리케이션 구축하기 - 실습 (5) | 2024.10.22 |
---|---|
AWS Serverless(서버리스)로 서버 고민 없이 웹 애플리케이션 구축하기 #2 (0) | 2024.09.09 |
AWS Serverless(서버리스)로 서버 고민 없이 웹 애플리케이션 구축하기 #1 (6) | 2024.09.06 |
AWS TechCamp란? (0) | 2024.09.04 |
CodeDeploy - CodePipeline 만드는 도중 실패 및 설명 (0) | 2024.05.05 |