AWS - Code Commit & Code Deploy & Code Pipeline란?

오송아·2021년 5월 25일
0
post-thumbnail

📌 CI / CD란?

  • CI : Continuous Integration (지속적인 통합)
    쉽게 말해 개발자들의 코드 충돌을 막아준다.

  • CD : Continuous Deployment (지속적인 배포)
    사용자들이 사용할 때 불편함을 느끼지 못하도록 서버 다운, 프로그램 중단을 막기 위해 CD 사용하므로 자동화가 되었다.

CI/CD의 장점

  • 자동화 시스템 (Automation) - 테스트
  • Incremental Change

중앙 리포지토리(Repository)

  • Github은 코드를 보관하는 리포지토리로 생각하면 큰 오산이며, AWS의 CI/CD를 도입하여 자동 테스트도 가능하다.

  • Local branch란 개발자가 로컬에서 코드를 개발하는 것을 의미하며, master branch란 실제 프로덕션에서 사용되는 코드이다. 즉, Local branch가 master branch로 합쳐지기 전 퀄리티 체크를 해야한다.

  • 테스트가 성공적으로 마무리되면 master branch가 합쳐지고 이후 배포를 준비한다.

  • 배포준비 및 배포는 CI/CD 덕분에 자동화가 이루어질 수 있다.

📌 Code Commit란?

  • 파일들을 보관하는 저장 장소 (Repository) - Github과 매우
    유사
    코드, 사진, 라이브러리, 등등…
  • 동시에 많은 사람들이 저장 장소 접근 및 업데이트 가능
    저장장소는 master branch이며 개발자는 각자 Local branch에서 개발한다.
  • 버전 컨트롤 기능 제공
    예) 언제 어떻게 누가 저장 장소 내용을 변경하였는지
    master branch를 이전 버전으로 롤백할 수 있다
  • develop branch는 master branch로 통합하기 전 테스트를 거치는 장소이다. 충돌이 자주 일어난다.

📌 Code Deploy란?

Code Deploy는 자동 배포(Automated Deployment)와 같다.

Code Deploy 장점

  • 새로운 기능들의 빠른 배포
  • 소프트웨어 & 서버 다운타임 X
    서버 수정 중일때는 사용자들이 쓸 수 없었다.
  • Manual 에러 X
    개입이 없기 때문에 사람들이 만들어내는 오류를 만들어내지 않는다.

Code Deploy 방법

  • Rolling 배포
    프로덕션에서 돌아가는 서버가 있고, 개발자들이 구현하고 프로덕션에 점층적으로 배포하는 경우

  • 이전 버전으로 돌아가는 경우는 한번에 돌아갈 수 없다.

  • 맨 처음 배포할 때 사용해야 한다.

  • Blue/Green 배포
    Blue는 현재 프로덕션, Green은 새로 배포할 것들. 즉, Blue의 트래픽양을 줄이고 Green으로 옮겨 새로운 기능을 사용자들에게 제공한다. Blue를 셧다운

  • 이전 버전, 최신 버전을 삭제하지 않았다는 전제하에 돌아가기 쉽다.

  • 2개의 개발 환경을 만드는데 추가적인 비용이 들지만, 배포가 복잡해질 수록 추천한다.

📌 Code Pipeline란?

CI/CD의 끝판왕!

  • 빌드 테스트 배포 과정을 관리
    코드 변경시 이를 감지할 수 있음
  • 소프트웨어 및 어플리케이션 출시 자동화 가능
    빠르고 쉬운 디버깅을 가능케 해줌

배포(Deployment) Vs 출시(Release)
배포 : 100퍼센트 세상밖으로 나가기 전 단계
출시 : 소프트웨어나 어플리케이션이 사용자에게 전달되는 마지막 단계, 테스트와 배포를 거친 후의 단계

Code Pipeline 작동방법
Code Pipeline -> Code Co`mmit -> Code Build -> Code Deploy
(staging은 기능을 테스트, production 출시한다.)

profile
백엔드 개발자

0개의 댓글