CI(Continuous Integration) : 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다. 지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합된다. 따라서 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제를 이 방법으로 해결할 수 있다.
CD(Continuous Deployment) : 지속적인 배포로 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미한다. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다.
장점
만약 CI/CD가 없다면 프로그램 에러가 발생하여 이전으로 돌아가려고 할 때 매번 백업한 것을 이용해야 하고 그에 따른 테스트가 매우 번거로워 짐.
Code Deploy는 자동배포라 불린다.
장점
일반적인 배포를 의미하며, 단순하게 서버를 구성하여 배포하는 전략이다. 다시 말해 구버전에서 신버전으로 트래픽을 점진적으로 전환하는 배포 방식이다. 배포를 다 마치면 이전 버전으로 돌아가기 힘들다는 단점이 있다.
원래 V0 버전이었는데 V1으로 점차적으로 바꿈
구버전을 Blue, 신버전을 Green이라고 해서 붙여진 이름이다. 신버전을 배포하고 일제히 전환하여 모든 연결을 신버전을 바라보게 하는 전략이다. 구버전, 신버전 서버를 동시에 나란히 구성하여 배포 시점에 트래픽이 일제히 전환된다. 빠른 롤백이 가능하고, 운영환경에 영향을 주지 않고 실제 서비스 환경으로 신버전 테스트가 가능하다. 단 이런 구성은 시스템 자원이 두 배로 필요하여 비용이 더 많이 발생한다.
V0 버전의 트래픽을 줄이고 V1쪽으로 이동해가는 방식
1. 맨 처음 배포할 때 Rolling 방식을 사용하는 것이 좋다.
-> 딱히 새로운 버전과 비교할 거 없고 상대적으로 빠른 배포가 가능하기 때문
2. 시간이 지나면서 배포가 복잡해질수록 Blue/Green을 사용하는 것이 좋다.
-> down time이 전혀 없고 이전 버전으로 복원이 수월하기 때문
Code Pipeline 작동 방법
Code Pipeline은 아래 단계들을 모두 자동화해준다.
Workflow : 코드 저장소의 특정 코드가 변경되었을 시 시작
staging 배포 : 기능을 테스트하는 단계를 거치게 됨
production 배포 : 출시한다는 뜻