[WEB] CI/CD 를 알기

김현수·2023년 1월 13일
0

WEB

목록 보기
5/19

CI/CD

Continuous Integration(지속적인 통합)
Continuous Delivery(지속적인 서비스제공)
Continuous Deployment(지속적인 배포)

CI _ 빌드/테스트 자동화과정

=> 지속적인 통합

커밋할 때마다 빌드와 일련의 자동 테스트가
이루어져 동작을 확인 변경으로 인해 문제가
생기는 부분이 없도록 보장

CD _ 배포 자동화 과정

=> 지속적인 서비스 제공

코드 변경이 파이프라인의 이전 단계를
모두 성공적으로 통과하면 수동 개입없이
해당 변경 사항이 프로덕션에 자동 배포


=> 지속적인 배포

간단한 코드변경이 정기적으로 마스터에 커밋
자동화된 빌드 및 테스트 프로세스를 거치며
다양한 사전 프로덕션 환경으로 승격되며
문제가 발견되지 않으면 최종적으로 배포

종류 _ Jenkins / CircleCI / TravisCI / Github Actions / etc...

    - 적용전 _    개발자들 개발하여 코드 수정
               -> 각자의 feature 브랜치에 코드 push
                    (어느 한부분에서 에러나도 눈치 못챔)
               -> 각자의 코드를 git 에 올리고 통합
               -> 에러가 발생했지만 어디 에러인지 모르므로 
                  어디서 에러 발생했는지 디버깅 후 수정

               -> 첫과정부터 이전과정까지 반복 
               -> 에러 해결되면 배포 시작 (이전 과정부터 지금과정 많은 시간 필요)


    - 적용후 _    개발자들 개발하여 feature 브랜치에 코드를 push
               -> git push 를 통해 Trigger 되어 CI 서버에서 알아서 
                     Build, Test, Lint 를 실행 결과 전송
               -> 개발자들은 결과 전송받고 에러가 있다면 에러부분 수정 후 
                     코드 master 브랜치에 merge
               -> master 브랜치에 코드 merge 하고 Build, Test 가 
                     정상적으로 수행 되었다면 CI 서버에 알아서 Deploy



    - 요약 _ 일일히 빌드와 테스트, 배포과정을 개발자 직접 한다는 것은 낭비이기 때문에
             이러한 자동화 구축은 필수로 해야한다. 

           _ CI/CD는 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법

           _ 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제
              (일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션입니다.
              
           _ merge 이전에 최대한 작은 단위로 통합해 나가는 것이 중요
profile
일단 한다

0개의 댓글