전략적인 모놀리스에서 마이크로서비스로의 전환. 검증된 패턴과 점진적인 접근 방식을 사용하여 모놀리스 애플리케이션을 확장 가능한 마이크로서비스로 분해합니다.
시작하기
모놀리스를 마이크로서비스로 분해하는 것은 기업이 수행할 수 있는 가장 위험 부담이 크면서도 가장 보상이 큰 아키텍처 변경 중 하나입니다. 저희는 수십 개의 팀이 이 전환을 성공적으로 수행하도록 안내했습니다 — 올바른 서비스 경계를 식별하고, 데이터 소유권 문제를 관리하며, 프로덕션 워크로드에 지장을 주지 않고 마이그레이션을 실행했습니다.
저희는 오케스트레이션을 위해 Kubernetes를, 이벤트 스트리밍을 위해 Apache Kafka를, 서비스 메시를 위해 Istio 또는 Linkerd를, GitOps 배포를 위해 ArgoCD를 사용합니다. 각 서비스는 독립적인 CI/CD, 자체 데이터스토어, 그리고 Jaeger 및 Prometheus를 이용한 포괄적인 분산 트레이싱을 가집니다.
모놀리스가 팀 자율성, 배포 빈도 또는 시스템 확장성을 제한하는 엔지니어링 조직을 위한 것입니다. 릴리스에 팀 간 조정이 필요하거나, 단일 구성 요소의 부하가 전체 시스템에 영향을 미치거나, 새로운 개발자를 온보딩하는 데 몇 달이 걸린다면 — 이제 분해할 때입니다.
모놀리스의 도메인을 분석하고, 경계 컨텍스트를 식별하며, 구성 요소 간의 결합을 매핑합니다.
목표 서비스 아키텍처를 설계하고, 데이터 분할을 계획하며, 비즈니스 가치에 따라 추출 순서를 우선순위화합니다.
공유 인프라 — Kubernetes, CI/CD 템플릿, 서비스 메시 및 가시성 스택을 구축합니다.
안티-코럽션 레이어를 구현하고 트래픽을 점진적으로 라우팅하면서 서비스를 한 번에 하나씩 추출합니다.
서비스 소유권, 온콜(on-call) 관행, SLO 추적 및 지속적인 아키텍처 거버넌스를 수립합니다.
저희는 domain-driven design을 사용하여 바운디드 컨텍스트를 식별하고, 가장 적게 결합된 모듈부터 점진적으로 서비스를 추출하며, 라우팅을 위해 API 게이트웨이를 구현하고, 전체 전환 과정에서 하위 호환성을 유지합니다.
MicrocosmWorks의 Monolith에서 microservices로의 마이그레이션은 시간당 $25-$50의 비용으로 책정됩니다. 총 투자 비용은 Monolith의 규모, 결합 복잡성 및 추출할 서비스의 개수에 따라 달라집니다.
타임라인은 모놀리식의 크기와 복잡성에 따라 크게 달라집니다. 일반적으로 첫 번째 서비스는 4-8주 내에 추출하며, 전체 마이그레이션은 6-18개월이 소요됩니다. 당사의 점진적 접근 방식은 전체 재작성이 아닌 각 단계에서 가치를 제공합니다.
요청-응답 패턴에는 동기식 REST 또는 gRPC를 구현하며, 이벤트 기반 통신을 위해서는 Kafka 또는 RabbitMQ를 통한 비동기 메시징을 사용합니다. 분산 트랜잭션에는 saga 패턴을 사용하고, 외부 라우팅을 위해서는 API gateways를 활용합니다.
저희는 서비스별 데이터베이스 패턴을 따르며, 서비스별 테이블을 전용 데이터베이스로 점진적으로 추출합니다. 전환 기간 동안, 데이터 접근을 유지하면서 공유 데이터베이스 종속성을 점진적으로 분리하기 위해 데이터베이스 뷰, CDC 또는 API 호출을 사용합니다.