
용어정리
- 클래스가 없는 도메인간 라우팅 기법
- 이해하기 쉽고 효율적인 IP 할당 기법
표기방법
- IP주소/비트
- 10.0.0.0/24
- 10.0.0 ~ 에서 8비트(32 - 24) 만큼의 IP 대역을 뜻함
- 10.0.0.0 ~ 10.0.0.255
- 계산방법
사용하는 이유
- 인프라 관련 디버깅은 물리적 개념으로 접근해야하므로 문제 발생시 IP 기반으로 확인해야하는 경우가 있음
- IP 대역대에 따라서 인프라 설계 등을 할 수 있음
- 10.0.1.0/24 는 DB, 10.0.0.0/24 는 NODE 등
- 물리적으로 존재하는 데이터 센터

- 물리적으로 구분되어있으므로 서로 다른 AZ에 있는 경우 네트워크 비용이 발생한다.
- Virtual Private Cloud
- 논리적으로 격리된 가상 네트워크
Subnet
- VPC 사용하는 IP 주소 범위
- 논리적으로 구분되는 공간, 영역
- public, private 으로 구분됨
- VPC가 외부 인터넷과 통신할 수 있게 해주는 요소
- 서브넷 혹은 네트워크 트래픽이 전송되는 위치를 결정하는 규칙이 저장된 테이블

Nat-gateway
- private subnet 내부에 있는 요소들이 외부 서비스와 통신할 수 있도록 지원하는 네트워크 주소 변환 시스템
참고

IaC 소개
- Infrastructure as Code
- 코드로서 인프라를 관리하겠다.
IaC 를 사용하는 이유?
- 위에서 설명한 개념들은 모두 논리적, 추상적 개념들.
- 즉 이를 하나하나 이해하고 적용하려면 휴먼 리소스가 매우매우 많이 듬(= 실수 가능성 높아짐)
- 특히 클라우드의 등장으로 인해 사용하고 관리해야하는 인프라 소스가 매우 많아짐, 이를 사람이 일일히 관리하는것은 매우 힘든 사항 중 하나
vpc 를 만들고 subnet 을 만들어보자
using console

- 위 콘솔창에서 차례 차례 메뉴를 찾아가며 클릭하고 옵션 보고 해야한다.
- 이를 code 로 바꿔보면
resource "aws_vpc" "this" {
cidr_block = "10.0.0.0/16"
tags = merge(local.tags, {
Name = "main-vpc"
})
}
resource "aws_subnet" "public_subnets" {
count = length(var.availability_zones)
vpc_id = aws_vpc.this.id
map_public_ip_on_launch = true
cidr_block = cidrsubnet(aws_vpc.this.cidr_block, 8, count.index) // 10.0.x.0/24
availability_zone = element(var.availability_zones, count.index)
tags = merge(local.tags,
{ Name : "public-subnet-az-${element(var.availability_zones, count.index)}" }
)
}
장점
단점
- 사용하려는 IaC 의 syntax 등을 알아야한다
- 코드로 관리되는 만큼 기타 안전장치 등이 필요로 하다.
- 코드로 관리 된다 = 관리하기 쉽다 = 쉽게 삭제가 가능하다
- 이를 관리하기 위한 별도의 rule 등 관리포인트가 증가
결론
- 인프라 관련 작업은 가끔 하다보니 그때 당시의 컨텍스트 등을 잊어먹기 쉽다. 또한 만들고 지우고 하는 등의 관리하는 것도 콘솔에서 일일히 하는 것은 쉽지 않다.
- 그렇기에 인프라를 코드로서, 한번에 관리 할 수 있다는 포인트는 개발자 입장에서 매우 매력적인 요소라고 생각한다.
- 물론 코드이기에, 인프라를 다 날려버릴 수도 있지만 다르게 생각하면 한번에 만들어낼 수도 있다는 의미이기도 하다.
laC 위에 언급하신 대로 러닝 커브laC 위에 언급하신 대로 러닝 커브가 있지만 인프라 관리하기 편리한 기술인 것 같습니다. 잘 읽었습니다.가 있지만 인프라 관리하기 편리한 기술인 것 같습니다. 잘 읽었습니다.