CI : Continuous Integration (지속적인 통합)
쉽게 말해 개발자들의 코드 충돌을 막아준다.
CD : Continuous Deployment (지속적인 배포)
사용자들이 사용할 때 불편함을 느끼지 못하도록 서버 다운, 프로그램 중단을 막기 위해 CD 사용하므로 자동화가 되었다.
CI/CD의 장점
중앙 리포지토리(Repository)
Github은 코드를 보관하는 리포지토리로 생각하면 큰 오산이며, AWS의 CI/CD를 도입하여 자동 테스트도 가능하다.
Local branch란 개발자가 로컬에서 코드를 개발하는 것을 의미하며, master branch란 실제 프로덕션에서 사용되는 코드이다. 즉, Local branch가 master branch로 합쳐지기 전 퀄리티 체크를 해야한다.
테스트가 성공적으로 마무리되면 master branch가 합쳐지고 이후 배포를 준비한다.
배포준비 및 배포는 CI/CD 덕분에 자동화가 이루어질 수 있다.
Code Deploy는 자동 배포(Automated Deployment)와 같다.
Code Deploy 장점
Code Deploy 방법
Rolling 배포
프로덕션에서 돌아가는 서버가 있고, 개발자들이 구현하고 프로덕션에 점층적으로 배포하는 경우
이전 버전으로 돌아가는 경우는 한번에 돌아갈 수 없다.
맨 처음 배포할 때 사용해야 한다.
Blue/Green 배포
Blue는 현재 프로덕션, Green은 새로 배포할 것들. 즉, Blue의 트래픽양을 줄이고 Green으로 옮겨 새로운 기능을 사용자들에게 제공한다. Blue를 셧다운
이전 버전, 최신 버전을 삭제하지 않았다는 전제하에 돌아가기 쉽다.
2개의 개발 환경을 만드는데 추가적인 비용이 들지만, 배포가 복잡해질 수록 추천한다.
CI/CD의 끝판왕!
배포(Deployment) Vs 출시(Release)
배포 : 100퍼센트 세상밖으로 나가기 전 단계
출시 : 소프트웨어나 어플리케이션이 사용자에게 전달되는 마지막 단계, 테스트와 배포를 거친 후의 단계
Code Pipeline 작동방법
Code Pipeline -> Code Co`mmit -> Code Build -> Code Deploy
(staging은 기능을 테스트, production 출시한다.)