ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] CI/CD
    AWS 2024. 2. 15. 18:44
    CI/CD

     

    CI : Continous Intergration (지속적인 통합)

    통합이란? 개발자들이 자기들의 개발의 일종의 중앙 레파짓토리에 올려 온갖 테스트를 하고 내 것이 다른 개발자들의 코드에 영향이 가지 않게끔 해야한다. 즉, 개발자들의 코드 충돌을 막아주는 것

    CD : Continous Deployment (지속적인 배포)

    개발자들은 하루에도 수많은 개발과 버그를 수정함으로써 지속적으로 프로그램을 배포함으로써 사용자들이 사용할때 불편함을 느끼지 못하도록 서버 다운이라던가 프로그램이 일시중지되는 현상을 막기 위해 도입

    덕분에 많은 부분들이 자동화가 이루어짐으로써 개발자들의 짐을 많이 덜어준다.

    CI/CD의 장점

    ★ 자동화 시스템 (Automation) - 테스트 

    반복적인 부분들이 있다면 모두 자동화로 돌려버리고 개발자들의 짐을 많이 덜어줌

    ★ Incremental Change

    예로, 어느 온라인 쇼핑몰 샵에서 고객이 옷을 찾다가 가격에 대한 정보가 없다고 불만 접수가 들어왔다고 가정하자.

    그러면 개발자는 이 기능을 추가하기 위해 버그를 고친다.

    개발자가 가격이 보여지는 기능을 구현하기 위해 A,B,C,D라는 작은 기능들을 구현해야한다고 가정한다.

    그럼 개발자는 A를 먼저 끝내고 테스트를 거치고, 그 다음 B로 넘어오고 이런 점차 개발자가 프로그램을 수정시키는 것을 Incremental Change라고 할 수 있다.

    CI/CD는 이러한 기능을 가능하게 한다.

     

    CI/CD가 없다면 내가 작성한 코드가 에러가 나서 이전으로 돌아간다고 가정하자.

    매번 백업과 테스트를 해야할 것이다.

    CI/CD - 중앙 리포지토리 (Repository)

    ★ Github

    리포지토리란 일종의 코드를 보관하고 수많은 개발자들에 의해서 공유되어지는 일종의 보관소

    Github을 사용하여 개발자들은 그들의 코드를 올리고 다른 개발자들에게 전혀 영향이 가지 않게끔 코드를 관리하고 통합하는 것이 가능해진다.

    Github은 코드를 보관하는 리파지토리의 용도로도 사용이 되는 뿐만 아니라, AWS의 서비스를 이용하여 CI/CD를 도입해서 자동 테스트도 가능

    Github에서 어떠한 코드의 변화가 감지됐을 때 그에 따른 테스트를 실행시켜 과연 프로덕션에서 돌리기에 문제가 없는지 어떤 퀄리티 조사를 해야하는 것이다. 사람의 힘없이 모두 자동적으로 발생. 테스트의 실패로 개발자는 직접 코드를 수정해야한다.

     

    Github

    ✦ Local & Master branch

    로컬 브랜치란 ? 개발자가 로컬에서 코드를 개발하는 것. 

    마스터 브랜치란 ? 실제 프로덕션에서 사용되어지는 코드

    CI/CD - 배포준비 및 배포

     배포 준비

    CI/CD로 배포 준비 자동화

    기존의 프로덕션과 최근에 변경사항이 적용된 부분과의 차이가 감지된다면 자동으로 프로덕션에 배포하는 과정에서 사람이 거의 할일은 없다. (가끔)

     

     배포

     


    메인 레포지토리가 있고 4명의 개발자가 있다고 가정.

    고객들은 서비스를 사용하는데 있어 온갖 불편함을 호소하고 개발자들은 따라서 버그를 열심히 수정하고 있다.

    또한 그들은 자기들의 코드를 이렇게 메인 레포지토리에 올리고 있다.

    개발자들은 서로 다른 기능을 구현 중에 있으며,

    첫번째 개발자가 본인의 테스트를 마치고 마스터 브랜치에 합쳤다.

    파란색 네모 : 첫번째 개발자가 구현한 기능의 비중

    첫번째 개발자의 기능은 다른 개발자에게 전혀 영향이 없다.

    다른 개발자들의 테스트가 성공하든 실패하든 첫번째 개발자에게는 전혀 지장이 없다.

    배포 준비

    첫번째 개발자가 구현한 기능을 고객들에게 보이게한다.

    배포준비가 완료가 되었다면 배포를 하여 프로덕션에서 사용자들에게 새로운 기능을 제공.

    100% 완벽하지는 않지만 고객들의 불편함을 줄였다.

    ⮕ 이 과정이 반복

    'AWS' 카테고리의 다른 글

    [AWS] Code Commit 실습  (0) 2024.02.15
    [AWS] Code Commit  (1) 2024.02.15
    [AWS] API Gateway 실습  (0) 2024.02.14
    [AWS] API Gateway  (0) 2024.02.14
    [AWS] API  (0) 2024.02.14
Designed by Tistory.