Microservices & Containers Mechanics
독립적으로 배포 가능한 서비스들의 집합인 마이크로서비스 아키텍처(MSA), 컨테이너 가상화, 그리고 오케스트레이션 기술을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
마이크로서비스 및 컨테이너 메커니즘(Microservices & Containers Mechanics, MCM)은 거대한 소프트웨어를 작고 자율적인 서비스들의 집합으로 쪼개고, 이를 격리된 환경에서 민첩하게 실행하는 현대적 시스템 기법을 다룹니다.
모놀리식 시스템의 복잡도가 한계에 도달하면 물리적 분할이 필요합니다. 학습자는 서비스 경계를 정의하는 도메인 기반 설계(DDD)부터, 프로세스 수준의 격리를 제공하는 컨테이너(Container) 기술, 그리고 수천 개의 서비스를 관리하는 오케스트레이션(Orchestration) 원리를 배웁니다. 이를 통해 기술적 독립성과 비즈니스 유연성을 극대화하는 아키텍처를 확보합니다.
2. Scope & Boundaries
In-Scope
- MSA 아키텍처: 분산 시스템 설계, 데이터 탈중앙화(Database per Service), API Gateway
- 컨테이너 가상화: Docker 이미지 아키텍처, 런타임 레이어(namespace/cgroup), 레지스트리 물리
- 오케스트레이션 기초: Kubernetes 아키텍처(Pod, Service, Deployment), 스케줄링 논리
- 서비스 간 통신: REST vs gRPC, 서비스 메쉬(Service Mesh) 기초, 서비스 디스커버리
Out-of-Scope
- 단일 서비스 내부의 언어별 프레임워크 튜닝 (05. Programming Languages 영역으로 위임)
- 운영 체제 커널의 가상 메모리 관리 (03.03 Virtualization Physics 영역으로 위임)
- 대규모 클라우드 벤더의 전용 인프라 운영 (07.07 Cloud-Native 영역으로 위임)
Boundaries
- MCM vs. Scalability: SHA(07.03)는 '동일한 서버를 복제'하여 성능을 높이며, MCM은 '서로 다른 기능을 분할'하여 개발/배포의 독립성을 높입니다.
3. Counterexample
- 단순히 "Docker를 쓴다"는 것은 MCM 학습이 아닙니다. 왜 컨테이너 이미지 레이어가 계층 구조로 설계되어 전송 효율을 높이는지, 그리고 분산된 서비스 간의 분산 트랜잭션 문제를 해결하기 위해 왜 Saga 패턴이나 보상 트랜잭션이 물리적으로 필요한지 입증할 수 있어야 합니다.
4. Prerequisites
- 컴퓨터 아키텍처 및 병렬성 (Basic): 프로세스 격리와 자원 점유 개념이 컨테이너의 바탕이 됩니다. (02.03 Parallel Mechanics)
- 운영체제 및 시스템 메카니즘 (Recommended): 파일 시스템 레이어링과 네트워크 가상화 이해가 요구됩니다. (03.04 Storage Mechanics)
Learning Map
현대적 분산 시스템의 근간인 컨테이너와 마이크로서비스의 5단계 실무 여정입니다.
- Stage 1: Microservices Principles & Decomposition (분할 원리): 비즈니스 도메인을 분석하고 서비스 경계를 정의하는 설계 원칙을 학습합니다.
- Stage 2: Containerization & Docker Mechanics (격리 물리): 프로세스를 컨테이너화하고 이미지 레이어 구조를 이해하여 실행 환경을 표준화합니다.
- Stage 3: Kubernetes & Cluster Orchestration (운영 논리): 수많은 컨테이너를 가용성 있게 관리하고 자가 복구하는 클러스터 오케스트레이션을 탐구합니다.
- Stage 4: Service Mesh & Ingress Dynamics (연결 역학): 서비스 간 통신의 투명성과 보안, 그리고 외부 트래픽 인입을 정교하게 제어합니다.
- Stage 5: API Gateways & Edge Logic (관문 기술): 통합 인터페이스 제공과 엣지 로직을 통한 고성능 분산 시스템을 완성합니다.
6. Learning Topics
Basic
Core: 컨테이너와 격리 물리 (Container Isolation)
- Why to Learn: 애플리케이션 실행 환경의 일관성을 확보하고 시스템 자원을 효율적으로 분할하기 위함입니다.
- What to Learn:
- 컨테이너 vs 가상머신(VM): 커널 공유 여부에 따른 성능 밀도와 격리 수준의 물리적 차이
- Docker 이미지 아키텍처: Copy-on-Write 파일 시스템을 이용한 경량 이미지 생성 원리
- MSA의 혜택과 비용: 빠른 배포 주기를 얻기 위해 포기해야 하는 관리 복잡도의 트레이드오프
- How to Learn:
- Dockerfile 작성 시 이미지 레이어 순서에 따른 빌드 캐시 효율 비교 실습
- 호스트 OS의 프로세스 리스트에서 컨테이너 내부 프로세스가 어떻게 보이는지 확인
- Implement: 특정 애플리케이션의 최적화된 Docker 이미지 빌드 스크립트
Recommended
Core: 서비스 분할과 관문 설계 (Microservices Pattern)
- Why to Learn: 서비스 간 결합도를 낮추어 독립적인 개발과 배포가 가능하게 하기 위함입니다.
- What to Learn:
- API 게이트웨이 패턴: 클라이언트의 복잡한 요청을 내부 여러 서비스로 라우팅하고 통합하는 관문
- 서비스 디스커버리: 동적으로 변하는 서비스 IP 주소를 찾기 위한 메커니즘 (Consul, K8s DNS)
- Database per Service: 데이터 결합도를 낮추기 위한 물리 저장소 분리와 정합성 이슈 인식
- How to Learn:
- 두 개 이상의 서비스를 API Gateway 뒤로 배치하고 라우팅 규칙 설정 실습
- 서비스가 수평 확장될 때 DNS가 새로운 인스턴스를 어떻게 감지하는지 분석
- Implement: 서비스 간 의존성이 제거된 데이터베이스 분리 설계도
Practical
Core: 오케스트레이션과 인프라 모델링 (Kubernetes Mechanics)
- Why to Learn: 수백 개의 컨테이너를 사람의 개입 없이 안정적으로 운영하기 위해서입니다.
- What to Learn:
- Kubernetes 리소스 모델링: Pod, Service, Ingress를 조립하여 회복 탄력성 있는 서비스 배포
- 컨테이너 보안 기초: Rootless 컨테이너, 이미지 스캐닝 및 최소 권한(Least Privilege) 적용
- 서킷 브레이커와 재시도: 한 서비스의 마비가 전체 시스템으로 번지지 않게 하는 실무 패턴
- How to Learn:
- K8s 클러스터에서 특정 Pod을 강제로 삭제했을 때 시스템이 어떻게 자가 복구(Self-healing)하는지 관찰
- Ingress 컨트롤러를 통해 외부 트래픽이 서비스로 유입되는 경로 물리적 추적
- Implement: 고가용성 보장이 포함된 K8s 기반 마이크로서비스 배포 매니페스트
Advanced
Core: 분산 데이터와 서비스 메쉬 (Advanced MSA)
- Why to Learn: 분산 환경에서의 데이터 정합성 난제를 해결하고 가시성을 극대화하기 위해서입니다.
- What to Learn:
- Saga 패턴 구현: 비동기 이벤트를 이용한 분산 환경에서의 데이터 일관성 보장 기술
- 서비스 메쉬(Istio): 사이드카(Sidecar) 프록시를 통한 트래픽 제어, 보안, 가시성 통합 관리
- 엣지 컴퓨팅 MSA: 중앙 센터를 넘어 단말(Edge) 노드에서 동작하는 소형 마이크로서비스 설계
- How to Learn:
- 보상 트랜잭션(Compensating Transaction) 로직을 포함한 Saga 시나리오 구현
- 서비스 메쉬 대시보드(Kiali 등)를 통해 서비스 간 통신 토폴로지 시각화
- Implement: Saga 패턴이 적용된 주문-결제-재고 분산 트랜잭션 워크플로우
7. Terminology
8. References
Primary References
- [P2] SWEBOK v4.0 - Software Construction (Component-based) — Systematic decomposition.
- [P5] SFIA - System Architecture / Development — Professional skills management.
Secondary References
- [Building Microservices] Sam Newman — Foundational MSA patterns.
- [Microservices Patterns] Chris Richardson — Implementation strategies (Saga, CQRS).
Industry References
- [CNCF Landscape] — Container ecosystem standards.
- [The Kubernetes Book] Nigel Poulton — Practical orchestration.
9. Final Checklist
Primary Checklist
- 하나의 거대 모놀리스를 마이크로서비스로 분할할 때, 데이터베이스의 '외래키 제약'이 물리적으로 어떻게 대체되어야 하는지 설명할 수 있는가? (P2)
- Dockerfile 작성 시 왜 이미지 레이어 순서가 캐시 효율과 전송 속도에 물리적 영향을 미치는지 이해하는가? (P2)
Secondary Checklist
- 분산 시스템 환경에서 '서킷 브레이커'가 장애 전파(Cascading Failure)를 어떻게 물리적으로 차단하는지 입증 가능한가?
- 네트워크 홉(Hop)이 늘어남에 따라 발생하는 지연(Latency) 오버헤드를 측정하고, 비즈니스 허용 범위를 계산하는가?
Industry Checklist
- Kubernetes 환경에서 '자동 복구(Self-healing)'가 이루어지는 동안 트래픽 유입이 어떻게 차단되고 재개되는지 알고 있는가? (CNCF)
- 서비스 메쉬(Service Mesh)를 통해 암호화(mTLS)와 관측성을 애플리케이션 코드 수정 없이 확보하는 방법을 논할 수 있는가?