수업 45일차 AWS 배포 , Auto Scaling , 로드밸런서

유동우·2022년 11월 20일
0

■ 배포 과정

소스 =(번역)=> 목적 =(빌드)=> 실행가능한 파일 =(배포)=> 실행

CI (continuous Deployment)
CI는 지속적 통합이라는 뜻으로 개발을 진행하면서도 품질을 관리할 수 있도록 하는 것으로
여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리할 수 있음을 의미한다

CI의 간단한 순서는 아래와 같다.

  1. 개발자가 구현한 코드를 기존 코드와 병합한다.
  2. 병합된 코드가 올바르게 동작하고 빌드되는지 검증한다.
  3. 테스트 결과 문제가 있다면 수정하고 다시 1로 돌아간다. 문제가 없다면 배포를 진행한다.

CD (Continuous Deployment)
이제 지속적 통합을 거친 코드에 대해서 신뢰할 수 있고 바로 배포할 수 있다.

CD는 지속적 배포로 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리하자는 개념으로 지속적 제공(Continuous Delivery)로 사용되기도 한다.

지속적 제공은 CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 github과 같은 저장소에 업로드하는 것을 의미한다.

지속적 배포는 이렇게 성공적으로 병합된 내역을 저장소뿐만 아니라 사용자가 사용할 수 있는 배포환경까지 릴리즈하는 것을 의미한다.

===========================

■ 블루/그린 배포를 위한 Auto Scaling 그룹 만들기

시작템플릿 Auto Scaling

aws08-exercise-lauch-template -> aws08-EXERCISE-GROUP-BLUE

aws08-exercise-lauch-template.beta -> aws08-EXERCISE-GROUP-GREEN

aws08-EXERCISE-GROUP-BLUE
가용영역 a,c
태그
Name aws08-exercise-group-blue
생성

■ 기존 버전의 코드 서비스하기

Auto Scaling에서
로드밸런싱 편집
대상그룹 선택
로드밸런스 생성하고
로드밸런스에 DNS주소 주소창에 치면
AWS exercise의 A project입니다. 뜸

■ 새로운 버전의 코드를 적용한 AMI와 시작 템플릿 생성

exercise-instance에 연결해서 들어가서
cd /var/www/aws-exercise-a
git pull
git checkout beta
cat app.js
sudo shutdown -h now

exercise-image-beta 만들기
exercise-instance에 우클릭 이미지생성후
exercise-image-beta 이미지 생성

시작 템플릿 생성
aws08-exercise-launch-template-beta
beta version
보안그룹 ssh,web

Auto Scaling 생성
aws08-EXERCISE-GROUP-GREEN
가용영역 a,c
태그
Name / aws08-exercise-group-green
생성하기

■ 로드 밸런서에 등록해 블루/그린 배포 진행하기

aws08-EXERCISE-GROUP-GREEN 편집하기
대상그룹에 aws08-exercise-target-group 추가

인스턴스에서 aws08-EXERCISE-GROUP-GREEN 종료하면
aws08-EXERCISE-GROUP-GREEN 새로 생기면서
로드밸런서 도메인주소 브라우저에 입력시
AWS exercise의 A project beta 버전입니다와 A project 번갈아 뜸

aws08-EXERCISE-GROUP-BLUE 편집
대상그룹 제거한 뒤 저장
브라우저에 로드밸런서 DNS주소치면 최신값인
AWS exercise의 A project beta 버전입니다. 뜸

aws08-EXERCISE-GROUP-BLUE 종료시
목표용량과 최소값을 0으로하면 종료됨.

===========================

■ 배포자동화

권한 <- 정책 <- 사용자 , 그룹 , 역할/인스턴스 프로파일

정책 , 사용자 <- 그룹

역할/인스턴스 프로파일 <- 서비스/다른 사용자 , EC2

profile
클라우드 엔지니어가 되고싶은 클린이

0개의 댓글