7P by baeba 1일전 | ★ favorite | 댓글 1개

Key Takeaways

  • 기존 시스템을 전면 교체하지 않고도 점진적 분리로 전환을 이끌어냈다.
  • CDC 기반 실시간 데이터 시스템으로 메인프레임 직접 접근을 대체했다.
  • REST 대신 GraphQL로 BFF 계층 다수를 제거하고 유연성과 유지보수성을 확보했다.
  • 도메인 중심 팀 구조(Team Topologies)로 팀의 책임과 소유권을 명확히 했다.
  • 점진적 배포와 자동화를 통해 위험 없이 시스템을 전환하고 안정적으로 가치를 전달했다.

도입 사례: 장애 중에도 살아남은 절반의 시스템

메인프레임 장애가 발생했지만, 클라우드 기반 스트리밍 아키텍처 덕분에 새 UI는 정상 동작했다.
기존 시스템이 다운되어도 신규 시스템은 고객 경험을 유지하며 복원력을 입증했다.


핵심 전략: 다층 분리 (Decoupling)

  1. 도메인 주도 설계(DDD): 메인프레임 중심 모델을 비즈니스 친화적으로 재구성
  2. Team Topologies: 기능 중심 팀 조직으로 전환
  3. 이벤트 기반 아키텍처: 비동기 방식으로 시스템 간 결합도 완화
  4. Change Data Capture(CDC): 실시간 데이터 변화를 감지하여 레거시와 신 시스템 연결

이전 구조: Unified Web Portal 1.0

다양한 메인프레임 데이터를 ETL로 통합하여 SQL DB와 SaaS로 제공했으나,
실시간성 부족, 데이터 품질 저하, 직접 메인프레임 호출 등의 문제 발생.


문제점

  • ETL로 인한 데이터 지연
  • 탄력적이지 못한 메인프레임과의 동기 연결
  • 무수히 많은 BFF API 생성
  • 조직 구조에 따른 병목과 릴리스 지연
  • 급증 트래픽 시 메인프레임 과부하로 서비스 전체 장애 발생

새로운 목표 설정

기술적 목표: 메인프레임과 웹 분리, BFF 제거, 팀 자율성 확보
비즈니스 목표: 콜센터 문의 감소, 라이선스 비용 절감, 고객 만족 향상


새로운 아키텍처 개요

  • 메인프레임은 여전히 시스템 오브 레코드
  • CDC → Kafka → 도메인 DB (CosmosDB)
  • GraphQL + REST API → BFF → UI
  • 이벤트 기반 구조와 메시지 브로커로 모든 컴포넌트 연결

Step 1: Change Data Capture

  • 실시간 데이터 스트리밍으로 시스템 오브 레퍼런스 구성
  • 메인프레임 → Kafka → 변환 → 도메인 DB → API로 제공
  • 메인프레임 스키마에 종속되지 않는 유연한 데이터 구조 확보

Step 2: Domain-Driven Design + GraphQL

  • DDD로 도메인 모델 정의 (Entity, Command, Event)
  • 각 도메인을 GraphQL 노드로 구성, schema stitching을 통한 supergraph 생성
  • 필요한 데이터만 조회하는 최적 쿼리 구조 지원

조직 구조 변화: Team Topologies

  • 기능 중심의 스트림 얼라인드 팀으로 재편성
  • 복잡한 영역(예: 메인프레임 통합)은 전담 팀이 관리
  • 기술 지원을 위한 Enablement 팀 운영

이벤트 기반 확장: 내부 도메인 이벤트 + 사가 패턴

  • Outbox 패턴으로 도메인 변경 시 이벤트 발생
  • Parallel Saga로 메인프레임 작업과 CDC 동기화
  • 상태 머신 기반 워크플로우 구성 → 복합 플로우에도 대응

도전 과제

  • 이벤트 기반 구조 도입에 대한 조직 내 인식 변화 필요
  • 비동기 구조로 인한 관측 가능성 확보가 필수
  • 메인프레임 배치 작업 → CDC 파이프라인 과부하 유발
  • GraphQL schema 관리의 복잡성 및 federated approach 도입 고민
  • 인증/로깅 등 공통 관심사는 별도 패키지 및 자동화로 관리

릴리스 전략: 릴리스 트레인 + Feature Flag

  • 각 팀은 독립 배포, 배포 리포지토리에서 통합
  • Kustomize로 환경별 배포 파이프라인 구성
  • 기능 플래그로 기능/보안 릴리스를 분리, trunk-based 개발 유지

하이브리드 아키텍처 적용

  • UWP 1.0과 UWP 2.0을 공존시키며 점진적 전환 수행
  • 에지 라우팅으로 유저 요청을 새로운 시스템으로 순차 전환

결론: 진화 가능한 플랫폼 구축

  • 프런트엔드와 메인프레임 완전 분리
  • 팀 중심 구조로 속도와 안정성 확보
  • 고객 만족도 및 운영 비용 개선
  • 향후 메인프레임 교체까지도 가능하게 만든 유연한 기반 확보

점진전 개선 점진적 마이크로서비스 추출이 매우 중요한데...이런 글 보면 해당 프로젝트를 이끄는 PM이 정말 중요하고 대단하구나를 느낍니다. 이 많은것을 관리한다는게 ㄷㄷ