DevOps

CI/CD 정리

iksadnorth 2024. 1. 12. 16:03

👣 CI/CD란?

CI :
지속적 통합이라는 의미로, '코드 변경 사항'이
빌드 및 테스트 되어 공유 레포지토리에 통합하는 것.

기능 추가 혹은 수정을 매우 빈번하게 하는 경우 코드 검증 시간을 단축.

CD :
지속적 배포라는 의미로, 개발자의 변경 사항이
프로덕션 환경까지 릴리즈 되는 것.

- continuous delivery : 자동으로 배포 X
- continuus deployment : 자동으로 배포 O

 

👣 CI/CD LifeCycle

1. Design
2. Develope
3. Build
4. Test
5. Deploy
6. Monitor

 

👣 무중단 배포 전략

Blue-Green 배포

Blue는 새롭게 생성한 어플리케이션 인스턴스, 
Green은 기존에 사용하던 인스턴스.
Blue가 서버에 완전히 가동될 때까지 대기하다가 완전히 가동되면,
로드밸런서 혹은 DNS를 이용해 트래픽을 Blue로 옮기고
Green은 필요에 따라 삭제하거나 롤백 대기를 위해 남겨놓는다.

- 단점
1. DNS를 바꾸는 방법을 사용하면 DNS 캐싱에 의해
지속적으로 Green 서비스가 연결된다.
2. 서버 자원을 기존 것보다 2배나 더 사용해야 한다.

Rolling 배포

로드밸런서에 의해 트래픽을 나누던 App 인스턴스 N개 중
1개의 연결을 끊고 새로운 버전으로 업데이트.
업데이트 후 가동 시, 다시 로드밸런서로 연결.
해당 과정을 모두 변경될 때까지 N번 반복.

- 단점
1. DB에 변형을 주는 경우, 신버전과 구버전과 호환이 되지 않아
구버전의 App 인스턴스가 모두 장애가 발생할 수 있다.
2. 구버전과 신버전이 호환이 되도록 코드를 작성해야 한다.

canary 배포

Rolling과 비슷하게 작동하지만 가중치 로드밸런싱을 통해서
서서히 트래픽을 신버전으로 변경하는 방법.

- 단점
1. 모니터링이 완벽하게 적용되지 않으면 의미가 없음.
2. CI/CD가 정확하게 적용되어야 한다.