swimminginthecode DIVE!

ETC/etc

CI/CD

dazz6 2024. 12. 25. 18:00

여기저기 많이 들리는 단어... 대충 계속 코드 합쳐 보자는 거 아냐? 정도로 이해하고 있다가, Github Actions을 공부하면서 제대로 된 이해가 필요하겠다는 생각이 들었다. 

 

CI/CD는 소프트웨어 개발에서 Continuous Integration(지속적 통합)Continuous Deployment/Delivery(지속적 배포/전달)를 결합한 자동화된 프로세스를 의미하는데, 코드 작성부터 테스트 및 배포까지의 과정을 자동화하여 효율성과 품질을 향상시키는 데 중점을 둔다.

 

1. Continuous Integration(CI, 지속적 통합)

- 코드를 작은 단위로 자주 병합(Merge)하며, 병합된 코드에 대해 자동으로 빌드 및 테스트가 실행되도록 설정.

- 병합 시 발생할 수 있는 오류를 조기에 발견하고, 코드의 품질을 유지하는 데 목표가 있다.

 

2. Continuous Delivery(CD, 지속적 배포)

- 자동화된 배포 준비 단계를 포함.

- 코드를 실제 서비스 환경에 배포할 준비를 마치지만, 실제 배포를 수동 승인이 필요하다.

- 항상 배포 가능한 상태의 코드를 유지하고, 배포 과정에서 사람이 개입해 품질을 최종적으로 검토하는 데 목표가 있다. 

 

3. Continuous Deployment(CD, 지속적 전달)

- Continuous Delivery를 확장한 개념으로, 자동으로 실제 서비스 환경에 배포까지 진행하는 것.

- 모든 테스트를 통과하면, 수동 승인 없이 즉시 서비스 환경에 반영.

- 사용자가 새로운 기능이나 버그 수정 사항을 빠르게 사용할 수 있도록 하는 데 목표가 있다. 

 

CI/CD는 코드를 빠르게 배포하여 문제를 조기에 해결하면서 개발 속도를 향상하고, 자동화된 테스트와 배포로 버그와 장애를 최소화하여 안정성을 보장하며, 개발 및 테스트, 배포가 하나의 파이프라인으로 통합되어 원활한 협업이 가능하다.

 

학원에서 JSP로 만들었던 프로젝트는, Github 충돌이 두려워서 (branch의 개념조차 확실히 이해하지 못했던 탓도 있고) 일정 주기 동안 작업한 뒤 파일을 수동으로 복사-붙여넣기 하는 짓을 했고... 오류를 수정하고 코드를 정리하는 데 오랜 시간이 걸렸다. 그 전부터 CI/CD라는 개념을 더 공부하고 Github를 더 적극적으로 사용해 볼걸 하는 후회가 든다. 물론 그 이후 파이널 프로젝트부터는 Github를 사용하여 원활하게 작업했다!

'ETC > etc' 카테고리의 다른 글

반응형 웹 기초 01  (0) 2025.03.04
YAML과 Properties  (0) 2024.12.26
Domain Design Development  (0) 2024.11.11
DesignPattern Builder  (0) 2024.07.17
DesignPattern Singleton  (0) 2024.07.05