-
[AWS] Code DeployAWS 2024. 2. 15. 19:53
Code Deploy (Automated Deployment) : 자동 배포
코드 커밋에 올린 새로운 기능들 및 코드 수정의 변화를 프로덕션에 알아서 적용
Code Deploy의 장점
★ 새로운 기능들의 빠른 배포
★ 소프트웨어 & 서버 다운 타임 ❌
엔드 유저 고객들은 서버나 프로그램을 사용하는데 전혀 불편함을 느끼지 못한다.
★ Manual 에러 ❌
Code Deploy 종류
★ Rolling 배포
프로덕션에서 돌아가고 있는 서버가 있고, 개발자들이 어떤 기능을 구현했고, 이를 프로덕션에 적용시키려한다.
만약 새로운 기능의 비중을 25%라 치면 첫 배포시 75%는 기존 프로덕션, 나머지 25%는 새로운 서버로 대체되는 것
또, 두번째 기능을 프로덕션에 한다면 이젠, 50%는 기존 프로덕션, 나머지 50%는 새로운 서버
⮕ 점층적인 배포
3개의 EC2 인스턴스가 돌아가고, 하나의 ELB로 묶여져서 관리되어짐.
ELB란 Elastic Load Balancer의 약자 : 알아서 서버의 부하를 줄이기 위해 골고루 트래픽을 포워딩 해주는 중추적인 역할
EC2 인스턴스 들의 version 이 0이라 가정.
개발자들이 새로운 version을 Rolling 배포 방식을 사용하고 런칭하려한다.
배포를 하기에 앞서 Code Deploy는 첫번째 인스턴스를 완전히 셧다운한다.
첫번째 인스턴스는 아예 사용되지 않기 때문에 서버의 수용력은 다소 줄어든다.
첫번째 서버가 비활성화 되었기 때문에 ELB 설정도 변경해줘야한다. 첫번째 서버의 요청을 없애야함
배포가 완성되었다면 Code Deploy는 새로운 version을 첫번째 인스턴스에 설치가 된다.
v0 ⭢ v1 업데이트가 되고 셧다운이 재가동이 된다.
똑같은 방식으로 두번째 인스턴스도 배포한다.
나머지 인스턴스도 마찬가지
만약, 배포를 마치고 이전 버전으로 돌아가고 싶다면❓치명적인 버그가 발견이 된 이유로.
🙅♀️ Rolling 배포 방식을 사용한다면 이전 버전으로 돌아가는 것은 꽤 힘들다.
version 0을 똑같은 과정을 거치면서 하나하나의 인스턴스에 배포를 해서 버전을 낮춰줘야 한다.
★ Blue / Green 배포
Blue : 현재 프로덕션
Green : 새로 배포할 프로덕션
개발자들은 뭔가를 구현하기 전에 프로덕션과 유사한 환경에서 개발을 하고 테스트를 거칠 것
Blue를 100% 활성화 시키고 있다면 천천히 Blue의 트래픽 양을 줄이고 Green으로 옮겨 사용자에게 전해짐.
궁극적인 목표 Blue 100% 셧다운, Green 100% 배포
3개의 EC2 인스턴스가 하나의 ELB로 연결이 되어있다.
프로덕션에서 돌아가고 있는 원래 버전
Code Deploy는 현재 버전과 똑같은 프로덕션 하나를 생성한다.
새로운 버전으로 되어있는 부분
초록색 부분을 ELB로 등록을 한다.
천천히 트래픽양을 파란색에서 초록색으로 옮겨간다.
결국, 파란색 인스턴스는 모두 비활성화 되고 초록색 부분만 남게된다.
그러므로 파란색은 완전히 셧다운된다.
만약, 배포를 마치고 이전 버전으로 돌아가고 싶다면❓치명적인 버그가 발견이 된 이유로.
ELB 세팅만 변경해주면됨.
기존에 셧다운된 파란색으로 단순히 트래픽 루트를 변경해주기만 하면됨.
따라서 파란색이 다시 부활하며 초록색은 다시 셧다운이 된다.
Rollong 배포 방식을 언제 사용?
처음 배포할 때
새로운 버전과 비교할 것도 없고 상대적으로 빠른 배포가 가능하기 때문
처음부터 블루앤그린 배포방식을 사용한다면 하나의 새로운 프로덕션 환경을 만들어내기때문에 두개의 환경을 구축하는데 추가적인 비용이 든다.
시간이 지나면서 코드가 복잡해지면 블루앤그린 배포 방식 추천
'AWS' 카테고리의 다른 글
[AWS] Code Deploy 실습 2 (0) 2024.02.15 [AWS] Code Deploy 실습 1 (0) 2024.02.15 [AWS] Code Commit 실습 (0) 2024.02.15 [AWS] Code Commit (1) 2024.02.15 [AWS] CI/CD (0) 2024.02.15