웹 어플리케이션 개발과 관련하여 공부를 시작하다보면 꼭 CI(Continuous Integration) / CD(Continuous Delivery or Continuous Deployment)라는 개념이 등장합니다. 그렇다면 지속적 통합과 제공 및 배포(CI/CD)는 왜 필요할까요?
결론부터 말씀드리자면, 빠른 "배포 속도"와 유연한 반영을 기반으로하는 "효율성" 때문입니다.
1. 지속적 통합 (CI)
현대적 어플리케이션의 다양한 기능 부여와 서로 다른 모듈까지 동시에 여러 개발자가 작업 가능하도록 구성하는 것을 목표로 합니다. CI는 빌드 자동화를 통해 변경되는 개발 코드의 충돌이나 예상치 못한 문제 발생을 예방하고, 통합 과정에서 빌드와 테스트를 수행하여 코드의 문제점을 빠르게 확인할 수 있습니다.
2. 지속적 제공 및 배포 (CD)
유효한 개발 코드를 repository(예, GitHub)에 자동으로 전달하여 운영 환경으로 안정적으로 배포하는 것을 목표로 합니다. CD는 CI의 단계를 거쳐 검증이 완료된 개발 코드를 저장소로 가져와서 수동 또는 자동으로 지속적 배포 단계로 넘겨 운영 환경으로 배포하는 절차를 진행하게 됩니다. 즉, 어플리케이션의 변경 사항이 테스트를 통과하자마자 자동으로 최종 사용자에게 배포되어, 사용자의 피드백도 즉각 반영할 수 있는 장점이 있습니다.
3. Docker 환경에서의 CI/CD 파이프라인
Docker 환경에서 CI/CD 파이프라인은 docker image를 생성(Dockerfile)하여 사용할 수 있습니다. 이렇게 생성된 이미지는 docker hub(hub.docker.com) 또는 private한 registry에 따로 push하여 docker image로 관리할 수 있습니다. 그 절차는 아래와 같이 표현할 수 있습니다.
1) 버전 및 형상 관리를 위해 Git 등에 변경 코드를 push 합니다.
2) push된 docker image로부터 사전에 구성된 CI/CD 파이프라인에서 자동으로 빌드를 트리거하여 Dockerfile을 사용한 docker image로 새롭게 생성합니다.
3) 새롭게 추가된 docker image를 사용하고 있는 docker registry에 push합니다 (CI).
4) 추가된 docker image를 가져와 테스트 환경에 배포합니다.
5) 어플리케이션 테스트가 마무리되면 docker image 운영 환경에 최종 배포합니다 (CD).
'웹 어플리케이션 개발 > Docker' 카테고리의 다른 글
Docker 환경을 사용해보자 (0) | 2024.02.14 |
---|