CICD
Continuous Integration
- 지속적 통합
- 개발자들은 보통 코드를 작성할 때 코드를 리포지토리에 둡니다.
- AWS에서는 CodeCommit을 씁니다.
- 그 뒤에 코드가 푸시되자마자 체크하고 테스트를 할 테스팅 서버나 빌드 서버가 있어야 합니다.
- 유명한 도구
Jenkins
, AWS에선 CodeBuild
- 코드를 받아 빌드하고 테스트하는 도구
- 그래야 개발자들이 테스트에서 피드백을 얻고 테스트 통과 여부를 알 수 있습니다.
- 코드가 테스트되는 대로 빠르게 전달하고 자주 배포할수록
개발자들은 워크플로우에서 막히지 않기 때문에 행복할 겁니다.
Continuous Delivery
- 지속적 배포
- 생성되고 빌드 된 소프트웨어가 안정적으로 릴리스 되도록 확실히 하는 것
- AWS 내 기술은
CodeDeploy
, Jenkins CD Spinnaker
등
Technology Stack for CICD
Infrastructure as Code
- 현재는 수동 작업을 많이 했는데요 모든 걸 하나하나 만들어서 재생산하기가 쉽지 않습니다.
- 때문에 다른 리전이나 계정에서 또는 동일 리전이지만 모든 데이터가 삭제됐을 경우 동일 작업을 다시 하기 쉽지 않습니다.
- 만약 우리의 모든 인프라가 코드로 되어 있으면 어떨까요?
- 만약 어떤 코드를 항상
배포
하고, 생성
하고 업데이트
하고, 삭제
하는 것으로 인프라를 개선할 수 있다면 어떨까요?
그게 바로 코드형 인프라
의 개념입니다
- 모든 리소스에 대한 AWS 인프라를 선언형으로 구성할 수 있는 방법이고 리소스의 대부분은 지원됩니다.
EX)
보안 그룹을 이용할 EC2 머신 두 개
이 머신들이 이용할 두 탄력적 IP
S3 버킷과 NLB가 필요하다고 적고
CloudFormation 템플릿에서
이 모든 사항을 지정하고 CloudFormation에서 실행하면
- CloudFormation은 사용자가 지정한 정확한 구성으로 올바른 주문으로 이러한 데이터를 생성합니다.
- 좋은 점 :
코드형 인프라
이기 때문에
- 어떤 리소스도 수동으로 만들 필요 없어 제어하기가 쉽습니다.
- Git 등을 통해 버전을 관리할 수 있습니다.
- 인프라의 변화는 코드를 통해 검토됩니다.
비용
- 스택 내의 각 리소스가 CloudFormation 식별자로 태그되어 전체 CloudFormation 스택의 비용이 얼마나 될지 쉽게 알 수 있습니다.
- CloudFormation 템플릿을 사용해 리소스 비용을 예측하는 기능도 있습니다.
- 비용 절감 전략으로서 Dev 내에서 자동으로
모든 템플릿을 오후 5시에
삭제
할 수 있으며
오전 8시
에 안전하게 재생성
할 수 있습니다
생산성
- 클라우드에서 인프라를 삭제하고 재생성할 수 있게 되고 템플릿에 대한 도표를 자동 생성할 수 있습니다.
- PowerPoint 자료를 생성할 때 유용합니다.
- 선언형 프로그래밍이 가능해 순서나 오케스트레이션 등을 알 필요가 없습니다.
관심 분리
- 원하는 만큼 스택을 생성할 수 있습니다.
- 보통 한 애플리케이션에 한 스택과 여러 레이어가 필요합니다.
- 시간을 낭비할 필요 없이 웹의 기존 템플릿을 활용하거나 참고 자료를 활용할 수 있습니다.
템플릿
을 S3
에 업로드한 뒤 CloudFormation
에서 참조합니다.
템플릿
을 업데이트할 때는 이전 것을 편집할 수 없고 템플릿의 새 버전을 AWS에 재업로드해야 합니다.
- 해당
CloudFormation 스택
은 이름
으로 식별됩니다.
- CloudFormation에서 스택을 지우면 그 스택으로 만들어진 모든 것이 삭제됩니다.
-
Manual way
- 템플릿을 수정하고 콘솔로 매개 변수 등을 넣습니다.
-
Automated way
- YAML 파일에서 템플릿을 수정합니다.
- 전체 자동화를 원한다면 CLI를 사용해 템플릿을 배포할 수 있습니다.
Resources (리소스)
: 필수 요소이며 이는 템플릿에서 사용될 AWS 리소스를 선언합니다.
Parameters (매개변수)
: 템플릿에 동적 입력이 필요할 때 쓰입니다.
Mappings
: 템플릿의 정적 변수
Outputs (출력)
: 생성된 것에 대한 참조
Conditionals (조건)
: 리소스를 생성할 조건 목록
Metadata
++
- 여러 리전과 계정을 통틀어
CloudFormation 스택
을 생성
, 업데이트
, 삭제
하게 해주는 고급 기능
입니다
관리자
가 StackSets를 생성해야 합니다.
- 거기서
스택 인스턴스
를 생성
, 업데이트
, 삭제
할 수 있는 신뢰된 계정
을 정해야 합니다.
- StackSets를 업데이트하면 모든 계정과 리전 내의 관련 스택 인스턴스가 전부 업데이트됩니다.
- 여러 리전과 여러 계정을 관리하는 CloudFormation의 관리 포탈 같은 것입니다.
CloudFormation 스택의 글로벌, 계정 간 배포
코드형 인프라를 갖추거나 다른 환경에서 스택을 재생산할 때 아주 유용한 서비스입니다.
AWS Step Functions
AWS Step Functions
- 람다 함수를 오케스트레이션 할 서버리스 비주얼 워크플로우를 만드는 방법입니다.
- 모든 흐름은 JSON
상태 머신
으로 표현됩니다.
범용성
이 좋습니다.
람다 함수 시퀀스 병렬 람다 함수 조건, 시간 초과, 오류 처리 등을 사용할 수 있습니다.
EC2
, ECS
, 온-프레미스 서버
, API 게이트웨이
같은 다른 서비스와 통합도 가능합니다.
- 최대 실행 시간은
1년
입니다.
수동 승인 기능
도 구현할 수 있습니다. 까다롭지만,
- 사용 :
- 주문 처리
- 데이터 처리 또는 웹 애플리케이션
- 모든 워크플로우
AWS SWF – Simple Workflow Service
- 애플리케이션 간 작업도 조정할 수 있습니다.
서버리스
가 아닙니다.
- 최대 실행 시간은
1년
입니다.
활동 단계(activity step)
와 결정 단계(decision step)
라는 개념이 있습니다.
- 내장된
인간 관여 단계
가 있습니다.
- 웹에서 웨어하우스, 웨어하우스에서 배달까지 주문 처리 기능이 있습니다.
- 단계 함수와 SWF의 차이는 후자가 이전에 나왔다는 겁니다.
- 참고서와 FAQ 모두 새 애플리케이션에는 단계 함수 사용을 권장합니다.
이 때를 제외하고,
- 과정에 개입하기 위한 외부 시그널이 필요할 때
- 하위 과정이 상위 과정에게 값을 반환하게 할 때
Amazon EMR
- Elastic MapReduce
- EMR은 빅데이터에 사용되는 Hadoop 클러스터를 생성합니다.
- 빅데이터는 많은 양의 데이터를 분석 및 처리하는 데 사용됩니다.
- EMR로 생성하는 클러스터는 수백 개의 EC2 인스턴스로 구성될 수 있습니다.
Spark
, HBase
,Presto
, Flink
등의 엔진을 지원합니다.
- 모든 것을 프로비저닝하고 모든 것을 구성한다는 겁니다.
- EMR과 작동하는 오토 스케일링이 있습니다.
- 스팟 인스턴스로 통합되어 있습니다.
- 사용 :
AWS Opsworks
Chef
와 Puppet
은 오픈 소스 소프트웨어로 자동으로 서버를 구성하거나 반복 작업을 수행할 수 있게 해주는 도구입니다.
EC2
및 온프레미스 VM
과 궁합이 좋습니다.
- AWS Opsworks는 관리형 Chef, Puppet과 같습니다.
AWS SSM
의 대안과 같다고 봅니다.
- 비슷한 작업을 여러 번 수행할 수 있게 해줍니다.
- Chef, Puppet을 필요하다 -> AWS Opsworks를 사용한다.
Chef / Puppet
- 두 소프트웨어는 구성을 코드로 관리하게 합니다.
- 지속적으로 배포를 할 수 있게 돕습니다.
Linux
, Windows
에서 사용 가능합니다.
사용자 계정
, Cron 작업
, NTP 패키지
, 서비스
등 여러 가지를 자동화할 수 있습니다.
Chef
에서는 Recipe
Puppet
에서는 Manifest
- 두 소프트웨어는
SSM
, Beanstalk
등과 비슷합니다.
Chef
와 Puppet
을 AWS에서 이용하는 이유는 오픈 소스 소프트웨어이기 때문에 다른 클라우드에서 작동이 가능합니다.
AWS WorkSpaces
AWS WorkSpaces
는 관리형 보안 클라우드 데스크톱 서비스입니다.
- 기본적으로는 온프레미스에서 VDI, 즉 가상 데스크톱 인프라를 프로비저닝하는 것입니다.
- 온 디맨드
- 사용량만큼 청구됩니다.
안전
하고 암호화
되고 네트워크
가 격리됩니다.
- Microsoft의 액티브 디렉터리와 통합됩니다.
AppSync
- 실시간으로 모바일 및 웹 애플리케이션 간 데이터를 저장하고 동기화하는 서비스입니다.
- 모바일과 웹 애플리케이션 사이의 데이터를 실시간으로 동기화합니다.
GraphQL
을 사용합니다.
- 기본적으로
AppSync
는 관리형
GraphQL
입니다.
- 클라이언트 코드가 자동으로 생성될 수 있습니다.
DynamoDB
및 Lambda
와 통합됩니다.
- 실시간 구독
- 오프라인 데이터 동기화
Cognito Sync
대체
- 세분화된 보안이 가능해집니다.
Cost Explorer
- AWS 비용 및 시간에 따른 사용량을 시각화하고 이해하며 관리하는 데 사용됩니다.
- 사용자 정의 보고서를 생성해서 비용과 사용량 데이터를 분석할 수 있습니다.
- 전체적인 데이터를 분석할 수 있습니다.
- 전체 계정 간 총비용 및 사용량 등
- 매달, 매시간 혹은 리소스 레벨의 세부 단위
- 청구서 요금을 낮추기 위한 최적의 절감형 플랜을 선택할 수 있기 때문에 비용을 절약할 수 있습니다.
- 향후 12개월까지의 사용량을 예측할 수 있습니다.
AWS Trusted Advisor
- 사용자는 계정을 분석하고 권장사항을 제공받기 위해 AWS로부터 높은 수준의 계정 평가를 받으려고 할 때 사용합니다.
- 사용자 계정에서 다섯 가지 범주의 문제를 분석합니다.
비용 최적화, 성능, 보안, 내결함성, 서비스 할당량
- 첫 번째 티어는 모든 고객에게 핵심 검사와 권장사항을 제시합니다.
- 계정을 개선하기 위해 무엇을 할 수 있는지에 관한 정보를 전달하는 기본 검사입니다.
- 콘솔에서 직접 Trusted Advisor의 주간 이메일 알림을 받기 때문에 매주 원활하게 추적할 수 있습니다.
비즈니스나 기업의 지원 플랜
- Trusted Advisor의 기능을 전부 사용하고 싶을 때 합니다.
- 전체 기능을 사용하면 서비스 제한에 도달할 경우 CloudWatch 경보를 설정할 수 있습니다.
- Trusted Advisor에
프로그래매틱 액세스
할 수 없어요.
Trusted Advisor Checks Examples
- 비용 최적화
- 활용도 낮은 EC2 인스턴스
- 작동되지 않는 로드 밸런서
- 활용도 낮은 EBS 볼륨
- 예약 인스턴스 및 절감형 플랜 최적화를 표시합니다.
- 성능
- 활용률이 매우 높은 EC2 인스턴스에 대한 정보를 얻을 수 있습니다.
- CloudFront CDN 최적화 정보도 얻을 수 있습니다.
- EC2를 EBS에 연결하여 얻을 수 있는 성능 및 최적화를 보여줍니다.
- DNS에 대한 Alias 레코드 권장 사항을 보여줍니다.
- 보안
- 루트 계정의 MFA 활성화 여부를 확인할 수 있습니다.
- 최근에 IAM 키가 교체되었는지 또한 IAM 액세스 키가 노출되었는지 볼 수 있습니다.
- S3 버킷 권한에 관련한 보안 문제를 보여줄 것입니다.
- 내결함성
- EBS 스냅샷 수명
- 서로 다른 AZ의 균형
- 오토 스케일링 그룹과 RDS 그리고 ELB가 모두 다중 AZ인지 아닌지 알려줍니다.
- 서비스 할당량
- 특정 서비스가 할당량에 도달했는지 알 수 있습니다.
요약
CodeCommit
- 코드를 저장할 수 있는 서비스입니다. 유사한 서비스는 GitHub입니다.
CodeBuild
- CICD 파이프라인에서 서비스 구축 및 테스트
CodeDeploy
- 패키지된 코드를 EC2 및 AWS Lambda에 배포
CodePipeline
- CICD 파이프라인의 작업 조정(구축 단계, 수동 승인, 많은 배포 등)
CloudFormation
- AWS를 위한 코드로서의 인프라. 리소스를 관리, 생성 및 업데이트하는 선언적 방법입니다.
ECS(탄력적 컨테이너 서비스)
- AWS의 Docker 컨테이너 관리 시스템. 마이크로 서비스를 만드는 데 도움이 됩니다.
ECR(탄력적 컨테이너 레지스트리)
- AWS의 Docker 이미지 리포지토리. Docker 이미지는 거기에서 Push 및 Pull 할 수 있습니다.
Step Function
- Lambda 함수 및 ECS 컨테이너를 워크플로로 오케스트레이션/조정
SWF(단순 워크플로 서비스)
- 대규모 워크플로를 오케스트레이션하는 오래된 방식입니다.
EMR(탄력적 맵 축소)
- EC2에 배포된 AWS의 빅 데이터 / Hadoop / Spark 클러스터
Glue
- AWS의 ETL(Extract Transform Load) 서비스
OpsWorks
ElasticTranscoder
- 다양한 최적화된 포맷으로 관리되는 미디어(비디오, 음악) 변환 서비스
Organization
- 여러 AWS 계정의 계층 구조 및 중앙 집중식 관리
Workspace
- 클라우드에서 주문형 가상 데스크톱. 기존의 온프레미스 VDI 인프라 대체
AppSync
SSO(싱글 사인온)
- AWS에서 관리하는 하나의 로그인으로 다양한 비즈니스 SAML 2.0 호환 애플리케이션(office 365 등)에 로그인
From
AWS Certified Solutions Architect Associate 시험합격!