Physical Address
South Korea
Physical Address
South Korea


새로운 대형 프로젝트나 클라우드 네이티브 전환을 검토하는 회의실에 들어가면, 거의 예외 없이 나오는 단어들이 있습니다. MSA, 컨테이너, 도커, 쿠버네티스… 여기에 조금 더 깊게 들어가면 오픈시프트(OpenShift)나 아코디언(Accordion) 같은 상용 플랫폼 이름까지 튀어나옵니다.
그런데 실제 기획자, 관리자, 심지어 몇몇 엔지니어분들과 이야기를 나누다 보면 이 용어들을 한 주머니에 넣고 마구 섞어 쓰는 경우를 정말 자주 봅니다.
“우리 이번에 도커(Docker) 도입하니까 아키텍처는 자동으로 MSA로 넘어가는 거죠?”
“쿠버네티스 쓰면 도커는 안 써도 되는 건가요?”
결론부터 콕 짚고 말씀드리면, 컨테이너 환경과 MSA(마이크로서비스 아키텍처)는 교집합이 있을 뿐, 태생부터가 완전히 다른 개념입니다. 이 둘을 동의어로 생각하고 프로젝트를 시작했다가는 십중팔구 아키텍처가 꼬여 배가 산으로 가게 됩니다.
제가 현업에서 겪은 시행착오와 수많은 밤샘의 경험을 녹여, 뜬구름 잡는 IT 인프라 개념을 아주 직관적으로 정리해 드리겠습니다. 대형 프로젝트에서 인프라 분리 이슈나 솔루션 선택으로 머리를 싸매고 계신 분들에게 확실한 이정표가 되기를 바랍니다.
이해를 돕기 위해 가장 직관적인 ‘건축’에 비유해 보겠습니다. MSA는 ‘집을 어떻게 설계하고 쪼갤 것인가’에 대한 설계 도면(소프트웨어 공학 방법론)이고, 컨테이너는 ‘그 집을 어떤 자재로 쉽고 빠르게 조립할 것인가’에 대한 최신식 건축 자재(인프라 기술)입니다.
| 구분 | MSA (Microservice Architecture) | 컨테이너 (Container) |
| 본질 | 소프트웨어 설계 방법론 | 인프라 가상화 기술 |
| 핵심 목적 | 서비스 간의 결합도를 낮춰 장애 전파 방지 | 어떤 서버 환경에서든 덩어리째 똑같이 실행 |
| 비유 | 레고 성을 만들기 위한 ‘조립 설계도’ | 규격화되어 딱딱 맞물리는 ‘레고 블록 자재’ |
MSA는 하나의 거대한 프로그램(Monolithic)을 로그인, 결제, 상품 관리, 자산 관리 등 서비스 단위로 쪼개어 독립적으로 개발하고 운영하는 방식입니다. 결제 모듈에 불이 나도 로그인이나 상품 조회는 정상 작동하게 만들겠다는 게 핵심입니다.
컨테이너는 애플리케이션과 원활한 실행에 필요한 모든 라이브러리, 설정 파일을 통째로 하나의 그릇에 담아 격리하는 기술입니다. “내 PC에서는 잘 되는데 왜 서버에만 올리면 에러가 나지?” 하는 개발자의 해묵은 스트레스를 해결하기 위해 태어났습니다.
MSA를 하게 되면 서비스를 수십, 수백 개로 쪼개야 합니다. 그런데 무겁고 느린 가상머신(VM)을 수백 대 띄우면 서버 비용과 자원 낭비가 감당이 안 됩니다. 반면 컨테이너는 OS 커널을 공유해서 가볍고, 1초 만에 켜고 끌 수 있습니다. 즉, MSA라는 예쁜 그림을 가장 효율적으로 담아낼 수 있는 ‘찰떡궁합의 그릇’이 컨테이너이기 때문에 항상 세트처럼 묶여 다니는 것입니다.
컨테이너 세계에 발을 들이면 필수적으로 마주치는 삼형제가 있습니다. 컨테이너, 도커, 그리고 쿠버네티스입니다. 이들은 경쟁 관계가 아니라, 명확한 계층 구조와 역할을 가집니다. 항만 물류 시스템을 상상하면 이해가 아주 쉽습니다.
┌────────────────────────────────────────────────────────┐
│ 쿠버네티스 (Kubernetes / K8s) │
│ ▶ 수천 개의 컨테이너 박스를 지휘하고 통제하는 '항만 총괄 시스템'│
└────────────────────────────────────────────────────────┘
│ (지휘 및 관리)
▼
┌────────────────────────────────────────────────────────┐
│ 도커 (Docker) │
│ ▶ 규격화된 표준 컨테이너 박스를 찍어내는 '제조사 및 도구' │
└────────────────────────────────────────────────────────┘
│ (생성 및 규격화)
▼
┌────────────────────────────────────────────────────────┐
│ 컨테이너 (Container) │
│ ▶ 내용물을 안전하게 격리하여 수송하는 '화물 박스 자체' │
└────────────────────────────────────────────────────────┘
이해를 돕기 위해 제가 실제로 자문을 맡았던 한 기업의 실전 인프라 구축 시나리오를 소개해 드리겠습니다. 트렌드만 좇다가 대형 사고가 날 뻔한 아찔한 상황이었습니다.
[상황 프로필]
- 기존 선행 프로젝트 (빌링 시스템): VM OS(RHEL 9.6) 기반으로 애플리케이션을 올리고, 대형 Oracle ExaCC DB를 연동하여 이미 5개월 동안 뼈대를 튼튼하게 다져놓은 상태 (컨테이너 미적용).
- 신규 프로젝트 (자산관리 시스템): 원래 같이 시작하려다가 윗분들의 승인이 지연되면서, 뒤늦게 5개월이나 늦은 시점에 킥오프하게 된 상황. 일정이 매우 촉박함.
여기서 아키텍트인 저에게 두 가지 날카로운 질문이 던져졌습니다. 실무를 하시는 분들이라면 누구나 한 번쯤 마주할 딜레마입니다.
💡 그렇게 판단한 이유:
우선 두 프로젝트의 생명주기(Lifecycle)가 완전히 다릅니다. 빌링 시스템은 5개월간 공을 들여 이제 안정화 단계나 오픈을 바라보고 있습니다. 이 민감한 시점에 늦게 출발한 자산관리 개발진이 들어와서 매일 테스트하고, 빌드와 배포를 반복하며 소스 에러를 내면 선행 중인 빌링 시스템의 운영 환경까지 덩달아 마비될 리스크가 너무 컸습니다.
게다가 ‘빌링(Billing)’은 돈이 오가는 기업의 핵심(Core) 워크로드입니다. 반면 자산관리는 임직원들이 주로 쓰는 내부 관리형 시스템이죠. 두 업무를 한 인프라에 섞어 쓰다가 자산관리의 무거운 통계 쿼리나 배치 작업이 빌링 시스템의 자원(CPU, 메모리)을 갉아먹으면 그야말로 대형 장애로 이어집니다. 독립성을 위해 물리 분리가 정답이었습니다.
🚫 신기술을 과감히 포기한 실리적 이유:
트렌드만 따지면 무조건 컨테이너와 쿠버네티스를 도입하자고 했어야 합니다. 하지만 5개월이나 지연된 일정을 만회해야 하는 비즈니스 관점에서는 VM OS(RHEL 9.6) 기반으로 가는 것이 훨씬 영리하고 안전한 선택이었습니다.
만약 여러분의 조직이 장기적인 클라우드 네이티브 로드맵에 따라 “우리는 이번에 무조건 컨테이너로 간다!”라고 최종 결정을 내렸다면, 다음 고개는 “순수 오픈소스 쿠버네티스를 쓸 것인가, 돈을 주더라도 상용 솔루션을 살 것인가?”입니다.
순수 오픈소스 쿠버네티스(Vanilla Kubernetes)는 공짜지만, 모니터링, 로깅, 보안 설정을 엔지니어가 일일이 수작업으로 조립해야 하는 ‘대형 조립형 레고 블록’입니다. 기술 내재화가 완벽하지 않은 일반 기업이 덤볐다간 백전백패입니다.
결국 안정적인 엔터프라이즈 운영을 위해 상용 플랫폼을 찾게 되는데, 시장에서 가장 핫한 투톱이 바로 글로벌 1위 레드햇 오픈시프트(Red Hat OpenShift)와 국산 대안의 자존심 맨텍 아코디언(Mantech Accordion)입니다.
IBM 산하 레드햇의 오픈시프트는 전 세계 대기업과 대형 금융권에서 가장 신뢰받는 맏형 같은 플랫폼입니다.
국내 인프라 소프트웨어 명가인 ‘맨텍’이 만든 아코디언은 한국 기업의 정서와 IT 관리 환경을 철저하게 분석해서 만든 아주 실용적인 플랫폼입니다.
유행하는 신기술이 항상 정답은 아닙니다. 현재 우리 조직의 상황과 업무의 특성을 냉정하게 저울질하는 것이 프로젝트 성공의 지름길입니다. 머리가 복잡한 관리자분들을 위해 깔끔한 가이드를 정리해 드립니다.
기술의 화려함에 현혹되지 마세요. 비즈니스의 일정, 우리 팀원들의 현재 숙련도, 그리고 시스템의 특성을 종합적으로 고려해 ‘가장 실익이 큰 선택’을 내리는 것, 그것이 바로 진짜 일 잘하는 아키텍트의 자세입니다.
VM vs Container, 무조건 유행을 따라야 할까?