Cloud Native
클라우드 네이티브 4대 요소 — 컨테이너·MSA·CI/CD·DevOps 정리
[클라우드 네이티브](https://www.cncf.co.kr/cloud-native/what-is-cloud-native/)를 설명할 때 빠지지 않는 네 단어가 있습니다. 컨테이너, 마이크로서비스(MSA), CI/CD, DevOps 입니다. 이 넷을 묶어 “4대 요소”라고 부르는 것은 편의상 만든 표현이 아닙니다. 공공 부문에서 널리 쓰이는 『클라우드 네이티브 정보시스템 구축 개발자 안내서』도 데브옵스…
2026년 07월 29일

컨테이너 — 어디서든 똑같이 실행되는 표준 포장 단위
컨테이너는 애플리케이션과 실행 환경을 하나의 이미지로 묶어, 어느 서버에서든 동일하게 실행되게 만드는 격리 단위입니다.
쿠버네티스 공식 문서는 컨테이너를 “애플리케이션과 그 실행에 필요한 모든 의존성을 묶은, 실행 가능하고 이식성 있는 단위”로 설명합니다(출처: Kubernetes 공식 문서 — 컨테이너, 한국어). VM 이 게스트 OS 를 통째로 올리는 것과 달리, 컨테이너는 호스트 OS 커널을 공유하면서 프로세스 수준에서 격리됩니다. 그래서 기동이 초 단위로 빠르고 이미지가 가볍습니다.
실무 관점에서 컨테이너의 가치는 두 가지입니다. 첫째, “제 PC 에서는 되는데요” 문제를 구조적으로 없앱니다. 개발·테스트·운영 환경이 같은 이미지를 쓰기 때문입니다. 둘째, 이미지 규격이 OCI(Open Container Initiative) 표준으로 통일되어 Docker 로 만든 이미지를 어떤 컨테이너 런타임에서도 실행할 수 있습니다.
표준은 두 층으로 나뉜다 — CRI 와 OCI
컨테이너 이야기에서 Docker·containerd·CRI-O·runc 가 뒤섞여 나오는 이유는 런타임이 두 계층으로 나뉘어 있기 때문입니다. containerd 와 CRI-O 같은 하이 레벨 런타임은 이미지 관리·저장소·네트워크·로그를 다루고, runc 처럼 실제로 프로세스를 띄우고 격리하는 로우 레벨 런타임을 호출합니다. 두 계층에는 각각 다른 표준이 걸려 있습니다. CRI(Container Runtime Interface)는 쿠버네티스가 여러 런타임과 gRPC 로 대화하기 위한 인터페이스이고, OCI 는 이미지 포맷과 런타임 동작을 정의해 벤더 종속을 없애는 규격입니다. 보안 격리를 더 강하게 가져가야 한다면 시스템 콜을 사용자 공간에서 처리하는 gVisor, 경량 VM 을 쓰는 Kata Containers 같은 선택지도 있습니다(출처: 쿠버네티스, cri-o, runC? 컨테이너 기술 표준과 구분).

이미지가 늘어나면 레지스트리가 다음 관문이 된다
컨테이너를 본격적으로 쓰기 시작하면 곧바로 이미지 관리 문제가 따라옵니다. 프라이빗 레지스트리에 담아야 할 이미지는 애플리케이션 이미지 하나가 아니라 네 범주입니다. 개발팀이 만든 애플리케이션 이미지, 그 토대가 되는 베이스 이미지(OS·언어 런타임), PostgreSQL·Redis·Kafka 같은 미들웨어 이미지, 그리고 kube-apiserver·etcd·CoreDNS·Ingress 컨트롤러처럼 클러스터 자체를 구성하는 인프라 도구 이미지입니다.
퍼블릭 레지스트리를 직접 참조하는 방식이 위험한 이유도 분명합니다. Docker Hub 의 Rate Limit 에 걸려 빌드가 실패하고, 외부망 장애 한 번에 사내 모든 빌드가 멈추며, :latest 나 :18-alpine 같은 태그가 가리키는 실제 이미지(Digest)가 예고 없이 바뀌기도 합니다. “어제는 되던 빌드가 오늘 안 되는” 현상의 흔한 원인입니다. 그래서 표준 베이스 이미지를 사전 승인 목록으로 정하고 내부 레지스트리에 미러링한 뒤, Dockerfile 의 FROM 이 내부 주소를 바라보도록 강제하는 방식이 권장됩니다(출처: 컨테이너 레지스트리 이미지 관리 방안).
컨테이너가 가져오는 또 하나의 변화는 운영 방식 자체입니다. 배포된 서버에 접속해 설정을 고치는 대신, 변경이 반영된 새 이미지를 만들어 통째로 교체하는 불변 인프라(Immutable Infrastructure)가 기본값이 됩니다. 서버마다 설정이 조금씩 달라지는 설정 드리프트가 사라지고, 롤백은 이전 이미지로 되돌리는 일이 됩니다.
컨테이너 수가 늘어나면 배치·복구·확장을 자동화할 오케스트레이션이 필요해지는데, 그 사실상 표준이 쿠버네티스(Kubernetes)입니다. 쿠버네티스는 구글이 10년 이상 내부에서 운영하던 Borg 의 경험을 이어받아 2014년 오픈소스로 공개되고 2015년 CNCF 에 기부되었습니다. 핵심은 선언적 API 입니다. “컨테이너 3개를 8080 포트로 띄워 달라”고 원하는 상태를 선언하면, 컨트롤러 루프가 현재 상태를 계속 감시하며 그 선언에 맞춥니다(출처: 쿠버네티스: 마이크로서비스의 운영을 위한 필수 플랫폼). 구조를 더 들여다보려면 쿠버네티스 아키텍처와 배포 최소 단위인 Pod 부터 보시면 됩니다.
마이크로서비스 — 독립 배포가 가능한 작은 서비스들의 집합
마이크로서비스는 하나의 애플리케이션을 독립적으로 배포·확장할 수 있는 작은 서비스들로 나누는 설계 방식입니다.
CNCF 용어집은 마이크로서비스를 “모놀리식 애플리케이션에 대조되는 애플리케이션 아키텍처 패턴”으로 규정하면서, 겉으로는 단일 앱처럼 보이지만 실제로는 긴밀하게 맞물려 동작하는 작은 서비스들의 모음이라고 설명합니다(출처: CNCF Cloud Native Glossary — 마이크로서비스(한국어)). 결제·회원·주문을 한 덩어리로 배포하는 모놀리식과 달리, 각 서비스가 저마다의 코드베이스·배포 주기·확장 정책을 가집니다.
장점은 분명합니다. 주문 서비스만 고쳐서 배포할 수 있고, 트래픽이 몰리는 결제 서비스만 늘릴 수 있으며, 한 서비스의 장애가 전체 중단으로 번지는 것을 막을 수 있습니다. 반면 대가도 있습니다. 서비스 수만큼 배포 대상이 늘고, 서비스 간 네트워크 통신이 새 실패 지점이 되며, 요청 하나가 여러 서비스를 거치므로 장애 추적이 어려워집니다. 분리 기준도 중요합니다. 업무 경계(도메인)를 따라 나누지 않고 기술 계층으로만 나누면, 서비스끼리 강하게 얽혀 모놀리식보다 못한 “분산 모놀리식”이 됩니다.

서비스를 나누면 그때부터 필요해지는 것들
서비스를 쪼개는 순간, 모놀리식에서는 함수 호출 한 줄이던 일이 네트워크 통신이 됩니다. 상대 서비스를 어떻게 찾을지(서비스 디스커버리), 인스턴스가 여럿일 때 어디로 보낼지(로드 밸런싱), 응답이 없을 때 어떻게 버틸지(장애 격리)를 매번 직접 구현하기는 어렵습니다. 이 공통 문제를 묶어 제공하는 것이 MSA 프레임워크이고, 그 출발점은 넷플릭스가 공개한 Netflix OSS 였습니다. 이후 Spring Cloud 가 이를 계승했고, 경량·고성능을 앞세운 Micronaut·Go Kit·Go Micro 같은 대안이 이어졌습니다(MSA 프레임워크 비교).
품질 검증 방식도 달라집니다. 서비스마다 단위 테스트로 내부 로직을 검증하고, 통합 테스트로 서비스 간 연계를 확인해야 합니다. 특히 API 스펙 같은 서비스 간 계약이 바뀔 때 호환성 문제가 조용히 운영까지 흘러가지 않도록, 테스트는 CI/CD 파이프라인 안에서 자동으로 돌아야 합니다(출처: MSA 환경에서 단위 테스트와 통합 테스트).
분해 자체를 도구의 도움을 받아 시작할 수도 있습니다. IBM 이 만든 Mono2Micro 는 모놀리식 코드의 정적·동적 분석으로 기능을 논리적으로 묶어 서비스 후보를 제안합니다. 도메인 경계를 사람이 정하되, 얽힌 호출 관계를 파악하는 밑작업의 시간을 줄여 주는 방식입니다.
이 대가를 감당하게 해 주는 장치가 나머지 요소들입니다. 배포 폭증은 CI/CD 자동화로, 잘게 나뉜 서비스의 배치·복구·확장은 쿠버네티스로, 장애 추적은 메트릭·로그·트레이스를 다루는 OpenTelemetry 기반 관측성으로 받아 냅니다.
CI/CD — 사람 손을 거치지 않는 배포 파이프라인
CI/CD 는 코드 통합·테스트·배포를 자동 파이프라인으로 만들어, 작은 변경을 자주 안전하게 내보내는 체계입니다.
CI(지속적 통합, Continuous Integration)는 코드 변경을 가능한 한 자주 통합하는 관행이며, 커밋할 때마다 CI 서버가 병합 가능 여부와 테스트·코드 품질 검사를 자동으로 돌립니다. CNCF 용어집은 CI 를 지속적 제공(CD)의 선행 조건으로 규정합니다(출처: CNCF Cloud Native Glossary — Continuous Integration). 통합 주기가 짧을수록 충돌이 작을 때 발견되고, 문제를 고치는 비용도 줄어듭니다. CD(지속적 배포, Continuous Delivery/Deployment)는 검증을 통과한 결과물을 스테이징·운영 환경까지 자동으로 내보내는 단계입니다.
마이크로서비스 환경에서 CI/CD 는 선택이 아니라 전제 조건입니다. 서비스가 30개면 배포 대상도 30개입니다. 사람이 수동 절차로 감당할 수 있는 규모가 아닙니다. 반대로 파이프라인이 갖춰지면 배포는 “행사”에서 “일상”이 됩니다. 변경 단위가 작아지므로 배포당 위험도 줄어듭니다.
도구는 CI 축과 CD 축으로 갈린다
도구 지형은 크게 두 축입니다. 코드 저장소에 붙어 빌드·테스트를 돌리는 CI 축에는 GitHub Actions 와 GitLab CI 가 있습니다. 저장소와 파이프라인을 한 플랫폼에서 관리하고 YAML 로 선언한다는 점이 공통이며, 마켓플레이스의 액션을 조합해 복잡한 빌드 단계를 빠르게 구성할 수 있습니다. 쿠버네티스에 실제로 배포하는 CD 축의 대표는 Argo CD 입니다. 오랜 기간 표준이던 Jenkins 는 플러그인 생태계라는 강점이 여전하지만, 컨테이너 네이티브 환경에 맞춘 재구성이 필요한 위치에 있습니다(출처: Jenkins, ArgoCD, GitHub Actions – 반드시 알아야 하는 CI/CD 도구들).
파이프라인이 갖춰지면 다음 질문은 “어떻게 내보낼 것인가”입니다. 쿠버네티스에서 흔히 쓰는 세 가지 배포 전략은 각각 목적이 다릅니다.
- 롤링 업데이트 — 인스턴스를 조금씩 새 버전으로 교체합니다. Deployment 의 기본 동작이라 별도 구성 부담이 가장 작습니다.
- 블루/그린 — 동일한 환경을 두 벌 운영하다가 트래픽을 한 번에 전환합니다. 롤백이 트래픽을 되돌리는 것으로 끝나지만, 자원이 두 배로 듭니다.
- 카나리 — 5% → 25% → 50% → 100% 처럼 트래픽 비중을 단계적으로 올리며 성능과 오류율을 관찰합니다. 위험을 가장 잘게 나누는 대신 트래픽 분할과 지표 판정 체계가 필요합니다.
GitOps — 배포 이력이 곧 Git 커밋
최근에는 CI/CD 를 한 단계 확장한 GitOps 방식이 자리 잡았습니다. 배포 대상 상태를 Git 저장소에 선언해 두고, Argo CD 같은 도구가 클러스터의 실제 상태를 저장소의 선언과 계속 일치시키는 방식입니다. 배포 이력이 Git 커밋으로 남으므로 감사와 롤백이 단순해집니다. “누가 언제 무엇을 배포했나”라는 질문에 커밋 로그가 답하고, 문제가 생기면 이전 커밋으로 되돌리는 것이 곧 롤백이 됩니다.

이 방식이 어느 규모까지 버티는지는 Adobe 의 사례가 보여 줍니다. Adobe 는 내부 개발자 플랫폼 “Flex”를 GitOps 기반으로 운영하는데, 2024년 10월 기준 360개 이상의 원격 쿠버네티스 클러스터, 22,000개 이상의 Argo CD 애플리케이션, 월 30,000건 이상의 배포, 1,000개 이상의 프로덕션 마이크로서비스를 처리합니다. 개발자는 Backstage 기반 포털에서 골든 템플릿으로 프로젝트를 시작하고, 배포 시점에 필요한 DNS 엔드포인트·네임스페이스·Argo CD 앱이 자동으로 만들어지며, 카나리와 블루/그린은 기본 제공되는 선택지입니다(출처: 360개 쿠버네티스 클러스터를 지원하는 Adobe 의 GitOps 플랫폼 확장 전략).
DevOps — 세 기술을 굴러가게 만드는 문화라는 접착제
DevOps 는 개발과 운영을 하나의 책임으로 묶는 일하는 방식이며, 앞의 세 기술이 실제로 돌아가게 만드는 조직적 기반입니다.
이 단어의 출발점부터가 조직 문제였습니다. 2009년 벨기에의 개발자이자 컨설턴트인 Patrick Debois 는 개발자가 빠른 릴리스를 원하고 운영자가 안정성을 이유로 이를 늦추는 갈등을 반복해서 겪은 끝에, 겐트에서 첫 DevOpsDays 를 열며 이 개념을 공론화했습니다. 처음부터 도구가 아니라 사일로를 허무는 협업 모델을 가리키는 말이었습니다(출처: DevOps 라는 단어를 사용하게 된 이유는 무엇인가?).
컨테이너·MSA·CI/CD 를 전부 도입하고도 효과를 못 보는 조직에는 공통점이 있습니다. 개발팀은 “만들면 끝”, 운영팀은 “받아서 지키면 끝”이라는 분업이 그대로라는 점입니다. 배포 자동화가 있어도 승인 절차가 부서 간 티켓으로 오가면 배포 주기는 줄지 않습니다.
DevOps 는 이 벽을 허무는 문화이자 실천입니다. 서비스를 만든 팀이 그 서비스의 운영까지 책임지고(“You build it, you run it”), 장애가 나면 비난 대신 원인 분석과 재발 방지에 집중하며, 반복 작업은 자동화로 밀어냅니다. 실천을 떠받치는 기술 축은 네 가지로 정리됩니다. 코드 커밋에서 배포까지 잇는 CI/CD, 인프라를 코드로 관리해 환경을 반복 재현하는 IaC(Infrastructure as Code), 상태를 실시간으로 파악하는 모니터링·로깅, 그리고 보안 점검을 파이프라인 안으로 끌어들이는 DevSecOps 입니다.
조직 형태는 다양합니다. 개발팀 안에 운영 역량을 넣는 방식, 신뢰성 엔지니어링(SRE) 팀을 별도로 두는 방식, 공통 플랫폼 팀이 표준 배포 경로를 제공하고 서비스 팀이 그 위에서 자율 운영하는 방식이 대표적입니다. 마지막 형태가 최근 플랫폼 엔지니어링이라는 이름으로 자리 잡은 흐름인데, 핵심은 내부 플랫폼을 인프라가 아니라 제품으로 다루는 관점입니다. 사용자인 개발팀의 요구를 조사하고, 우선순위를 정해 만들고, 피드백을 받아 개선하는 순환을 돌립니다. 형태가 무엇이든 공통 원칙은 “배포한 사람이 그 결과를 지켜본다”입니다. 기술 셋과 문화 하나로 구성된 4대 요소에서 DevOps 가 “접착제”로 불리는 이유는, 나머지 셋의 효과가 조직의 협업 방식에 따라 살기도 죽기도 하기 때문입니다.
네 요소는 어떻게 맞물리는가 — 하나만 도입하면 반쪽인 이유
네 요소는 포장(컨테이너)·설계(MSA)·배포(CI/CD)·문화(DevOps)로 역할이 나뉘며, 어느 하나가 빠지면 나머지의 효과가 급감합니다.
의존 관계를 따라가 보겠습니다.
- MSA 는 CI/CD 를 요구합니다. 서비스를 잘게 나눈 만큼 배포 대상이 늘어나므로, 자동 파이프라인 없이는 운영이 마비됩니다.
- CI/CD 는 컨테이너를 요구합니다. 파이프라인이 만들어 낸 결과물이 환경마다 다르게 동작하면 자동화의 의미가 없습니다. 어디서든 같은 이미지가 같은 방식으로 실행되어야 합니다.
- 컨테이너는 오케스트레이션과 관측성을 부릅니다. 수백 개 컨테이너의 배치·복구는 쿠버네티스가, 잘게 나뉜 서비스의 상태 추적은 관측성 체계가 맡습니다.
- 셋 모두 DevOps 를 요구합니다. 도구가 아무리 자동화되어도 조직이 부서 벽 너머로 티켓을 던지는 방식이면 배포 주기는 짧아지지 않습니다.

거꾸로 읽으면 “하나만 도입”의 함정이 보입니다. 컨테이너만 도입하면 포장만 바뀐 모놀리식이고, MSA 만 도입하면 배포 지옥이 열리며, CI/CD 만 도입하면 파이프라인 끝에서 수동 운영이 병목이 됩니다. 애플리케이션이 이 구조에서 제 효과를 내려면 설계 원칙도 함께 바뀌어야 하는데, 그 표준 교양이 12 Factor App 방법론입니다. 설정을 코드에서 분리하고, 의존성을 명시적으로 선언하며, 프로세스를 상태 없이 유지하라는 원칙들은 컨테이너·MSA·CI/CD 가 전제하는 조건을 애플리케이션 쪽에서 갖춰 주는 항목들입니다.
규모가 커지면 맞물림의 약한 고리가 드러난다
네 요소가 실제로 어떻게 맞물리는지는 대규모 운영 사례에서 선명하게 보입니다. 카카오는 퍼블릭 클라우드가 아닌 온프레미스에 7,000개 이상의 쿠버네티스 클러스터와 12만 대 이상의 노드를 운영합니다. 클러스터를 크게 몇 개로 묶는 대신 잘게 쪼갠 선택인데, 장애 폭발 반경이 줄고 업그레이드가 국소화되는 대신 네트워킹과 관측성의 표준화 부담이 그만큼 커집니다.
실제로 병목이 된 곳은 스케줄러도 스토리지도 아닌 네트워킹이었습니다. CNI 는 Cilium, 서비스 로드밸런싱은 kube-proxy, L7 인그레스는 Nginx Ingress 로 세 계층이 겹치면서, 지연이나 패킷 드롭 하나를 추적하려면 서로 다른 세 모델을 동시에 들여다봐야 했습니다. 카카오가 CNI 를 원점에서 재평가한 끝에 eBPF 기반 Cilium 으로 kube-proxy 까지 대체한 결정의 기준은 벤치마크 수치가 아니라 운영성, 즉 장애를 분석할 때 봐야 할 컴포넌트가 줄어드는가였습니다(출처: 카카오 Kubernetes 구축 사례). 15명 운영자로 4만 개 노드와 1,300개 클러스터를 다루는 일본 LY 코퍼레이션 사례도 같은 이야기를 다른 각도에서 보여 줍니다. 규모가 커질수록 성능 최적화보다 표준화와 추적 가능성이 먼저입니다.
한눈에 보는 4대 요소 — 역할·도구·도입 신호·실패 패턴
네 요소를 역할과 대표 도구, 그리고 “우리에게 지금 필요하다”는 신호와 흔한 실패 패턴으로 정리하면 다음과 같습니다.
| 요소 | 역할 | 대표 도구·표준 | 도입이 필요하다는 신호 | 흔한 실패 패턴 |
|---|---|---|---|---|
| 컨테이너 | 포장 — 실행 환경 표준화 | Docker, OCI, containerd, CRI-O, runc | 환경마다 동작이 다름, 배포 재현 불가 | 이미지에 설정·시크릿을 박아 환경별 이미지 난립 |
| 마이크로서비스 | 설계 — 독립 배포·확장 단위 분리 | REST/gRPC API, 도메인 주도 설계, Spring Cloud | 한 기능 수정에 전체 재배포, 부분 확장 불가 | 기술 계층으로만 쪼갠 분산 모놀리식 |
| CI/CD | 배포 — 통합·테스트·릴리스 자동화 | GitHub Actions, GitLab CI, Jenkins, Argo CD | 배포가 행사화, 수동 절차로 야간 작업 반복 | 테스트 없는 빈 껍데기 파이프라인 |
| DevOps | 문화 — 개발·운영 책임 통합 | (도구가 아닌 실천) SRE, 플랫폼 엔지니어링, 블레임리스 회고 | 부서 간 티켓 핑퐁으로 배포 대기 누적 | 도구만 도입하고 조직 구조는 그대로 |
이 표를 점검표로 쓰는 방법은 간단합니다. 오른쪽 두 열을 우리 조직에 대입해 보는 것입니다. “도입 신호” 열에 해당 항목이 많은 요소가 다음 투자 대상이고, “실패 패턴” 열에 해당하는 항목이 있다면 새 도구를 늘리기 전에 그 패턴부터 해소하는 편이 효과가 큽니다. 예컨대 파이프라인이 있는데도 배포가 느리다면 필요한 것은 새 CI 도구가 아니라 테스트 자동화와 승인 절차 정리입니다.
어디서부터 시작할까 — 현실적인 도입 순서
출발점은 컨테이너입니다. 기존 애플리케이션을 컨테이너로 표준화한 뒤 CI/CD, 오케스트레이션, 서비스 분해 순으로 넓히는 경로가 실패 확률이 낮습니다.
권장 순서는 다음과 같습니다.
- 컨테이너화 — 모놀리식을 그대로 컨테이너에 담습니다. 설계를 바꾸지 않아도 환경 일관성과 배포 이식성을 먼저 얻습니다. 이 단계에서 베이스 이미지 표준과 프라이빗 레지스트리 정책을 함께 정해 두면 나중에 다시 손볼 일이 줄어듭니다.
- CI/CD 구축 — 컨테이너 이미지를 만들고 배포하는 파이프라인을 자동화합니다. 이 단계까지만 해도 배포 빈도와 안정성이 눈에 띄게 달라집니다.
- 오케스트레이션 도입 — 쿠버네티스로 배치·복구·확장을 자동화합니다. 롤링 업데이트 같은 무중단 배포가 기본 동작으로 들어옵니다.
- 점진적 서비스 분해 — 변경이 잦은 기능부터 마이크로서비스로 떼어 냅니다. 전면 재작성(빅뱅)이 아니라 경계를 하나씩 잘라 내는 방식입니다.
- 문화 정착 — 각 단계마다 만든 팀이 운영까지 맡는 구조와 자동화 우선 원칙을 함께 넓힙니다. DevOps 는 마지막 단계가 아니라 전 단계에 걸쳐 병행하는 축입니다.

이 순서가 절대적이지는 않지만, “설계 분해부터 시작”하는 역순 접근보다 리스크가 작다는 점은 분명합니다. 컨테이너와 파이프라인 없이 서비스부터 쪼개면, 늘어난 배포 부담을 받아 낼 도구가 없기 때문입니다. 또 하나 흔한 오해는 인프라만 옮기면 된다는 생각입니다. VM 에서 다른 VM 으로 옮기는 이전은 중복 투자에 그치기 쉽고, 클라우드에 올리는 것과 클라우드 네이티브로 가는 것은 다른 일입니다. 그 간극이 궁금하시다면 클라우드 네이티브 vs 클라우드 글을 먼저 보셔도 좋습니다.
네 요소를 한 문장으로 정리하면 이렇습니다. 컨테이너가 실어 나르고, 마이크로서비스가 나누고, CI/CD 가 흘려보내고, DevOps 가 그 전체를 굴러가게 합니다. 어느 하나가 아니라 이 맞물림 자체가 클라우드 네이티브의 뼈대입니다.
자주 묻는 질문 (FAQ)
Q. 4대 요소를 반드시 전부 도입해야 하나요?
장기적으로는 넷이 함께 있어야 효과가 완성되지만, 동시 도입은 권장하지 않습니다. 컨테이너 → CI/CD → 오케스트레이션 → 서비스 분해 순으로 단계를 밟고, DevOps 문화는 전 단계에 걸쳐 병행하는 방식이 현실적입니다.
Q. 컨테이너와 마이크로서비스는 같은 말 아닌가요?
다릅니다. 컨테이너는 애플리케이션을 담는 실행 단위(포장)이고, 마이크로서비스는 애플리케이션을 나누는 설계 방식입니다. 모놀리식을 컨테이너 하나에 담을 수도 있고, 마이크로서비스를 VM 에서 운영할 수도 있습니다.
Q. CI 와 CD 는 무엇이 다른가요?
CI(지속적 통합)는 코드를 자주 합치고 자동으로 빌드·테스트하는 단계이고, CD(지속적 배포)는 검증된 결과물을 운영 환경까지 자동으로 내보내는 단계입니다. CI 가 앞단, CD 가 뒷단이며 합쳐서 하나의 파이프라인을 이룹니다. 도구 선택 기준은 CI/CD 도구 비교 글에 정리되어 있습니다.
Q. Docker, containerd, runc 는 어떤 관계인가요?
계층이 다릅니다. containerd·CRI-O 는 이미지와 컨테이너 수명주기를 다루는 하이 레벨 런타임이고, runc 는 실제로 프로세스를 격리해 띄우는 로우 레벨 런타임입니다. 쿠버네티스는 CRI 로 하이 레벨 런타임과 대화하고, 이미지·런타임 규격은 OCI 표준이 맡습니다. 자세한 구분은 컨테이너 기술 표준과 구분 글에서 확인하실 수 있습니다.
Q. DevOps 는 도구를 도입하면 되는 건가요?
아닙니다. DevOps 의 본질은 개발과 운영을 하나의 책임으로 묶는 일하는 방식입니다. 파이프라인·모니터링 도구는 수단이고, 만든 팀이 운영까지 책임지는 구조와 자동화 우선 원칙이 자리 잡아야 효과가 납니다.
Q. 모놀리식은 항상 나쁜 선택인가요?
아닙니다. 팀이 작고 도메인 경계가 불분명한 초기 단계에는 모놀리식이 더 빠르고 단순합니다. 서비스 분해는 변경 빈도·팀 규모·확장 요구가 커져 모놀리식의 비용이 분해 비용을 넘어설 때 시작하는 편이 합리적입니다.
참고 리소스
표준·공식 문서
- CNCF 용어집 — 마이크로서비스(한국어)
- CNCF 용어집 — 컨테이너(한국어)
- CNCF 용어집 — DevOps(한국어)
- CNCF 용어집 — Continuous Integration
- Kubernetes 공식 문서 — 컨테이너(한국어)
함께 읽으면 좋은 글
개념 잡기
컨테이너·쿠버네티스
- 쿠버네티스(Kubernetes)란 무엇인가 — AI 표준 플랫폼
- 쿠버네티스 아키텍처 완전 정복 — 컨트롤 플레인부터 워커 노드까지
- 쿠버네티스 Pod 완벽 가이드 — 개념·생명주기·멀티컨테이너 패턴
- 쿠버네티스, cri-o, runC? 컨테이너 기술 표준과 구분
- 컨테이너 레지스트리 이미지 관리 방안
- Immutable Infrastructure 란 무엇인가?
마이크로서비스
- 쿠버네티스: 마이크로서비스의 운영을 위한 필수 플랫폼
- MSA 프레임워크 비교 | Spring Cloud vs Micronaut vs Go Kit vs Go Micro
- MSA 환경에서 단위 테스트와 통합 테스트 개념과 방안
- Mono2Micro — 애플리케이션을 자동으로 마이크로서비스로 만들어주는 도구
CI/CD·GitOps
- Jenkins, ArgoCD, GitHub Actions – 반드시 알아야 하는 CI/CD 도구들
- 쿠버네티스 환경에서 롤링 업데이트 배포 전략
- 쿠버네티스에서 블루/그린 배포 전략 구현
- Kubernetes 에서 카나리 배포 전략
- 360개 쿠버네티스 클러스터를 지원하는 Adobe 의 GitOps 플랫폼 확장 전략
DevOps·관측성
대규모 운영 사례
더 깊이 들어가려면
컨테이너·MSA·CI/CD·DevOps 각 요소의 공식 정의와 프로젝트 지형이 궁금하시다면 아래 자료에서 이어 보실 수 있습니다.




