[AWS] 활용 기초

Hyunjun Kim·2025년 3월 17일

실습 - (AWS 환경)

목록 보기
4/61

1. VPC와 네트워크

1.1 VPC

VPC 란?

  • VPC(Virtual Private Cloud)는 논리적으로 분리한 서브 네트워크로 AWS 환경 내의 네트워크 최소 단위.
    원래는 컴퓨터에 랜선이라는 걸 꼽아야 인터넷이 연결됐었는데 그걸 네트워크라고 한다.
    VPC는 랜선을 뽑아 나눈 물리적인 망이 아니라 논리적으로 분리한 가상의 네트워크라고 보면 된다.
    그래서 이게 AWS환경에서 네트워크를 구분할 때 사용하는 가장 최소한의 단위를 VPC라고 한다.

  • 사용자의 AWS 계정 전용 가상 네트워크, 하나의 리전에 대해 계정 당 하나의 VPC를 받는다.
    그래서 사용자의 AWS 계정의 전용 가상 네트워크다. 하나의 리전에 대해 계정 당 하나의 VPC를 받는다.

  • Amazon EC2 와 같은 AWS 리소스를 해당 VPC 에 할당해서 실행할 수 있다.
    어떤 리소스든 VPC 하나는 무조건 선택이 된다.

  • VPC 에서 실행된 AWS 리소스는 다른 AWS 리소스 혹은 인터넷에 연결될 수 있다.
    VPC 자체가 네트워크를 의미함. EC2를 쓰면 서브넷이라는 정보가 따라다님.

1.2. subnet

서브넷이란?

  • 서브넷은 VPC의 분할된 IP 주소 범위이다. VPC CIDR 블럭을 서브넷으로 지정한다. 지정된 서브넷으로 AWS 리소스를 실행할 수 있다.
  • 각 서브넷은 단일 가용 영역 내에서만 존재해야 하며, 여러 영역으로 확장할 수 없다.
  • 별도의 가용영역에서 인스턴스를 시작함으로써, 단일 영역에서 장애가 발생할 경우 애플리케이션을 보호할 수 있다.
    - 이건 자동으로 해주는 건 아니고 서브넷1에 있는 인스턴스가 죽으면 서브넷2에서 자동으로 만들어 주세요!~ 같은 설정을 하면 가용 영역 A가 죽더라도 가용영역 B를 사용한 서브넷2에서 인스턴스를 사용할 수 있음


출처 : https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/configure-subnets.html


이해를 돕기 위한 쉬운 그림!

하나의 유저는 하나의 가용영역에 서브넷 하나만 가진다.

가용 영역 A에 장애가 발생한 경우 서브넷 1은 이용을 못하지만 가용 영역 B가 살아있다면 서브넷 2는 이용할 수 있다.

CIDR이란?

  • CIDR (Classless Inter-domain Routing)는 클래스없는 도메인 간 라우팅 기법이다.
  • CIDR 를 이용하여 network 파트와 host 파트를 구분할 수 있으며, 특정 host 가 어떤 network 에 포함되는지 빠르게 확인 가능하다.
  • IPv4 는 8비트가 4번 등장하는 구조로 되어 있으며, 이런 IPv4 뒤에 /24 와 같이 / 를 이용하여 CIDR 를 표현할 수 있다.
    /24의 경우 앞의 24 비트를 network 파트로 이용하고 뒤 8비트를 host 파트로 이용하는 것을 의미한다.
  • 192.168.1.1/24 의 경우 앞의 24비트에 해당하는 192.168.1 가 network 파트에 해당된다.
    192.168.1.0 ~ 192.168.1.255 가 동일한 network 파트에 속한다.

AWS에서 subnet 마다 예약된 IP 주소

  • Subnet 의 몇몇 ip 는 특정용도를 위해 Subnet 생성과 함께 예약된다.
  • 예를 들어 10.0.0.0/24 대역으로 서브넷의 CIDR 블럭을 생성한다면. 아래 ip는 사용자의 AWS 리소스의 ip로 사용할 수 없다.

10.0.0.0 : Network address
10.0.0.1 : VPC router 에서 사용됨.
10.0.0.2 : DNS server 로 사용됨.
10.0.0.3 : 미래에 AWS 에서 필요한 경우 사용하기 위해 남겨둠.
10.0.0.255 : Network broadcast 주소.

1.3. Internet Gateway

Internet Gateway 란?

  • Internet Gateway 는 VPC 와 인터넷을 연결해주는 하나의 관문이다.
  • VPC 와 Internet 간의 통신을 가능하게 해준다.
    subnet 의 라우팅 테이블에 172.31.0.0/16 에 매칭되지 않은 ip 의 경우 0.0.0.0/0 에 해당되는 Internet Gateway 로 라우팅 된다.

1.4. NAT Gateway

NAT Gateway 란?

  • NAT Gateway는 프라이빗 서브넷이 인터넷과 통신하기 위한 아웃바운드 인스턴스이다.
  • 프라이빗 네트워크가 외부에서 요청되는 인바운드는 필요없더라도 아웃바운드 트래픽만 허용되어야 하는 경우 사용된다.
    (내가 어떤 보호되는 망을 구성했다. EC2 인스턴트든 DB든 그 안에 있는 친구들 끼리만 통신을 해서 알아서 동작하는 망. 외부에서는 이 서브스에 접근할 수가 없다.)
  • NAT Gateway는 프라이빗 서브넷에서 외부로 요청하는 아웃바운드 트래픽을 받아 Internet Gateway와 연결한다.
    (kakotalk API호출이라던지, 빌드를 수행하는데 메이븐이나 레포지토리에서 리소스를 다운 받는다던지, 등 외부에 있는 데이터가 필요한 경우가 있다. 이런 경우 NAT Gateway를 쓴다.)

Nat Gateway에다가 테이블 형식으로 프라이빗 서브넷을 외부에서 요청하는 아웃바운드 트레픽을 어떤 걸 허용할지 설정한다.
그러면 실제로 NAT Gateway 테이블을 보고서 해당 리소스는 받아오고 외부에서는 접속하는 걸 막을 수 있는 Gateway라고 보면 됨.

아웃바운드 : 밖으로 나갈 때 어던 정보를 쓸지. 어떤 IP가 어떤 걸 의미하는지를 정의한 테이블

두 개의 네트워크 아키텍처 그림에서 차이점은 NAT Gateway의 배치와 Availability Zone(AZ)의 개수다

  1. 첫 번째 이미지:
  • Availability Zone이 하나(AZ A)
  • NAT Gateway 사용: Public Subnet에 NAT Gateway가 배치됨.
  • Private Subnet이 인터넷과 통신할 때, NAT Gateway를 통해 가능.
  • Main Route Table에서 NAT Gateway를 사용하도록 설정됨.
  1. 두 번째 이미지:
  • Availability Zone이 두 개(AZ A, AZ B)
  • NAT Gateway 대신 NAT Instance 사용
  • Main Route Table에서 NAT Instance를 사용하도록 설정됨.

어떤 아키텍처가 맞을까?!

둘 다 유효한 아키텍처지만, NAT Gateway 사용 시 일반적으로 AZ마다 하나씩 배포하는 것이 Best Practice다. 즉, 첫 번째 그림처럼 Availability Zone이 하나인 경우 NAT Gateway를 하나만 두는 것이 맞다.
하지만 두 개 이상의 AZ가 있다면, 각 AZ에 NAT Gateway를 배포하는 것이 권장됨.

왜 AZ마다 NAT Gateway를 배포해야 할까?

  • 고가용성(High Availability): NAT Gateway가 하나만 있으면 해당 AZ에서 장애가 발생할 경우 Private Subnet이 인터넷에 접근하지 못하게 됨.
  • 비용 고려: NAT Gateway는 시간당 과금되므로 AZ마다 배포하면 비용이 증가하지만, 장애 대응 능력이 향상됨.

결론

  • 첫 번째 그림: AZ가 하나라면 올바른 구성.
  • 두 번째 그림: NAT Instance를 사용하는 방식이지만, AZ가 두 개인데 NAT Gateway가 하나뿐이라면 Best Practice가 아님.
  • AZ가 여러 개라면 각 AZ에 NAT Gateway를 배치하는 것이 더 좋은 설계.
  • 비용을 절감하려면 NAT Instance를 대신 사용할 수 있지만, 관리 부담이 커짐.

1.5. Security Group & Nerwork ACL

ACL 과 Security Group (보안그룹)은 네트워크의 보안을 설정하는 것.
방화벽과 같은 역할을 하며, 트래픽에 대한 보안정책을 설정할 수 있다.

Security Group (보안그룹)

  • 인스턴스 기준으로 적용
  • 룰에 대한 허용 규칙만 적용
  • 아웃바운드(내 서버에서 다른 서버로 하는) 요청에 대한 응답 자동 허용

ACL

  • EC2 인스턴스가 아닌 서브넷을 기준으로 적용
  • 룰에 대한 허용 및 거부 규칙 적용
  • 아웃바운드 요청에 대한 응답 규칙 적용 필요

실제로 우리가 EC2인스턴스를 만드려면
AWS 안에/ Region 안에/ VPC 안에/ 어떤 서브넷 안에/ 만들어야 한다.

이 EC2는 망에 대한 보안 규칙을 두 가지로 설정할 수 있다.
1. Security Group : EC2와 연결되어 있다.
한 서브넷 안에 있는 EC2 여러개 적용 가능하고 각 인스턴스에 대해 적용할 수도 있다.

  1. 네트워크 ACL : 서브넷 안에 있는 게 아니라 밖에 있고 라우트 테이블과 정보를 주고 받는다.
    연결된 서브넷에 대해서 인바운드/ 아웃바운드 허용 설정 할 수 있음.
    물론 여러 서브넷이 같은 네트워크 ACL을 공유할 수 있음. (1대N 관계)

1.6. Available Zone

Region 이란?


Amazon 은 세계 각지의 여러 곳에서 호스팅되고 있다.
위치는 Region, Availability Zone 으로 구성된다.

여러 곳에 그 실제 물리적 서버 PC가 (데이터 센터가) 위치하는 곳으로 이해하자.

Region 을 선택하는 이유?

• 응답속도는 AWS 센터와 이벤트 어플리케이션에 접속하는 사용자가 지리적으로 가까울수록 빠르며 멀수록 느리다.
• 예를들어 국내에 거주하는 사용자를 대상으로 하는 어플리케이션의 응답 속도를 빠르게 하고 싶다면 서울 리전을 선택해야된다.
• AWS 서비스 요금은 리전에 따라 다르다.
예를 들어 가상 서버인 EC2 타입 중 하나인 t2.medium 인스턴스는 미국 동부가 서울보다 저렴하다. 인터넷 데이터 전송 요금도 마찬가지이다. 응답속도보다 비용이 중요하다면 미국 동부 리전이 유리하다.

기지국들을 통해서 데이터가 왔다 갔다 할 텐데, 내가 요청한 기지국의 위치가 영향을 미친다.
빠른 응답 시간을 원하거나 사용자가 많을 때 위치에 기반한 응답속도가 굉장이 큰 영향을 미침.

AWS센터 <> 이벤트 어플리케니션 접속한느 사용자가 지리적으로 가까울 수록 빠르고 멀면 느리다.

Availability Zone (가용영역) 이란?

  • 하나의 Region 안에는 장애로 격리된 여러개의 데이터 센터가 존재하는데 이를 Availability Zone
    이라고 한다.
  • Availability Zone 안의 노드끼리는 전용선을 이용해 데이터를 빠르게 전송할 수 있다.
    2022년 기준 서울리전에는 4개의 Availability Zone 이 있다.

한 곳에 모든 컴퓨터가 몰려있을 때, 해장 지역에 화재 등의 문제가 생기면 모든 서버가 장애가 나고 대부분 AWS 서울 Region을 쓰는 국내 많은 서비스들이 동시 장애가 날 수 있기 때문에 방지 대책을 세우기 위해 물리적으로 다른 데이터센터가 여러개 존재한다.
Availability Zone끼리는 한 AZ가 장애가 나면 다른 AZ에 빠르게 복구가 되던지 트래픽을 연결해줘야 되기 때문에 전용 선을 깔아서 데이터를 빠르게 전송할수 있다. (물리적으로 ?키로미터 정도 떨어져야 한다는 규칙이 있다..?)

Availability Zone(가용영역) 을 나누는 이유

  • 각 가용영역은 다른 가용영역의 장애로 부터 격리될 수 있다.
  • 자연재해 또는 단층선에 문제가 발생해 하나의 가용영역에 문제가 생겨도, 다른 가용영역을 통해 서비스가 가능하다.
  • 데이터를 가용영역 전반적으로 백업하여, 데이터센터의 장애에 대응할 수 있다.
profile
Data Analytics Engineer 가 되

0개의 댓글