[AWS] AWS를 제어하는 방법

2022. 5. 1. 15:20✅ STUDY/AWS

안녕하세요 :)

오늘은 AWS를 제어하는 4가지 방법에 대해 간단히 설명드리려 합니다.


AWS를 제어하는 방법

AWS를 제어하는 방법에 대해 아시나요?
아래의 그림과 같이, 4가지의 방법으로 AWS를 제어할 수 있답니다!


level 0) console 기반 작업

익숙한 AWS Console에서 "클릭" 기반으로 작업하는 것을 말합니다.
쉽게 시작할 수 있다는 장점이 있으나, 반복이나 대량 작업에는 적합하지 않고 비효율적 일 수 있습니다.



level 1) Script 기반으로, SDK나 CLI


스크립트를 만들어 AWS SDK(Software Development Kit)나 AWS CLI를 사용하는 방법입니다.
AWS SDK를 사용해 다양한 파라미터를 지정해주고 정해진 함수를 돌리거나, 터미널에서 CLI를 사용해 제어할 수 있습니다.
AWS의 모든 서비스를 지원하기 때문에 손쉽게 제어가 가능합니다.


하지만, 문제가 발생하여 다시 시도해야 하는 경우에 두 사람이 스크립트를 동시에 실행하려고 하면 race condition이 발생할 수 있습니다.
또한, 리소스의 현재 상태 확인이 어려우며 문제 발생 시 원복이 힘듭니다.

* race condition: 한사람이 코드 돌릴 때 다른 사람이 실행하는 타이밍을 통해, 충돌날 수 있다는 것

AWS CLI 예시(VPC 생성)

aws ec2 create-vpc --cidr-block 10.0.0.0/16


level 2) (프로비저닝 엔진 사용) AWS CloudFormation, HashiCorp Terraform

 


이 방법은 IaC(Infrastructure as Code)로 분류되며, 코드를 통해 인프라를 관리하고 프로비저닝하는 것 입니다.

AWS CloudFormation 이란 ❓

AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스 입니다.
본인이 만들고 싶은 파라미터와 리소스를 템플릿(YAML/JSON)으로 정의해두고, AWS Console - CloudFormation에 업로드 하면, 해당 서비스가 템플릿을 읽고 정의된 리소스에 해당하는 API를 호출해 필요한 인프라를 프로비저닝 합니다.


[특징]

  • YAML 또는 JSON으로 리소스를 정의하기 때문에 친숙합니다.
  • 자동화 구현에 용이하며, 반복 작업에 적합합니다.
  • 변경 사항이 생겨 cloudformation을 업데이트하다가 에러가 나면 자동으로 이전의 정상 상태로 롤백됩니다.
  • 템플릿(YAML/JSON)을 가지고 여러 리전에 배포하거나 복제가 편리합니다.
  • 템플릿을 버전 별로 관리할 수 있어, 인프라를 형상 관리 가능합니다.


level 3) (DOM기반) AWS CDK

AWS CDK란 ❓

AWS 클라우드 개발 키트(CDK)는 현대적 프로그래밍 언어를 사용하여 클라우드 인프라를 코드로 정의하고 AWS CloudFormation을 통해 배포하는 오픈 소스 소프트웨어 개발 프레임워크


CDK 예시(VPC 생성)

const vpc = new ec2.Vpc(this, 'TheVPC', {
   cidr: "10.0.0.0/16"
})


[특징]

  • 친숙한 프로그래밍 언어로 작성합니다. (Typescript, Javascript, C#, Java, Python 지원)
  • 단일 구성으로 한 번에 많은 기본 AWS 리소스 생성이 가능합니다.
  • 각 스택은 코드의 간단한 클래스인 "construct"로 구성됩니다.
  • 여전히 선언적이기 때문에, create 및 update를 처리할 필요가 없습니다.

[장점]

  • IDE 내에서 코드를 작성하기 때문에, 인프라를 정의할 때 논리(if 문, for 루프 등) 사용 가능합니다.
  • 객체 지향 기술을 사용하여 시스템 모델 생성 가능합니다.
  • 높은 수준의 추상화를 정의하고 npm을 사용하여 공유합니다.
  • 프로젝트를 논리적 모듈로 구성 가능합니다.
  • 인프라를 라이브러리로 재사용 가능합니다.


AWS 제어하는 4가지 방법과 더불어 AWS CDK에 대해 간단히 알아봤습니다.
다음에는 AWS CDK를 실제로 실습해보면서 자세히 알아보겠습니다. 🎈


참고) https://aws.amazon.com/ko/cdk/faqs/
https://www.youtube.com/watch?v=zIZ6_tYujts&t=208s
https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/Welcome.html