Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
Cloud Formation
리전에 장애가 발생한다면, 서비스를 GUI 콘솔로 하나하나 다시 생성하는 것은 상당히 긴 시간이 걸린다.
따라서 인프라 세팅을 IaC와 같은 템플릿 코드화 해서, 장애 발생 시 해당 코드를 그대로 실행할 수 있도록 세팅하도록 해야 한다.
보통 Terraform과 같은 서드 파티를 사용하지만, AWS에서 지원하는 Cloud Formation을 사용할 수도 있다.
이러한 IaC의 장점은 다음과 같다.
1. 형상 관리가 편리하다.
형상 관리로 이전 버전을 저장하고 수정한다.
변경 코드를 실행하면, 변경된 내용들만 그대로 적용된다.
2. 테스트 환경 세팅
테스트 환경을 프로덕션 환경과 똑같이 세팅하고, 테스팅 후 지우기에 편리하다.
3. 장애 대응에서 빛을 발한다.
위에서 언급한 것처럼, 리전이 다운되었을때 근처 리전에 바로 실행해서 동일한 서비스 세팅이 가능하다.
서비스를 바로 실행해 주는 Beanstalck도 cloud formation을 통해 생성된다고 한다.
구성 요소
Cloud Formation 템플릿
Yaml이나 Json으로 작성된 코드
최근에는 Json보단 Yaml을 많이 사용한다.
코드는 당연히 분류를 진행해서 다른 코드가 import를 통해 쓸 수 있게 만들 수 있다.
Stack
코드에 의해 생성된 자원들의 그룹
CloudFormation Yaml 문법
VPC 생성
Internet Gateway 생성
인터넷 게이트웨이는 AWS 측에서 scalin out, 이중화로 고가용성을 제공한다. 또한 대역폭 문제도 발생하지 않는다.
따라서 유형이 별도로 존재하지 않으므로, 바로 생성해 준다.
Public subnet 생성 후 IGW 연결
결과 설정
CloudFormation 스택 생성
스택 생성에 템플릿 코드를 업로드해서 생성이 가능하다.
기본적인 VPC 네트워크를 세팅하는 yaml 코드를 업로드해보자.
IP가 하드코딩 되어있어서 파라미터를 입력하지 않는다.
입력을 받도록 만들면, 아래의 파라미터 창에서 입력을 해주어 세팅할 수 있다.
이렇게 생성하면 금방 모든 자원이 세팅된다.
리소스를 확인해 보면, 기본적인 VPC와 Public Subnet이 세팅된다.
업데이트 진행하기
업데이트로 subnet을 추가하는 문법을 추가하면, 수정된 리소스에 한에서만 생성/수정이 진행된다.
CloudFormation Desiner확인하기
우리가 생성한 리소스들이 어떻게 결합되고 있는지 GUI로 제공하기도 한다.
각각의 compoment의 정보도 확인된다.
아무래도 Yaml는 개발자 친숙하지 않기 때문에 프로그래밍 언어로도 IaC를 지원하는 CDK도 존재한다.
또는 이러한 yaml 생성을 도와주는 오픈소스인, AWS 솔루션 라이브러리도 제공이 된다.
https://aws.amazon.com/ko/solutions/?awsm.page-featured-solutions-homepage=3
(하나를 확인해 보니 yaml이 만 줄 넘는다..)
'Cloud > AWS' 카테고리의 다른 글
AWS CloudFront에 S3 파일 배포 & 속도 확인 (0) | 2024.03.26 |
---|---|
AWS 다른 리전 간의 VPC Peering 설정하기 (0) | 2024.03.25 |
AWS NAT Gateway 이중화의 필요성 (0) | 2024.03.25 |
AWS NAT Gateway를 Private Subnet과 연결하기 (0) | 2024.03.21 |
AWS CLI로 S3 버킷 생성 후 파일 업로드하기 (0) | 2024.03.21 |