☁️ AWS CloudFormation
CloudFormation이란, 모든 리소스에 대해 AWS 인프라의 개요를 설명하는 선언적 방법이다.
CloudFormation 템플릿을 통해 어떤 요소들이 필요한지 설명하면,
CloudFormation은 사용자가 특정한 구성을 정확하게 올바른 순서대로 만들어준다.
✅ CloudFormation의 장점
- 코드로서의 인프라 : 어떠한 리소스도 수동으로 만들지 않으므로 제어하기에 좋으며, 인프라의 변경점은 코드를 통해 검토하게 된다.
- 비용 측면 : 스택 내부의 각 리소스들은 식별자로 태그되기 때문에, 스택 비용이 얼마나 나오는지 쉽게 확인할 수 있으며, CloudFormation 템플릿을 이용해 리소스의 비용을 추정할 수도 있다. 또한, 저축 전략을 세울 수도 있다.
- 생산성 측면 : 클라우드에서 즉석으로 인프라를 없애거나 재창조할 수 있으며, 템플릿을 위한 다이어그램을 자동으로 생성해주고, 선언적 프로그래밍이 가능하다.
- 웹에 존재하는 템플릿이나, 문서를 활용할 수 있으므로 기존에 만들어져있는 것을 다시 만들 필요가 없다.
- 거의 모든 AWS 리소스를 지원한다.
👨🏻🎨 CloudFormation Stack Designer
WordPress CloudFormation Stack등이 있으며, 모든 자원과 요소들 사이의 관계를 볼 수 있다.
🧳 AWS Cloud Development Kit (CDK)
CDK는 친숙한 프로그래밍 언어를 사용해 클라우드 인프라를 정의하기 위한 프레임워크이다.
작성한 코드는 JSON/YAML과 같은 CloudFormation 템플릿으로 컴파일되기 때문에,
사용자는 인프라와 애플리케이션 런타임 코드를 함께 배포할 수 있다.
Lambda 함수 및 ECS/EKS에 속한 도커 컨테이너에 사용하면 좋다.
🫛 AWS Elastic Beanstalk
Elastic Beanstalk란 개발자 중심 관점에서의 AWS 애플리케이션 배포 서비스로,
EC2, ASG, ELB, RDS 등 모든 AWS 요소들을 사용하는 PaaS 서비스이다.
Elastic Beanstalk는 많은 플랫폼을 지원하고, 인스턴스 구성 및 운영체제 관리, 배포 전략 수행,
용량 공급, 부하 분산 및 자동 스케일링, 앱 상태 모니터링을 수행하는 완전관리형 서비스이며,
애플리케이션 코드만이 유일한 개발자의 책임이다.
✅ Beanstalk의 세가지 아키텍쳐 모델
- Single Instance deployment : 개발에 유용함
- LB + ASG : 웹 애플리케이션 제작 및 사전 제작에 유용함
- ASG only : 웹 형태가 아닌 애플리케이션 제작에 유용함
🧑🏻💻 AWS Code Services
💻 AWS CodeDeploy
CodeDeploy는 응용프로그램을 자동으로 배포하는 방법으로,
많은 EC2 인스턴스들 및 on-premises 서버와 작업하는 하이브리드 서비스이다.
CodeDeploy 사용을 위해선 CodeDeploy 에이전트를 통해 서버와 인스턴스를 미리 구성하고 공급해야 한다.
💻 AWS CodeCommit
애플리케이션 코드를 서버에 푸시하기 전에는 어딘가에 코드를 저장해야 하며,
개발자들은 종종 코드를 Git과 같은 레포지토리에 저장한다.
AWS에서는 이러한 저장소로 CodeCommit 서비스를 제공한다.
AWS CodeCommit은 Git 기반 레포지토리를 위한 소스 컨트롤 서비스로,
다른 사람들과 코드 협업을 하기 쉽게 도와주고 코드 변경을 자동적으로 버전화 해준다.
CodeCommit의 장점
- 완전관리형 서비스이다
- 확장성과 고가용성을 제공한다.
- 개인적이고 안전하며, AWS 서비스와 통합될 수 있다.
💻 AWS CodeBuild
CodeBuild는 클라우드 환경에서의 코드 작성 서비스를 제공한다.
소스코드를 컴파일하고, 테스트 실행하며, 배포 준비가 된 패키지를 생산한다.
CodeBuild의 장점
- 완전관리형 서버리스 서비스이다.
- 지속적으로 확장가능하며, 고가용성을 제공한다.
- Pay-as-you-go 가격 정책을 사용한다.
💻 AWS CodePipeline
CodePipeline은 코드가 자동으로 제품에 푸시될 수 있도록 다양한 단계를 조율해주는 서비스로,
CICD(Continuous Integration & Continuous Delivery)의 기초가 된다.
CodePipeline의 장점
- 완전관리형 서비스로, AWS의 다양한 Code 관련 서비스들 및 GitHub과 같은 서드파티 서비스와 호환 가능하다.
- 빠른 전달과 업데이트가 가능하다.
💻 AWS CodeArtifact
소프트웨어 패키지는 서로 의존을 통해 구축되어 새로운 패키지가 생성된다.
이러한 코드 종속성을 저장하고 회수하는 과정을 아티팩트 관리라고 하며,
자신만의 아티팩트 관리 시스템을 구축해야 한다.
CodeArtifact는 소프트웨어 개발을 위한 안전하고 확장가능하며, 비용 효율적인 아티팩트 관리 서비스이다.
Maven, Gradle, npm과 같이 자주 이용되는 종속성 관리 도구와 작동한다.
개발자들과 CodeBuild 서비스는 CodeArtifact에서 직접 종속성을 검색할 수 있다.
💻 AWS Codestar
Codestar는 모든 개발 활동을 한 곳에서 쉽게 관리할 수 있도록 해주는 통합된 UI로,
AWS 코드 관련 서비스들의 정확한 세팅을 시작하기 위한 빠른 방법이다.
AWS Cloud9을 사용하여 클라우드 상에서 코드를 수정할 수 있다.
☁️ AWS Cloud9
Cloud9은 코드 작성, 실행, 디버깅을 위한 클라우드 IDE이다.
클라우드 IDE는 웹 브라우저를 통해 사용이 가능하므로, 프로젝트 작업을 어디서든 할 수 있게 해준다.
Cloud9는 실시간 코드 협업도 가능하게 해준다.
👮🏻♂️ AWS Systems Manager (SSM)
SSM은 EC2와 on-premise 시스템을 규모에 맞게 관리할 수 있도록 돕는 하이브리드 AWS 서비스이다.
사용자 인프라의 상태에 대한 운영적인 인사이트를 얻을 수 있으며, 10개 이상의 제품에 접근할 수 있도록 해준다.
SSM을 사용하기 위해선 제어할 시스템에 SSM 에이전트를 설치해야하며,
인스턴스가 SSM에 의해 제어되지 않는다면 SSM 에이전트에 문제가 있을 수 있다.
✅ SSM의 주요 기능들
- 향상된 호환성을 위한 패치 자동화가 가능하다.
- 전체 서버군에 명령을 내릴 수 있다.
- 매개변수 구성을 SSM Parameter Store에 저장할 수 있다.
👮🏻♂️ SSM Session Manager
SSM Session Manager는 EC2나 on-premise 서버에서 보안 셸을 실행할 수 있도록 해준다.
SSH 엑세스, 배스천 호스트, SSH 키를 필요로 하지 않으며,
그 말은 EC2 인스턴스의 22번 포트를 필요로 하지 않는다는 의미이다.
또한 S3이나 CloudWatch Logs에 세션 로그 데이터를 전송한다.
📦 SSM Parameter Store
SSM Parameter Store는 환경설정과 기밀을 안전하게 저장하기 위한 저장소이다.
확장가능하고, 영속성을 가지는 서버리스 서비스이며, 사용하기 쉬운 SDK이다.
또한 IAM을 사용한 엑세스 권한을 관리 및 버전 추적과 암호화가 가능하다.