이미지 출처: https://aws.amazon.com/ko/codedeploy/
AWS CodeDeploy는 Amazon EC2, AWS Fargate, AWS Lambda, 그리고 온프레미스 서버와 같은 다양한 컴퓨팅 서비스에 대한 애플리케이션 배포를 자동화하기 위한 서비스입니다. 여러 종류의 애플리케이션 콘텐츠를 배포하고 롤백할 수 있는 기능을 제공합니다.
코드, 웹 및 구성 파일, 실행 파일, 패키지, 스크립트, 멀티 미디어 파일 등과 같은 다양한 애플리케이션 콘텐츠를 거의 무제한으로 배포할 수 있습니다.
컴퓨터 네트워크에서 Heartbeat는 한 시스템이 다른 시스템에게 "나는 살아있다"는 것을 알리는 신호입니다. heartbeat 본래 뜻인 심장박동처럼 컴퓨터에서도 심장이 뛰는 것과 비슷한 방식으로 동작하기 때문에 이런 명칭이 붙었습니다.
AWS CodeDeploy를 통해 HeartBeat 애플리케이션을 배포하는 간단한 실습을 진행합니다.
Architecture
EC2에서 이름이 HeartBeat-Instance
인 인스턴스를 2개 생성합니다. Amazon Linux와 Ubuntu는 지겨우니, Windows를 선택합니다.
HeartBeat-Instance
Microsoft Windows Server 2019 Base
t2.large
Lab VPC
Public Subnet 1
Enable
Create security Group
Lab 2 SG
t2.large 과금 주의하시기 바랍니다.
ec2 인스턴스를 micro로 이용할 경우, 메모리가 부족한 현사이 발생할 수 있습니다. 해결 과정을 공유합니다.
rdp
My IP
EC2 인스턴스의 보안 그룹을 구성하여 특정 IP에서 원격 데스크톱(Remote Desktop Protocol) 접속을 허용합니다. 이 프로토콜은 원격으로 다른 컴퓨터의 데스크톱 환경에 접속하여 조작하고 제어하는 데 사용되는 프로토콜입니다.
EC2InstanceRole
Resource name
Enable resource-based IPV4 (A record) DNS requests
Enable
Agent를 설치하고 EC2를 띄웁니다.
사용자 데이터(User Data)는 EC2 인스턴스를 시작할 때 실행할 스크립트나 명령을 지정하는 기능을 가리킵니다.
AWS CodeDeploy Console을 사용하여 CodeDeploy가 소프트웨어 배포할 대상으로 배포 그룹을 생성합니다.
AWS CodeDeploy에 접속하여 Create Application을 선택합니다.
CodeDeploy-Demo
EC2/On-Premises
Agent 기반이기에 온프레미스 기반도 접근할 수 있습니다.
HeartBeat-Deployment이라는 이름의 배포 그룹을 생성합니다.
롤링 업데이트 설정도 가능하며, 다양한 배포 전략을 선택할 수 있습니다.
소스 코드를 올릴 S3를 생성합니다.
bucketName=heartbeat-codedeploy-artifacts-[your-initials]-[your-postal-code]
aws s3 mb s3://$bucketName
cd ~/environment/CodeDeployHeartbeatDemo
aws deploy push --application-name CodeDeploy-Demo --source HeartBeat-App --s3-location s3://$bucketName/HeartBeat-App.zip
aws deploy create-deployment --application-name CodeDeploy-Demo --deployment-group-name HeartBeat-Deployment --deployment-config-name CodeDeployDefault.AllAtOnce --description "Initial Deployment" --s3-location bucket=$bucketName,key=HeartBeat-App.zip,bundleType=zip
- CP 대신 왜 push를 사용하나요?
CP를 사용하게 되면 덮어쓰기가 됩니다. push를 하며 버전 관리가 되기 때문입니다.
배포의 상태를 빠르게 확인할 수 있습니다.
배포 세부 정보에서 특정 배포 작업에 대한 상세한 내용과 결과를 포함하며, 배포가 어떻게 수행되었는지, 성공적으로 완료되었는지 또는 문제가 발생한 경우 어떤 문제가 발생했는지를 파악하는 데 도움을 줍니다.
EC2 인스턴스에 접속하여 Windows 기반 서비스를 확인하는 과정을 보여줍니다.
PowerShell을 통해 서비스 로그를 확인하고 관련 정보를 조회합니다.
Service “AWSHeartbeat*”
Content C:\Logs\HeartBeatService.log -last 10
수정하고 재배포 해봅시다!
cd ~/environment/Updated-HeartBeat-App
echo $bucketName
aws deploy push --application-name CodeDeploy-Demo --source HeartBeat-App --s3-location s3://$bucketName/HeartBeat-App.zip
aws deploy create-deployment --application-name CodeDeploy-Demo --deployment-group-name HeartBeat-Deployment --deployment-config-name CodeDeployDefault.AllAtOnce --description "Updated Deployment" --s3-location bucket=$bucketName,key=HeartBeat-App.zip,bundleType=zip
Content C:\Logs\HeartBeatService.log -last 10
성공적으로 update한 것을 볼 수 있습니다.