DevOps, CI/CD 개념 정리

DevOps

DevOps는 개발과 운영을 결합한 합성어입니다.
개발 팀과 IT 운영 팀 간 협업을 강화하여 지속적인 통합 및 배포 (CI/CD) 를 가능하게 하는 문화입니다.

개발자가 AWS RDS, ElastiCache 등 인프라 자원을 표준화된 방식으로 생성하면
자동으로 모니터링 시스템이 연동되도록 하는 내부 플랫폼을 구축하는 플랫폼 엔지니어링과
Observability가 높은 모니터링 환경을 구축하는 일도 DevOps의 중요한 영역으로 다뤄지고 있습니다.

Observability

시스템에서 수집한 Metric, Log, Trace 등을 바탕으로 시스템의 상태와 성능을 파악하고
장애 원인을 분석할 수 있는 관측 가능성을 의미합니다.

특히 MSA 환경에서는 여러 서비스 간의 호출 관계와 의존성을 추적하고,
각 서비스의 성능과 오류를 통합적으로 분석할 수 있는 관측 환경을 구축하는 것이 중요합니다.

SRE (Site Reliability Engineering)

장애 가능 지점을 미리 파악하고 지속적으로 개선하며, 서비스를 안정적으로 운영하는 방법론입니다.
SLA (Service Level Agreement) 99% 이상은 월간 서비스 가용성을 99% 이상으로 유지하겠다는 약속을 의미합니다.


CI (지속적 통합)

여러 개발자가 작성한 코드를 중앙 리포지토리에 자주 통합하고
의존성 설치 후 빌드, 테스트 등 검증 과정을 자동으로 수행하는 개발 방식입니다.

코드가 통합되면 빌드 및 단위 테스트가 정상적으로 완료되어야 하며,
설정에 따라 정적 코드 분석과 보안 취약점 검사 등의 추가 검증도 통과해야 합니다.

브랜치 기반 트리거

특정 브랜치에 코드가 Push 되거나 PR이 생성/수정될 때 실행합니다.

  • 개발 브랜치 변경 감지 : feature/** 패턴
  • 배포 브랜치 변경 감지 : main 또는 release/** 패턴

파일 기반 트리거

특정 폴더나 파일이 변경되었을 때 실행합니다.

  • 프론트엔드 폴더 변경 감지 : frontend/**
  • 백엔드 폴더 변경 감지 : backend/**

이벤트 기반 트리거

저장소에서 특정 이벤트가 발생했을 때 실행합니다.

  • 코드 푸시 감지 : push 이벤트
  • PR 생성/수정 감지 : pull_request 이벤트
  • 이슈 생성/수정 감지 : issues 이벤트

CD (지속적 제공/배포)

CI를 통해 검증된 빌드 결과물을 개발, QA, 스테이징, 운영 등 필요한 환경에 배포하는 과정을 자동화하는 개발 방식입니다.

배포 파이프라인에는 실행 환경 설정 적용, 빌드 결과물 배포, 컨테이너 교체, 서비스 재실행, 배포 결과 검증, CloudFront 캐시 무효화 등이 포함될 수 있습니다.

CI/CD 시스템으로부터 작업을 받아 실제 명령어와 스크립트를 실행하는 에이전트 (Runner) 가 필요합니다.
Runner는 사용자가 직접 구축하거나 CI/CD 서비스에서 제공하는 환경을 사용할 수 있습니다.

운영 환경에 배포된 애플리케이션이 출시 (release) 되면 실제 사용자가 추가 또는 변경된 기능을 이용할 수 있습니다.

Continuous Delivery (지속적 제공)

변경 사항을 운영 환경에 배포할 수 있는 상태까지 자동화하고,
최종 운영 배포 또는 사용자 공개는 수동으로 승인하거나 실행합니다.

Continuous Deployment (지속적 배포)

검증을 통과한 변경 사항을 별도의 수동 승인 없이 운영 환경까지 자동 배포합니다.