[CS] AWS-1.VPC

limlim·2023년 5월 11일
0

CS

목록 보기
8/15

개요

  • 항해에서 프로젝트를 서버에 배포할 때 AWS EC2와 이미지 저장을 위해 S3를 사용한 적이 있고, 이전 회사에서 프로젝트를 할 때 RDS도 사용해 본 적이 있다. AWS에는 이 3가지 기능 외에도 많은 기능이 있는데 사용해 보지 못했다. 그래서 관련 내용을 정리하면서 나중에 쓰게 될 때 알고 쓰기 위해 AWS의 기능들에 대해 하나하나 공부하고 정리하려고 한다. 먼저 처음으로 VPC에 대해 알아보려고 한다.
  1. VPC란?
  • VPC는 Virtual Private Cloud의 약자로 클라우드 구성을 가상화된 private 공간에 두는 방식을 의미함

  • AWS의 인스턴스 상품군(EC2, RDS 등)은 기본적으로 VPC를 지정하게 되어 있으며, AWS 계정을 처음 생성하면 default-vpc가 생성되어 있음

  • 그럼 여기서 왜 vpc가 default로 구성되어 있을까?

-> VPC는 서버 자원 간 연결의 기본이 되는 공간으로, 같은 네트워크에 속한 자원끼리는 자유롭게 통신할 수 있기 때문에

  1. VPC 특성

1) 독립적인 가상의 네트워크 공간

  • 하나의 데이터센터에 존재하는 여러 가상 서버들을 독립된 데이터센터처럼 운영할 수 있도록 데이터센터 망에서 분리시켜주는 형태라고 생각하면 됨

  • But, 독립적인 가상 네트워크여도 물리적인 제약을 완전히 분리해낼 수는 없음 (즉, 복수의 데이터센터에 있는 여러 가상 서버들을 하나의 VPC로 운영할 수 없음)

  • So, 물리적 제약이 남아있는 특성은 AWS의 리전(Region)가용 영역(Availability Zone)을 이해하는게 좋음

리전(Region): AWS의 데이터센터 여러 개의 묶음을 의미함 ex) AWS 서울 리전은 AWS가 서울에 배치한 데이터센터들의 묶음을 의미함

가용 영역(Availability): 하나의 리전 안에 구성된 물리적으로 분리된 데이터 센터로, 각각의 리전은 최소 2개의 가용 영역으로 구성되어, 단일 리전이라도 물리적으로 분리된 여러 데이터센터를 둠으로써 자연재해 등의 발생에도, 하나의 리전 전체가 중단되는 상황 방지

2) 사용자의 설정에 따라 자유롭게 구성 가능한 네트워크

  • VPC는 데이터센터에서 논리적으로 분리된 네트워크 공간이기 때문에, 사용자가 자유롭게 IP 설정, 트래픽 제한, 라우팅, 엔드포인트 지정 등을 수행할 수 있음

  • VPC를 생성할 때는 기본적으로 CIDR 블록을 설정하게 돼있는데, VPC내의 인스턴스들은 지정된 CIDR 블록 내의 로컬 IP를 할당받게 됨

  1. VPC 구성
  • VPC는 논리적으로 분리된 영역인 만큼, AWS 내의 설정값만으로 자유롭게 열고/닫고/자를 수 있음

1) 서브넷

  • VPC를 가용 영역별로 구성하는 설정

  • 가용 영역 내에 있는 인스턴스들을 역할 단위로 묶어 각각의 독립적인 서브넷을 만들 수 있고, 이러한 서브넷마다 역할에 맞느 ㄴ네트워크 설정을 적용할 수 있음

  • 서브넷을 통해 동일한 역할을 수행하는 인스턴스들을 묶어 동일한 네트워크 설정을 적용할 수 있음

  • 이를 위해 처음 프로젝트를 시작할 때부터 Web, API, DB, LoadBalancer 등 AWS의 인스턴스 단위별로 서브넷을 만들어두는 것이 좋음

2) 네트워크 ACL

  • 실질적으로 AWS 내의 인스턴스들이 외부와 커뮤니케이션 하는 과정에서 보안을 담당하는 기능
    (창문 역할)

cf) 보안 그룹은 네트워크 내부 간 통신을 담당하는 보안 기능 (각 방의 방문 역할)

  • 외부와의 트래픽을 보호하는 보안 기능이기 때문에 모든 서브넷을 1개의 네트워크 ACL을 반드시 구성하도록 되어 있으며, VPC가 생성되면 기본 네트워크 ACL이 생성됨

  • 네트워크 ACL은 기본적으로 모든 In/Out Bound를 차단하며, 최초 생성되는 기본 네트워크 ACL은 모든 트래픽을 허용하도록 추가 설정이 적용되어 있음

  • So, 직접 새로운 네트워크 ACL을 만들 경우 허용할 규칙을 직접 설정해주어야 외부와 정상적인 통신이 가능함. 특히 네트워크 ACL은 동일한 포트에 대해 Inbount와 Outbound가 모두 열려있어야만 정상 작동하도록 설계 되어있음

3) 라우팅 테이블

  • IP주소에 트래픽 라우팅 경로를 설정하고 이를 통해 In/Out Bound 트래픽에 대한 경로를 설정해주는 기능 (즉, 들어오는 트래픽과 나가는 트래픽 모두를 목적지에 따라 적당한 경로로 전달시켜주는 역할)

  • So, AWS의 모든 게이트웨이와 인터페이스, 피어링 연결을 포함해 네트워크 경로를 모두 지정할 수 있기 때문에 라우팅 테이블을 잘 설계해두면 상황에 따라 능동적으로 네트워크 상황을 변경할 수 있음

4) 게이트웨이

  • 게이트웨이는 크게 Internet GateWayNAT gateway로 나뉨

  • Internet Gateway는 VPC 내부의 리소스, 특히 서브넷이 인터넷과 연결될 수 있도록 하는 AWS 요소

-NAT gateway는 주로 외부에 내부망의 IP 정보를 전달하는 것을 방지하기 위해 사용

  1. 정리
  • 이전에 인스턴스를 생성할 때 VPC와 서브넷, 게이트웨이, 라우팅 테이블 등이 default값으로 설정되어 있어 각각의 의미에 대해서 자세히 몰랐는데 공부하고 보니 네트워크 설정의 중요성에 대해 알게 되었다.

  • 클라우드 설계 과정에서는 외부망/내부망/인스턴스 순으로 순차적인 네트워크 흐름을 고려하며 설계하는 것이 더욱 효과적이라고 한다.

  • So, 인스턴스부터 빠르게 만들기보다는 VPC에 대해 충분히 이해하고, VPC와 서브넷, 게이트웨이와 라우팅 테이블 등을 어떻게 구성할지 구상한 뒤 인스턴스를 그에 맞추어 세팅하는 것이 좋다.

참고자료: https://yozm.wishket.com/magazine/detail/1318/

profile
不怕慢,只怕站 개발자

0개의 댓글