CI/CD
지금까지 EC2 인스턴스를 만들고 서버를 띄워서 배포도 했고, RDS 인스턴스를 만들어서 DB도 연동했다.
버전 업데이트 시 일일이 테스트 및 빌드 하던 것도 Github Actions로 자동화했으니 CI 까지는 진행하였다.
이제 배포의 틀은 어느정도 갖춰지긴 했지만, 아직까지 수작업으로 매번 scp 커맨드를 써서 최신 버전으로 배포하고 있다.
결국 이런 단순 반복 작업은 사람이 하다보면 언젠가 꼭 실수가 나오기 마련이고, 이는 곧 장애로 이어질 수 있다.
따라서 이번엔 GitHub에 PR을 올리고 머지 시 배포되는것 까지 자동화(CD) 해보려 한다.
보통 이 두가지를 합쳐서 CI/CD라고 한다.
자동 빌드 및 테스트(CI, Continuous Integration)
업데이트 한 버전을 자동으로 빌드 및 테스트 하는 것
배포 자동화(CD, Continuous Deploy)
빌드 및 테스트를 마치고 성공적으로 업데이트 한 버전의 애플리케이션을 자동으로 배포 하는 것
CI/CD & 무중단 배포
애플리케이션의 버전을 업데이트하면 자동으로 빌드 및 테스트하고, 자동으로 배포까지 해보려 한다.
하지만 현재 배포 중인 서비스를 종료하고, 새로운 버전의 서비스를 띄우면 서버가 죽어있는 시간이 존재하지 않을까?
만약 별 다른 공지 없이 이렇게 서버가 내려가 있으면 사용자에게 나쁜 경험을 줄 수 있다.
따라서 새로운 버전을 배포해도 서버가 죽어있는 시간이 거의 없는 자동화 과정을 만들어보려 한다.
그림으로 나타내자면 아래와 같다.

참고자료
Github Actions CD: AWS EC2 에 Spring Boot 배포하기
Overview 애플리케이션을 개발하면 외부에서도 접근 가능하도록 클라우드 환경에 배포합니다. 이전에 포스팅 했던 AWS 1편에서는 마지막에 scp 명령어로 로컬에 존재하는 빌드 파일을 EC2 인스턴스
bcp0109.tistory.com
'DevOps > CI/CD' 카테고리의 다른 글
CI/CD & 무중단 배포 4: 배포 스크립트 작성 및 Nginx 설정 (0) | 2024.05.31 |
---|---|
CI/CD & 무중단 배포 3: S3 인스턴스 생성 및 설정 (0) | 2024.05.30 |
CI/CD & 무중단 배포 2: CodeDeploy 인스턴스 생성 및 설정 (0) | 2024.05.29 |
AWS IAM 설정: IAM 사용자 설정해보기 (0) | 2024.03.21 |
간단한 CI 적용: Github Actions로 PR 시 자동 빌드 및 테스트 (0) | 2024.03.20 |