본문 바로가기
AWS

AWS Section 10. VPC 기초

by _비니_ 2024. 9. 27.

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와 서브넷 구조를 시각화한 다이어그램

  • VPC 내의 네트워크를 가용 영역(Availability Zone) 단위로 나눌 수 있음
    • Public Subnet: 인터넷에서 접근이 가능한 서브넷
    • Private Subnet: 인터넷에서 접근할 수 없는 서브넷
  • Route Tables
    • 라우트 테이블을 사용하여 인터넷과의 접근 및 서브넷 간 네트워크 흐름을 정의

 

📌 VPC Diagram

PC 내에 두 개의 가용 영역이 있고 각각 공용 및 사설 서브넷이 배치된 구조를 보여줌

  • 두 개의 가용 영역(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 게이트웨이를 통해 인터넷에 접근할 수 있음

인터넷 게이트웨이와 NAT 게이트웨이 간의 트래픽 흐름을 나타내는 다이어그램 >> 공용 서브넷은 IGW를 통해 인터넷에 연결 되며, 사설 서브넷은 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 A, B, C 세 개의 VPC가 있고, 각 VPC 간의 피어링 연결이 따로 이루어지는 구조 🌟 각각의 연결은 독립적으로 설정되어 있어야 한다는 점!! 🌟

VPC 피어링은 전이적이지 않으므로 각 VPC 사이에 개별적인 피어링 연결이 필요

 

 

📌 VPC Endpoints

  • VPC 엔드포인트는 AWS 서비스에 연결할 때 공개 네트워크가 아닌 프라이빗 네트워크를 사용. 이를 통해 보안이 강화되고 지연 시간이 줄어듦
  • VPC 엔드포인트의 두 가지 유형
    1. VPC Endpoint Gateway: 주로 S3와 DynamoDB와 연결할 때 사용
    2. VPC Endpoint Interface: 그 외의 AWS 서비스와 연결하는 데 사용
  • 사용 예시
    • 프라이빗 서브넷 내의 EC2 인스턴스가 S3와 DynamoDB에 접근해야 할 때, VPC Endpoint Gateway를 설정하여 이 서비스들에 프라이빗하게 접근. 여기서 트래픽은 인터넷을 거치지 않고 VPC 내에서 처리됨.

VPC 내의 프라이빗 서브넷 에서 EC2 인스턴스가 VPC Endpoint Gateway 를 통해 S3 및 DynamoDB에 접근하는 구조>> 🌟 트래픽이 인터넷을 거치지 않고, 프라이빗하게 해당 서비스에 접근할 수 있음을 보여줌 🌟

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 53CloudFront를 통해 글로벌 콘텐츠를 배포하며, ELB를 통해 요청이 여러 가용 영역으로 분산됨
  • NAT GatewayInternet Gateway를 통해 EC2 인스턴스가 외부 네트워크에 접근할 수 있게 됨
  • Auto Scaling을 통해 EC2 인스턴스의 수를 자동으로 조정하며, Aurora RDSElastiCache는 데이터 저장 및 캐싱을 관리
  • 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