[CI/CD] DevOps와 CI/CD 개요

우유·2026년 4월 8일

[Cloud] CI/CD

목록 보기
1/13

1. DevOps란 무엇인가

1.1 DevOps의 정의

DevOps는 DevelopmentOperations의 합성어다.

말 그대로 개발과 운영을 분리된 조직이나 역할로만 보지 않고, 하나의 서비스 생명주기를 함께 책임지는 방식을 의미한다.

전통적인 환경에서는 보통 다음과 같이 역할이 나뉘는 경우가 많았음.

  • 개발팀은 기능을 만든다
  • 테스트팀은 품질을 검증한다
  • 운영팀은 배포하고 장애를 관리한다

이 구조는 역할 분리가 명확하다는 장점은 있지만, 실제 서비스 운영에서는 여러 문제가 발생하기 쉬웠음.

예를 들어,

  • 개발팀은 기능이 정상이라고 판단했지만 운영 환경에서는 오류가 발생함
  • 운영팀은 안정성을 우선시해서 변경 반영을 꺼리게 됨
  • 배포 시점마다 수작업이 많아서 실수가 발생함
  • 장애가 발생했을 때 책임 소재가 분산됨

이런 문제를 해결하기 위해 등장한 접근 방식이 DevOps다.

DevOps는 단순히 특정 도구를 사용하는 것이 아니라,

개발부터 배포, 운영, 모니터링까지를 하나의 흐름으로 보고 협업과 자동화를 강화하는 문화이자 실천 방법이라고 볼 수 있음.


1.2 DevOps가 필요한 이유

서비스가 단순하던 시기에는 몇 달에 한 번 배포해도 큰 문제가 없었음.

하지만 현재는 상황이 다름.

  • 웹 서비스와 모바일 서비스는 빠르게 기능이 추가돼야 함
  • 보안 패치와 버그 수정은 즉시 반영돼야 함
  • 사용자 수가 많아질수록 장애 허용 범위가 줄어듦
  • 클라우드와 컨테이너 환경에서는 인프라 변경도 매우 빈번하게 발생함

즉, 현대적인 시스템에서는 변경이 자주 일어나는 것이 기본 상태다.

이때 개발과 운영이 분리돼 있으면 다음 문제가 생김.

  • 변경 반영 속도가 느려짐
  • 배포 실패 가능성이 높아짐
  • 운영 환경과 개발 환경 차이로 오류가 증가함
  • 수동 작업이 많아져 인적 실수가 누적됨

DevOps는 이런 문제를 줄이기 위해 다음을 지향함.

  • 협업 강화
  • 반복 작업 자동화
  • 빠르고 안정적인 배포
  • 운영 상태에 대한 지속적인 관찰
  • 장애 복구와 롤백의 단순화

2. 전통적 개발/운영 방식의 한계

2.1 사일로 구조의 문제

전통적인 IT 조직에서는 팀별 역할이 강하게 분리되는 경우가 많았음.

이런 구조를 흔히 사일로(Silo) 구조라고 부른다.

예를 들어 다음과 같은 흐름이 생김.

  1. 개발팀이 애플리케이션을 개발함
  2. 개발 완료 후 운영팀에 배포 요청을 넘김
  3. 운영팀은 별도 일정에 맞춰 배포함
  4. 문제 발생 시 다시 개발팀에 전달함

겉보기에는 절차가 있어 보이지만 실제로는 비효율이 큼.

  • 전달 과정이 많아짐
  • 환경 차이에 대한 책임이 불분명해짐
  • 문제 분석 시간이 길어짐
  • 배포 일정이 병목이 됨

특히 운영팀 입장에서는 안정성이 최우선이고, 개발팀 입장에서는 기능 출시가 우선인 경우가 많아서 목표 충돌이 발생함.


2.2 수동 배포의 한계

수동 배포는 다음과 같은 방식으로 이루어지는 경우가 많았음.

  • 운영자가 서버에 직접 접속함
  • 파일을 복사함
  • 설정 파일을 수정함
  • 서비스 재시작 명령을 실행함
  • 로그를 확인하면서 정상 여부를 확인함

이 방식은 소규모 환경에서는 가능할 수 있지만, 시스템이 커질수록 위험이 급격히 증가함.

수동 배포의 대표적 문제

  • 같은 작업을 사람마다 다르게 수행할 수 있음
  • 누락된 설정이 생길 수 있음
  • 실행 순서가 잘못될 수 있음
  • 배포 기록이 남지 않을 수 있음
  • 롤백이 어려움

즉, 수동 배포는 재현성일관성이 떨어짐.

같은 작업을 언제, 누가, 어느 서버에서 수행하더라도 동일한 결과가 나와야 하는데, 수동 방식에서는 이 보장이 약함.


3. DevOps의 핵심 요소


3.1 문화(Culture)

DevOps는 협업 문화가 매우 중요함.

개발과 운영을 서로 다른 이해관계자로 보는 것이 아니라, 같은 서비스 품질을 책임지는 공동 주체로 보는 관점이 필요함.

문화 측면에서 중요한 요소는 다음과 같음.

  • 책임 공유
  • 빠른 피드백
  • 투명한 작업 이력
  • 문제를 숨기지 않고 드러내는 태도
  • 장애를 개인 실수보다 시스템 개선 관점에서 보는 문화

3.2 자동화(Automation)

DevOps의 가장 눈에 띄는 특징은 자동화다.

반복 가능하고 규칙적인 작업은 자동화해야 함.

대표적인 자동화 대상은 다음과 같음.

  • 소스코드 빌드
  • 테스트 실행
  • 정적 분석
  • 패키징
  • 컨테이너 이미지 생성
  • 배포
  • 모니터링 및 알림
  • 인프라 프로비저닝

자동화가 중요한 이유는 사람을 줄이기 위해서가 아니라,

사람이 실수하기 쉬운 반복 작업을 시스템이 일관되게 수행하도록 하기 위해서다.


3.3 측정과 모니터링(Measurement / Monitoring)

배포를 자동화했다고 끝나는 것이 아님.

운영 환경에서 실제로 어떤 일이 일어나는지 계속 확인해야 함.

예를 들면 다음 항목을 관찰해야 함.

  • 응답 시간
  • 에러율
  • CPU / Memory 사용량
  • 배포 이후 장애 발생 여부
  • 사용자 행동 변화
  • 로그와 이벤트 흐름

DevOps에서는 배포 이후 상태를 모니터링하고, 그 결과를 다시 개발과 운영 개선으로 연결하는 흐름이 중요함.


3.4 공유(Sharing)

운영 경험, 장애 원인, 배포 이력, 설정 정보가 특정 개인에게만 있으면 DevOps가 제대로 동작하기 어려움.

따라서 다음과 같은 정보는 가능한 한 공유돼야 함.

  • 배포 절차
  • 인프라 구성
  • 운영 매뉴얼
  • 장애 대응 기록
  • 코드 변경 이력
  • 테스트 결과
  • 파이프라인 결과

즉, DevOps는 기술 자동화만이 아니라 지식의 공유 구조도 중요하게 봄.


4. CI/CD란 무엇인가

DevOps를 설명할 때 가장 많이 함께 등장하는 개념이 CI/CD다.

CI/CD는 DevOps를 실현하는 핵심 실행 체계 중 하나라고 볼 수 있음.


4.1 CI의 의미

CI는 Continuous Integration, 즉 지속적 통합을 의미한다.

여기서 핵심은 개발자가 각자 작업한 코드를 자주 통합하고, 그 통합 과정에서 문제가 없는지 자동으로 검증하는 것이다.

예를 들어 여러 개발자가 각자 기능을 만들고 있는데, 이를 오랫동안 따로 들고 있다가 한 번에 합치면 충돌과 오류가 많이 발생함.

반대로 작은 단위로 자주 병합하고, 병합 시마다 빌드와 테스트를 돌리면 문제를 빨리 발견할 수 있음.

CI의 핵심 목적

  • 통합 시점의 충돌 최소화
  • 빌드 실패 조기 발견
  • 테스트 자동화
  • 코드 품질 유지
  • 배포 가능한 상태를 지속적으로 유지

4.2 CD의 의미

CD는 문맥에 따라 두 가지 의미로 사용됨.

  • Continuous Delivery
  • Continuous Deployment

4.2.1 Continuous Delivery

Continuous Delivery는

언제든지 운영 배포 가능한 상태로 소프트웨어를 유지하는 것을 의미한다.

즉, 코드 변경이 발생하면 자동으로 다음 단계까지 진행함.

  • 빌드
  • 테스트
  • 패키징
  • 배포 준비

다만 실제 운영 반영은 사람이 승인해서 수행할 수도 있음.

즉, Continuous Delivery는

배포 직전까지 자동화되지만, 운영 배포 버튼은 사람이 누를 수 있는 상태라고 이해하면 됨.


4.2.2 Continuous Deployment

Continuous Deployment는

자동 검증을 통과한 변경 사항이 사람 개입 없이 운영 환경까지 자동 반영되는 방식을 의미한다.

즉,

  • 코드 커밋
  • 빌드
  • 테스트
  • 배포
  • 운영 반영

이 전체가 자동으로 이어질 수 있음.

이 방식은 자동화 수준이 매우 높지만, 그만큼 테스트 신뢰도와 운영 통제가 매우 중요함.


4.3 CI / Continuous Delivery / Continuous Deployment 비교

구분의미자동화 범위운영 배포 승인
CI코드 통합과 검증 자동화빌드, 테스트 중심포함되지 않음
Continuous Delivery배포 가능한 상태까지 자동화빌드, 테스트, 패키징, 배포 준비사람 승인 가능
Continuous Deployment운영 반영까지 자동화코드 변경부터 운영 배포까지자동

5. CI/CD 파이프라인의 기본 구조

5.1 파이프라인이란

파이프라인은 코드를 변경한 뒤 그 결과가 운영 반영되기까지의 절차를 단계별로 자동 연결한 흐름이다.

일반적으로 다음과 같은 구조를 가짐.

Source
 → Build
 → Test
 → Package
 → Publish Artifact
 → Deploy
 → Verify

각 단계는 앞 단계 결과를 바탕으로 동작하며, 중간에 실패하면 다음 단계로 넘어가지 않음.


5.2 주요 단계 설명

1) Source

개발자가 Git 같은 형상관리 시스템에 코드를 커밋함.

파이프라인은 보통 이 커밋이나 Pull Request를 기준으로 시작됨.

2) Build

소스코드를 실행 가능한 형태로 변환하는 단계다.

언어에 따라 다음과 같은 작업이 포함될 수 있음.

  • Java: compile, package
  • Node.js: dependency install, build
  • Python: package build 또는 단위 테스트 준비
  • Docker: container image build

3) Test

자동 테스트를 수행함.

  • Unit Test
  • Integration Test
  • Lint
  • Static Analysis

테스트 단계는 빠른 피드백을 제공하는 핵심 단계다.

4) Package / Artifact

빌드 결과물을 배포 가능한 단위로 묶음.

예:

  • JAR 파일
  • WAR 파일
  • ZIP 패키지
  • Docker Image

이 산출물을 Artifact라고 부른다.

5) Deploy

생성된 아티팩트를 특정 환경으로 배포함.

  • 개발 환경
  • 테스트 환경
  • 스테이징 환경
  • 운영 환경

6) Verify

배포가 끝난 뒤 정상 동작 여부를 확인함.

  • 헬스체크
  • 스모크 테스트
  • 간단한 API 호출 확인
  • 모니터링 지표 확인

6. DevOps와 CI/CD의 관계

DevOps와 CI/CD는 자주 함께 언급되지만 같은 개념은 아님.

6.1 차이점

  • DevOps는 문화, 운영 방식, 협업 모델까지 포함하는 더 넓은 개념임
  • CI/CD는 DevOps를 실현하는 기술적 실행 체계 중 하나임

즉, DevOps는 철학과 운영 방식에 가깝고, CI/CD는 이를 구현하는 구체적 방법이다.


6.2 관계 정리

다음처럼 이해하면 좋음.

  • DevOps가 방향이라면, CI/CD는 실행 수단임
  • DevOps가 협업과 속도를 요구한다면, CI/CD는 자동화를 통해 이를 가능하게 함
  • DevOps가 품질과 안정성을 동시에 원한다면, CI/CD는 검증 가능한 반복 프로세스를 제공함

즉, CI/CD 없이 DevOps를 말할 수는 있어도, 실제 조직에서 DevOps를 실현하려면 거의 반드시 CI/CD가 필요함.


7. 왜 지금 CI/CD가 중요한가

현재 시스템 환경에서는 다음 특징이 매우 강함.

  • 마이크로서비스 구조 확산
  • 클라우드 기반 인프라 사용 증가
  • 컨테이너와 쿠버네티스 사용 확대
  • 기능 배포 주기 단축
  • 보안 패치와 규제 대응 속도 요구 증가

이런 환경에서는 사람이 일일이 배포 절차를 수행하는 방식이 한계에 부딪힘.

CI/CD가 중요한 이유는 다음과 같음.

7.1 변경 속도를 높일 수 있음

작은 변경을 자주 반영할 수 있음.

문제가 생겨도 영향 범위를 줄일 수 있음.

7.2 품질을 일관되게 유지할 수 있음

커밋마다 자동으로 빌드와 테스트를 수행하므로 오류를 조기에 발견할 수 있음.

7.3 운영 리스크를 줄일 수 있음

수작업이 줄어들어 실수 가능성이 감소함.

7.4 롤백과 추적이 쉬워짐

어떤 변경이 언제 반영됐는지 기록이 남고, 이전 버전 복구도 쉬워짐.

7.5 팀 협업이 좋아짐

파이프라인 상태, 실패 지점, 테스트 결과가 공유되므로 개발과 운영 간 정보 비대칭이 줄어듦.


8. 아키텍처 관점에서 보는 DevOps 흐름

개발자 코드 변경
   ↓
형상관리 시스템(GitHub)
   ↓
CI 도구(Jenkins / GitHub Actions)
   ↓
빌드 및 테스트
   ↓
아티팩트 생성(Docker Image 등)
   ↓
배포 대상 환경 반영
   ↓
운영 모니터링 및 피드백

요약

  • DevOps는 개발과 운영의 협업, 자동화, 빠른 피드백을 중심으로 하는 운영 방식임
  • 전통적인 수동 배포와 사일로 구조는 현대적인 서비스 환경에서 한계가 큼
  • CI는 지속적 통합, CD는 지속적 전달 또는 지속적 배포를 의미함
  • CI/CD는 DevOps를 실현하는 핵심 실행 체계임
  • 자동화 파이프라인은 속도뿐 아니라 품질과 안정성을 함께 확보하기 위한 구조임

profile
Front-end Developer, Cloud Engineer

0개의 댓글