VPC(Virtual Private Cloud)는 AWS에서 네트워크를 구성하는 매우 중요한 개념
- AWS Certified Developer 시험에서는 VPC에 대해 심층적인 지식까지는 요구되지 않지만, VPC와 관련된 기본 개념들은 알아야 함.
- 핵심적으로 알아야 할 주제
- VPC, 서브넷
- 인터넷 게이트웨이 및 NAT 게이트웨이
- 보안 그룹 및 네트워크 ACL(NACL)
- VPC 플로우 로그
- VPC 피어링 및 VPC 엔드포인트
- Site-to-Site VPN 및 Direct Connect
📌 VPC & Subnets Primer
- VPC (Virtual Private Cloud)
- AWS에서 리소스를 배포하기 위한 사설 네트워크로, AWS 리전 수준에서 관리됨.
- VPC는 네트워크를 설정하고, 그 내부에 여러 서브넷을 생성할 수 있음
- Subnets (서브넷)
- VPC 내의 네트워크를 가용 영역(Availability Zone) 단위로 나눌 수 있음
- Public Subnet: 인터넷에서 접근이 가능한 서브넷
- Private Subnet: 인터넷에서 접근할 수 없는 서브넷
- Route Tables
- 라우트 테이블을 사용하여 인터넷과의 접근 및 서브넷 간 네트워크 흐름을 정의
📌 VPC Diagram
- 두 개의 가용 영역(AZ)을 포함한 VPC 구조가 있으며, 각각 공용 서브넷과 사설 서브넷으로 나뉘어져 있음
- VPC는 10.0.0.0/16과 같은 CIDR 범위를 가지며, 이를 통해 네트워크 내 IP 주소 할당이 이루어짐.
📌 Internet Gateway & NAT Gateways
- Internet Gateway (IGW)
- VPC 내부의 인스턴스가 인터넷에 접근할 수 있도록 해주는 게이트웨이
- Public Subnet은 IGW를 통해 인터넷에 접근할 수 있으며, 인터넷에서 공용 서브넷으로 접근할 수 있음
- NAT Gateway
- 사설 서브넷의 인스턴스가 인터넷에 접근하도록 해주지만, 외부에서 사설 서브넷으로의 접근은 차단
- NAT Gateways: AWS에서 관리하는 서비스로, 프로비저닝과 스케일링을 관리할 필요가 없음
- NAT Instances: 사용자가 직접 관리해야 하는 인스턴스로, 성능이나 유지 보수에 대해 신경 써야 함
- 사설 서브넷의 인스턴스가 인터넷에 접근하도록 해주지만, 외부에서 사설 서브넷으로의 접근은 차단
- NAT 구성
- NAT 게이트웨이는 공용 서브넷에 배치되고, 사설 서브넷에서 NAT 게이트웨이를 통해 인터넷에 접근할 수 있음
Network ACL & Security Groups
📌 Network ACL (NACL)
서브넷에 들어오고 나가는 트래픽을 제어하는 방화벽 역할
- 특징
- 허용 규칙과 거부 규칙(Allow and Deny)이 모두 가능
- 서브넷 레벨에서 작동하며, IP 주소를 기반으로 트래픽을 제어
- 서브넷으로 들어오는 트래픽은 EC2 인스턴스로 도달하기 전에 NACL을 먼저 통과해야 함
📌 Security Groups (보안 그룹)
Elastic Network Interface(ENI) 또는 EC2 인스턴스와의 트래픽을 제어하는 방화벽 역할을 함
- 특징:
- 허용 규칙(Allow rules)만 허용
- 인스턴스 레벨에서 작동하며, IP 주소 및 다른 보안 그룹을 기반으로 트래픽을 제어
- 트래픽이 보안 그룹을 통과하면 EC2 인스턴스에 도달함. 이는 NACL을 통과한 후 두 번째 방어선
🆚 Network ACL vs Security Groups
- NACL
- 서브넷 레벨에서 작동
- 허용 및 거부 규칙을 지원
- 상태 비저장(Stateless) 즉, 반환 트래픽도 명시적으로 허용해야 함.
- 보안 그룹
- 인스턴스 레벨에서 작동
- 허용 규칙만 지원
- 상태 저장(Stateful). 즉, 허용된 트래픽에 대한 반환 트래픽은 자동으로 허용됨
📌 VPC Flow Logs
VPC, 서브넷, ENI에 들어오는 IP 트래픽에 대한 정보를 캡처함
(VPC 흐름 로그, 서브넷 흐름 로그, 탄력적 네트워크 인터페이스 흐름 로그)
- 활용: 네트워크 모니터링 및 문제 해결에 사용됨
- 예를 들어, 서브넷이 인터넷에 연결되지 않거나, 다른 서브넷과 통신하지 못하는 문제를 해결할 때 유용
- 인터넷에 대한 서브넷
- 서브넷에서 서브넷으로
- 인터넷에서 서브넷으로
- 예를 들어, 서브넷이 인터넷에 연결되지 않거나, 다른 서브넷과 통신하지 못하는 문제를 해결할 때 유용
- 저장: VPC Flow Logs 데이터는 S3, CloudWatch Logs, Kinesis Data Firehose에 저장할 수 있음.
📌 VPC Peering
- VPC 피어링은 두 개의 VPC를 AWS 네트워크를 사용해 프라이빗하게 연결하여 마치 동일한 네트워크에 있는 것처럼 작동하게 만듦
- 이때 두 VPC는 겹치지 않는 CIDR 범위를 가져야 함
- VPC 피어링 연결은 전이적이지 않다는 점을 주의
- 예를 들어, VPC A가 VPC B와 연결되어 있고, VPC C와도 연결되어 있다고 해도 B와 C는 통신할 수 없음 !! 이 둘 간의 통신을 원한다면 별도의 VPC 피어링을 설정해야 함
VPC 피어링은 전이적이지 않으므로 각 VPC 사이에 개별적인 피어링 연결이 필요
📌 VPC Endpoints
- VPC 엔드포인트는 AWS 서비스에 연결할 때 공개 네트워크가 아닌 프라이빗 네트워크를 사용. 이를 통해 보안이 강화되고 지연 시간이 줄어듦
- VPC 엔드포인트의 두 가지 유형
- VPC Endpoint Gateway: 주로 S3와 DynamoDB와 연결할 때 사용
- VPC Endpoint Interface: 그 외의 AWS 서비스와 연결하는 데 사용
- 사용 예시
- 프라이빗 서브넷 내의 EC2 인스턴스가 S3와 DynamoDB에 접근해야 할 때, VPC Endpoint Gateway를 설정하여 이 서비스들에 프라이빗하게 접근. 여기서 트래픽은 인터넷을 거치지 않고 VPC 내에서 처리됨.
VPC 엔드포인트는 프라이빗 네트워크를 통해 AWS 서비스에 접근할 때 사용되며, 주로 S3와 DynamoDB에 접근할 때는 Endpoint Gateway, 그 외의 서비스에는 Endpoint Interface를 사용
📌 Site-to-Site VPN과 Direct Connect
- Site-to-Site VPN은 온프레미스 VPN 어플라이언스를 AWS로 연결하는 방식.
- 자동으로 암호화되며, 공개 인터넷을 통해 이루어짐.
- 빠르게 설정할 수 있고, 몇 분 내에 암호화된 연결이 구축됨
- Direct Connect (DX)는 온프레미스 데이터 센터와 AWS 간에 물리적인 프라이빗 연결을 만드는 방식.
- 공개 인터넷을 사용하지 않으며, 연결이 더 안전하고 빠릅니다. 이 연결을 설정하는 데는 시간이 걸리며, 완전히 구축하는 데 최대 몇 달이 걸릴 수 있습니다.
온프레미스 데이터 센터(On-premises DC)와 VPC 간의 두 가지 연결 방식
- Site-to-Site VPN은 공개 인터넷을 통해 암호화된 연결을 제공
- Direct Connect는 프라이빗 네트워크를 사용해 물리적 연결을 구축하여 더 안정적이고 빠른 연결을 제공
Site-to-Site VPN은 공개 인터넷을 통해 암호화된 연결을 제공하고, Direct Connect 는 물리적 프라이빗 연결로 보다 안전하고 빠른 통신을 지원하지만 구축 시간이 김
💬 VPC Closing Comments
- VPC (Virtual Private Cloud)
- AWS에서 제공하는 가상 네트워크로, EC2 인스턴스를 실행하는 데 사용됨
- Subnets
- VPC의 네트워크를 분할하며, 가용 영역(AZ)과 연동됩니다. EC2 인스턴스가 실행되는 위치를 정의.
- Internet Gateway
- VPC의 공용 서브넷이 인터넷에 접근할 수 있도록 함
- NAT Gateway / NAT Instances
- 사설 서브넷 내 EC2 인스턴스가 인터넷에 접근할 수 있게 함
- NACL (Network ACL)
- 서브넷에 대한 들어오고 나가는 트래픽을 제어하는 무상태 방화벽
- Security Groups
- 인스턴스 레벨에서 동작하며 상태 저장 방화벽 역할을 함. 특정 IP 주소나 다른 보안 그룹을 참조할 수 있음
- VPC Peering
- 두 VPC를 연결하되, CIDR 범위가 겹치지 않아야 하며, VPC 피어링은 전이되지 않기 때문에 각각 연결해야 함
- VPC Endpoints
- VPC 내에서 AWS 서비스에 프라이빗하게 접근할 수 있게 해줌
- VPC Flow Logs
- 네트워크 트래픽 로그를 기록하며, 트래픽이 허용되거나 차단된 이유를 디버깅하는 데 유용함
- Site-to-Site VPN
- 온프레미스 데이터센터를 AWS VPC와 VPN을 통해 연결함. 이 연결은 공개 인터넷을 통해 암호화됨
- Direct Connect
- 온프레미스 데이터센터와 AWS를 물리적인 프라이빗 연결로 연결하여 더 안전하고 빠른 네트워크 통신을 제공
📌 Typical 3-Tier Solution Architecture
3계층 아키텍처는 AWS에서 웹 애플리케이션을 배포하는 전형적인 방식
- 사용자는 웹 애플리케이션에 접근하기 위해 Elastic Load Balancer(ELB)를 통해 요청을 보냄
- Route 53을 사용하여 DNS 요청이 이루어지고, 사용자는 ELB와 통신함
- ELB는 트래픽을 Auto Scaling 그룹 내에 있는 EC2 인스턴스에 전달. Auto Scaling 그룹은 사설 서브넷에 배치되며, 직접 인터넷에서 접근할 수 없고 ELB를 통해서만 접근 가능함
- Private Subnets는 3개의 가용 영역(AZ)에 배포된 EC2 인스턴스를 가지고 있으며, 각 AZ마다 하나의 EC2 인스턴스가 배치딤
- Data Subnets는 데이터 저장소 역할을 하며, 이곳에는 Amazon RDS가 있어 EC2 인스턴스가 데이터베이스와 상호작용할 수 있음. 또한 ElastiCache를 사용하여 세션 데이터를 저장하거나 캐싱 데이터를 관리할 수 있음
- 이 구조는 일반적으로 웹 애플리케이션의 3계층인 웹, 애플리케이션, 데이터 계층을 분리하여 보안을 강화하고 성능을 최적화함
📌 LAMP Stack on EC2
- LAMP 스택은 웹 애플리케이션을 구성하는 일반적인 기술 스택
- Linux: EC2 인스턴스의 운영 체제.
- Apache: 웹 서버로, Linux에서 실행
- MySQL: 데이터베이스 관리 시스템으로, Amazon RDS에서 관리됨
- PHP: 애플리케이션 로직으로, EC2에서 실행됨
- ElastiCache는 Redis 또는 Memcached와 같은 캐시 기술을 추가하여 성능을 높일 수 있음
- EBS 드라이브를 사용해 EC2 인스턴스에 애플리케이션 데이터나 소프트웨어를 저장할 수 있음
📌 WordPress on AWS
WordPress는 블로깅 도구로, AWS에 배포하는 방법을 설명
- 사용자는 Route 53을 통해 ELB에 연결되고, ELB는 여러 가용 영역(AZ)에 배치된 EC2 인스턴스에 요청을 전달
- EFS (Elastic File System)는 여러 EC2 인스턴스가 같은 파일에 접근할 수 있게 해주며, 파일 공유에 매우 유용
- 예를 들어, 사용자가 이미지를 전송하면 EC2 인스턴스는 해당 이미지를 EFS에 저장하고, 다른 EC2 인스턴스도 동일한 파일에 접근할 수 있게 됨!
- 각 EC2 인스턴스는 Elastic Network Interface (ENI)를 통해 EFS와 연결되어 있음
📌 WordPress on AWS (More Complicated)
좀 더 복잡한 WordPress 배포 아키텍처를 보여줌 (여기에는 여러 AWS 서비스와 인프라 컴포넌트가 결합되어 있음)
- Amazon Route 53과 CloudFront를 통해 글로벌 콘텐츠를 배포하며, ELB를 통해 요청이 여러 가용 영역으로 분산됨
- NAT Gateway와 Internet Gateway를 통해 EC2 인스턴스가 외부 네트워크에 접근할 수 있게 됨
- Auto Scaling을 통해 EC2 인스턴스의 수를 자동으로 조정하며, Aurora RDS와 ElastiCache는 데이터 저장 및 캐싱을 관리
- EFS는 파일 시스템을 여러 인스턴스 간에 공유할 수 있게 하며, S3는 파일 스토리지로 사용됨
- 이 복잡한 아키텍처는 고가용성과 확장성을 지원하는 강력한 웹 애플리케이션 배포 환경을 제공
3계층 구조는 웹, 애플리케이션, 데이터 계층으로 나뉘며, 각 계층은 VPC의 다양한 서브넷을 통해 분리되고 보호됨
LAMP 스택은 웹 애플리케이션을 배포하는 기본적인 아키텍처로, 각 구성 요소가 AWS 서비스와 연결되어 실행됨
WordPress와 같은 애플리케이션은 AWS에서 쉽게 배포 가능하며, 파일 공유나 데이터베이스 접근 등 여러 컴포넌트를 사용하여 확장성과 고가용성을 유지
반응형
'AWS' 카테고리의 다른 글
AWS Section 12. AWS CLI, SDK, IAM 역할 및 정책 (0) | 2024.09.27 |
---|---|
AWS Section 11. Amazon S3 (0) | 2024.09.27 |
AWS Section 9. Route 53 (0) | 2024.09.27 |
AWS Section 8. RDS+Aurora+ElasticCache (0) | 2024.09.27 |
AWS Section 7-2. ELB + AS (0) | 2024.09.27 |