주체적인 “Strangler Fig” 전략의 부상

발행: (2026년 1월 14일 오전 09:35 GMT+9)
8 min read
원문: Dev.to

I’m happy to translate the article for you, but I need the actual text of the post. Could you please paste the content you’d like translated (excluding the source line you’ve already provided)? Once I have the text, I’ll keep the source link at the top and translate the rest into Korean while preserving the original formatting.

개요

15년 된 모놀리스를 처음부터 다시 쓰려는 시도를 그만두세요. 성공하지 못합니다. 대신, Model Context Protocol (MCP) 를 사용해 레거시 시스템을 AI 에이전트로 감싸세요—“Strangler Fig” 패턴에 스테로이드를 넣은 형태입니다. 🚀

“빅뱅” 재작성은 위안이 되는 신화에 불과합니다. 분산된 모놀리스를 바라보며 기능 개발을 18 개월 동안 멈추고 Rust/Go/Next.js 로 모든 것을 다시 쓰는 상상을 하면서 완벽함을 기대하죠. 스포일러: 절대 일어나지 않습니다.

문제: 코드‑대‑컨텍스트 격차

레거시 시스템에는 수십 년에 걸친 암묵적인 비즈니스 지식—예외 케이스, 규제 해킹, 그리고 특이한 버그 수정 등—이 코드 안에만 존재하고 Jira나 Confluence에는 기록되지 않습니다. 처음부터 다시 작성하면 이러한 컨텍스트가 모두 사라집니다.

Source:

에이전시 스트랭글러 무화과 전략

클래식한 Martin Fowler의 Strangler Fig 패턴은 기존 시스템을 감싸고 호출을 가로채며 점진적으로 새로운 마이크로서비스로 라우팅합니다. 이는 안전하지만, 파사드 구축, 의존성 매핑, 접착 코드 작성을 수동으로 해야 하므로 전통적으로 느립니다.

새로운 관점: AI 에이전트를 MCP 도구와 함께 배포하여 AI 속도로 동작하는 동적이고 지능적인 스트랭글러 무화과를 구현합니다.

1. 범용 어댑터 (MCP) 🔌

MCP는 N × M 연결 문제를 해결합니다. 레거시 데이터베이스와 서비스마다 맞춤형 API 래퍼를 만들 대신, 하나의 MCP 서버를 구축합니다. 무상태 REST API와 달리 MCP 인터페이스는 컨텍스트를 유지하여 AI 에이전트가 세션 전반에 걸쳐 “User X”를 이해하고 1980년대 메인프레임과 2024년 클라우드 SQL 데이터베이스를 동시에 질의할 수 있게 합니다.

2. 동적 파사드로서의 에이전트 🎭

MCP가 활성화된 에이전트는 고수준 의도를 받습니다. 예:

“User X에 대한 환불을 처리해 주세요.”

에이전트는:

  1. 사용 가능한 도구를 확인합니다.
  2. legacy_inventory_update (모놀리식)와 refund_service_v2 (새 마이크로서비스)를 발견합니다.
  3. 이를 동적으로 연결합니다.

수동으로 라우팅을 구성할 필요가 없습니다. 내일 새로운 마이크로서비스를 배포하면, 에이전트가 자동으로 이를 발견하고 사용을 시작합니다.

구현 단계

단계 1: 의도 설계 (안티‑패턴 경고! 🚨)

레거시 API를 MCP 도구에 1:1 매핑하지 마세요. 레거시 API는 불필요한 파라미터와 이상한 인증 흐름으로 가득 차 있어 LLM을 혼란스럽게 합니다.

잘못된 – 1:1 매핑

{
  "name": "get_customer_data",
  "description": "Calls GET /api/v1/cust",
  "parameters": {
    "id": "string",
    "include_orders": "boolean",
    "sort": "string",
    "legacy_flag_23": "boolean"
  }
}

올바른 – 의도 기반

@mcp.tool()
def get_customer_dashboard(email: str) -> str:
    """
    Retrieves a holistic view of the customer, aggregating
    data from the legacy CRM and the new Order Service.
    """
    # The complexity is hidden here!
    legacy_data = legacy_crm.lookup(email)
    new_data = order_service.get_latest(email)
    return format_dashboard(legacy_data, new_data)

복잡성을 MCP 서버 내부에 캡슐화하고 에이전트에 고수준 “비즈니스 의도” 도구를 노출하세요.

단계 2: 프록시를 통한 포트 격리 🛡️

프록시는 에이전트와 인프라 사이에 위치하여 동적 포트 할당을 처리합니다. 에이전트는 깔끔하고 일관된 stdio 인터페이스를 통해 상호작용합니다.

단계 3: “섀도우 쓰기” 패턴 👻

  1. 에이전트가 “Create Order” 요청을 받음.

  2. 새로운 마이크로서비스 데이터베이스에 기록.

  3. 동시에 MCP 래퍼를 통해 레거시 모놀리스를 기록.

  4. 결과를 비교:

    • Match: ✅ 진행.
    • Mismatch: ❌ 엔지니어가 해결하도록 차이를 로그에 기록.

실제 사례

  • 보험: Sure와 같은 기업은 견적에서 계약까지 걸리는 시간이 95 % 빨라졌다고 보고합니다. 그들의 에이전트는 단순히 채팅만 하는 것이 아니라 MCP 도구를 사용해 레거시 백엔드에서 자동으로 청구를 접수합니다.
  • 공급망: Boomi는 분산된 WMS 및 ERP 시스템을 통합합니다. 에이전트는 접착제 역할을 하여 사일로화된 시스템 전반에 걸쳐 재고를 확인하고, 단일 레거시 앱만으로는 처리할 수 없는 재입고 워크플로를 트리거합니다.

혜택

  • Decouple Technical Debt from Business Value: 전통적인 마이그레이션은 가치를 제공하기 전에 부채를 상환해야 합니다. MCP 에이전트를 사용하면 먼저 가치를 제공할 수 있습니다—모놀리스를 감싸고, 레거시를 차단하며, 현대적인 기능을 즉시 배포합니다.
  • Automatic Discovery: 새로운 마이크로서비스가 기존 에이전트에 의해 즉시 사용 가능해집니다.
  • Reduced Rewrite Risk: 수십 년에 걸친 숨겨진 비즈니스 로직을 보존하면서 점진적으로 현대화합니다.

추가 읽을거리

  • 레거시 서비스를 현대 개발자 포털로 마이그레이션: Backstage 통합을 위한 기술 가이드
  • 왜 MCP는 API를 일대일로 감싸서는 안 되는가
  • Aspire와 함께 AI 에이전트 확장: 병렬 개발을 위한 누락된 격리 레이어
  • 행동의 프로토콜

모놀리식 공포 이야기가 있나요? 댓글에 남겨 주세요. 함께 위로합시다. 👇

Back to Blog

관련 글

더 보기 »