처음 CICD를 도입하려고 했을 때는 단순히 '자동화된 배포 과정'이라고만 알고 있었음. AWS CodePipeline으로 EC2에 자동 배포하는 걸 구축하려고 하다가, 팀원이 RICD라는 걸 언급했는데... 이게 뭐지? 싶어서 찾아서 정리합니다.
🚗 자동차로 비유하면 (GPT의 도움을 받음 ㅎ.ㅎ)
- CICD는 자동차의 엔진: 실제로 움직이게 하는 핵심
- RICD는 계기판: 현재 상태를 한눈에 보여주는 도구
코드 변경 → 테스트 자동 실행 → 빌드 → 배포
말 그대로 개발자가 코드를 올리면 알아서 쭉 실행되는 자동화 파이프라인임.
구분 | CICD | RICD |
---|---|---|
정의 | 소프트웨어 개발 프로세스를 자동화하는 방법론 | 배포 프로세스를 모니터링하고 관리하는 도구 |
주요 특징 | • 코드 변경사항 자동 통합 및 테스트 • 빌드, 테스트, 배포 자동화 • 코드 푸시시 자동 프로세스 실행 | • 배포 상태 시각화 • 문제 발생 시 빠른 대응 • 팀 전체 배포 현황 파악 |
장점 | • 인적 오류 감소 • 일관된 배포 환경 • 버그 조기 발견 • 개발 집중도 향상 | • 배포 과정 투명성 • 신속한 문제 대응 • 팀 커뮤니케이션 개선 |
자동차 비유 | 엔진 - 실제 동작을 담당 | 계기판 - 상태 모니터링 담당 |
구현 도구 예시 | AWS CodePipeline, Jenkins, GitLab CI | 모니터링 대시보드, 알림 시스템 |
📌 테스트 자동화 부족
- "어차피 로컬에서 테스트했으니까..." (절대 금지!)
- 자동화된 테스트 없이 배포하면 나중에 큰 문제 발생
📌 환경 일관성 부족
- 로컬에선 되는데 서버에선 안 되는 경우
- Docker 같은 컨테이너화 필수
📌 과도하게 복잡한 파이프라인
- "이것도 넣고 저것도 넣고..."
- 심플하게 시작하고 천천히 확장하자
처음엔 RICD가 더 편해보여서 "CICD는 왜 필요하지?"라는 생각을 했는데, 근데 실제로 적용해보니 둘 다 필요한 이유를 깨달았어음.
AWS CodePipeline으로 CICD를 구축하면서 동시에 모니터링 도구도 잘 붙여보려고 함.
[1] https://walkingplow.tistory.com/78 CICD의 기본 개념과 필요성에 대한 상세한 설명
[2] https://tech.osci.kr/cicd-architecture/ CICD 아키텍처 설계와 실제 구현 사례 소개
[3] https://www.bdccglobal.com/blog/5-common-mistakes-during-ci-cd-implementation/ CICD 구현 시 흔히 하는 실수들과 해결방안
[4] https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/tutorials-simple-codecommit.html AWS CodePipeline을 이용한 실제 CICD 구현 가이드
[5] https://www.adaptavist.com/blog/top-three-challenges-to-scaling-cicd-in-the-enterprise CICD와 RICD 통합 시 발생할 수 있는 문제점과 해결방안