소프트웨어 아키텍처

팀 토폴로지

meellon 2026. 7. 11. 05:20

학습 목표

Conway's Law아키텍처·조직에 미치는 영향을 설명할 수 있다.

Team Topologies 4유형(stream-aligned·platform·enabling·complicated-subsystem)을 구분할 수 있다.

상호작용 모드(collaboration·X-as-a-Service·facilitating)를 설계에 적용할 수 있다.

앞서 본 MSA·Bounded Context 경계정렬하는 방법을 설명할 수 있다.

문제 상황

  • 마이크로서비스 12개인데 프론트 / 백엔드 / DBA서비스 소유 없음
  • 플랫폼 팀이 배포 티켓 — stream 팀 대기 3일
  • 주문 장애결제·재고·알림 동시 소집엔드투엔드 오너 없음
  • 아키텍트 4명모든 PR gate병목
  • CDC·검색 인덱스 전문 없음 반쯤 구현
  • ADR·평가 프로세스는 있는데 누가 배포 단위 소유하는지 불명

ADR 운영까지 갖췄다. 구조배포·변경하는 조직따라오지 않으면 MSA분산 모놀리스가 된다.

1. Conway's Law

Conway's Law — 시스템 구조조직 의사소통 구조반영한다.

정렬됨 어긋남
Order → Order API + DB + 이벤트 백엔드 모든 API
결정·배포 3팀 핸드오프 per 기능
장애 오너 명확 RCA 회의만 **길어짐
organizations which design systems are constrained to produce
designs which are copies of the communication structures
of these organizations  — Melvin Conway (1968)
  • 아키텍처 먼저 바꾸고 조직 그대로인위적 경계 무너짐
  • 역설계현재 코드 의존 그래프실제 대화
  • 앞서 MSA 분해 기준팀 ownership있었던 이유

2. Team Topologies 4유형

Team Topologies(Skelton & Pais) — 스트림 가치 전달인지 부하 분산.

유형 역할
Stream-aligned 가치 흐름 엔드투엔드 전달 주문·결제 여정
Platform stream 팀 부담 감소자기 서비스 API K8s·Kafka·CI·golden path
Enabling 임시 코칭·능력 전이 ADR·ATAM 워크숍
Complicated-subsystem 높은 전문성 하위 시스템 CDC·ML·레거시 메인프레임
원칙  
대부분 stream-aligned 고객·비즈니스 흐름 중심
Platform티켓 부서 아님 제품처럼 문서·SLA·셀프서비스
Enabling상주 아님 목표 달성철수
Complicated-subsystem 최소 정말 어려운 것만

3. 상호작용 모드

모드 언제
Collaboration 높은 불확실·공동 탐색 신규 도메인 분해 초기
X-as-a-Service 안정 인터페이스·반복 소비 stream → platform Kafka provision API
Facilitating 역량 전이 필요 enabling → stream 테스트 자율화
  • 영구 Collaboration경계 흐림모놀리스 의사소통
  • Platform 기본 = X-as-a-Service대기열 최소
  • 앞서 API 계약·이벤트 카탈로그X-as-a-Service 표면

4. 쇼핑 플랫폼 팀 맵

앞서 C4 Container·서비스 매핑.

organization: shop-platform
topology_version: 2026-q3

teams:
  - id: order-stream
    type: stream-aligned
    mission: end-to-end checkout slice for order placement
    owns:
      - Order API
      - order PostgreSQL
      - order.events topic
      - PlaceOrder UX backend-for-frontend
    consumes:
      - platform.kafka
      - platform.k8s-deploy
      - catalog-api.read-contract

  - id: commerce-stream
    type: stream-aligned
    mission: catalog browse and payment settlement
    owns:
      - Catalog API
      - Payment API
      - catalog Redis
      - payment PostgreSQL
    consumes:
      - platform.kafka
      - platform.observability
      - payment-pg.external

  - id: fulfillment-stream
    type: stream-aligned
    mission: inventory reservation and notification after order events
    owns:
      - Inventory API
      - Notification service
    consumes:
      - order.events
      - platform.messaging

  - id: platform
    type: platform
    mission: reduce cognitive load for stream teams
    provides:
      - Kubernetes clusters and golden path templates
      - Kafka cluster and topic provisioning
      - CI pipelines and observability baselines
      - internal developer portal
    interaction_mode: x-as-a-service

  - id: data-platform
    type: complicated-subsystem
    mission: CDC pipelines and analytics projections
    owns:
      - Debezium connectors
      - search index sync jobs
    serves:
      - commerce-stream
      - fulfillment-stream

  - id: architecture-enabling
    type: enabling
    mission: temporary lift for architecture practices
    activities:
      - ADR review facilitation
      - lightweight ATAM workshops
      - team topology health checks
    interaction_mode: facilitating

alignment_rules:
  - one stream team per primary user journey slice
  - no shared database ownership across stream teams
  - platform exposes self-service APIs not ticket queues
  - complicated-subsystem teams publish contracts not org-wide gatekeeping
유형 소유·제공
order-stream stream-aligned Order API·DB·이벤트
commerce-stream stream-aligned Catalog·Payment
fulfillment-stream stream-aligned Inventory·Notification
platform platform K8s·Kafka·CI·observability
data-platform complicated-subsystem CDC·검색 projection
architecture-enabling enabling ADR·평가 코칭
  • order-stream — 앞서 outbox·PlaceOrder 흐름 배포 단위
  • data-platform — 앞서 CDC 파이프라인 전문 집중
  • architecture-enabling — 23편 ADR 실전 퍼실리테이션

5. 조직·아키텍처 정렬 절차

단계 행동
1 가치 스트림·사용자 여정 식별
2 Bounded Context·서비스 그리기
3 stream-aligned 1:1 후보 매칭
4 Platform 백로그 — stream 설문 pain
5 Complicated 영역별도
6 ADR 경계 변경 기록
신호 조치
모든 변경4팀 회의 stream 재정의
Platform 대기 일수 증가 셀프서비스 API
같은 DB 스키마 공동 수정 서비스· 분리
Enabling 1년 상주 철수 계획
  • 조직 변경ADR·평가 대상구조바꾸지 않음
  • Strangler·분해다음 선행

6. 안티패턴

안티패턴 증상 대안
Component FE/BE/QA 분리 stream-aligned
Platform 게이트키퍼 모든 배포 승인 golden path 셀프서비스
공유 ownership 아무도 책임 단일 소유
나노 1인 1서비스 × 20 적절 크기 stream
아키텍트 중앙 결재 PR 정체 enabling + ADR 가이드

7. 실무 체크리스트

질문 좋은 답
vs 서비스? stream 기준서비스 아님
Platform 성공? stream lead time·대기 감소
Conway 점검? 의존 그래프 vs 대화
Enabling 종료? 명시 목표·기간
문서? team-topology-map.yaml + C4 갱신

8. 정리

  • Conway조직 없이 MSA 지속 불가
  • 4유형 — stream 중심, platform 제품화, enabling 임시
  • 상호작용협업 최소화, 계약 소비 확대
  • 쇼핑 여정·CDC·플랫폼 분리
  • Part 7 — 다음은 레거시 마이그레이션

다음에 다룰 것

  • 레거시 마이그레이션
  • strangler fig, branch by abstraction, 단계적 분해

해당 내용은 Team Topologies (Matthew Skelton, Manuel Pais) 및 Fundamentals of Software Architecture (Mark Richards, Neal Ford) 의 내용을 기반으로 합니다.

'소프트웨어 아키텍처' 카테고리의 다른 글

Architecture Series를 마치며  (0) 2026.07.13
레거시 마이그레이션  (0) 2026.07.12
ADR 실전  (0) 2026.07.10
아키텍처 평가  (0) 2026.07.09
ADR과 의사결정 기록  (0) 2026.07.08