Copilot vs Hub
아키텍처는 두 가지 통합 규모를 지원합니다: Copilot은 호스트 시스템의 UI에 내장됩니다. 사용자는 익숙한 인터페이스를 떠나지 않고 AI와 상호작용합니다. 여러 커넥터(호스트 DB + 알림 서비스 등)를 사용할 수 있습니다. Hub는 모든 시스템을 연결하는 독립형 포털입니다. 단일 시스템에 내장되지 않으며, 시스템과 AI가 만나는 중앙 인텔리전스 계층입니다. 동일한 커넥터 아키텍처, 다른 전달 방식입니다. Copilot은 Hub와 동일한ConnectorToolAdapter를 사용합니다.
핵심 원칙
클라이언트는 코드를 변경하지 않습니다. FIM One은 그들의 시스템에 능동적으로 연결되어 데이터베이스를 읽고, API를 호출하며, 메시지 버스에 푸시합니다. 클라이언트는 자격 증명과 네트워크 접근만 제공하면 됩니다.3계층 아키텍처
각 계층은 서로 다른 책임을 가집니다:| 계층 | 담당 | 변경 시점 |
|---|---|---|
| 플랫폼 | 오케스트레이션, 멀티테넌트, UI | 새로운 플랫폼 기능 출시 |
| 커넥터 거버넌스 레이어 | 엔터프라이즈 거버넌스 정책 | 보안/규정 준수 요구사항 변경 |
| MCP Protocol | 전송, 도구 인터페이스 표준 | 없음 (개방형 표준) |
| 레거시 시스템 | 비즈니스 데이터 및 로직 | 없음 (그것이 핵심) |
MCP를 전송 계층으로 사용하는 이유
어댑터는 MCP 서버로 구현됩니다. 이는 의도적인 아키텍처 선택입니다:- 재사용성: FIM One은 이미 MCP 클라이언트(v0.3)를 포함하고 있습니다. 레거시 시스템 어댑터를 추가하는 것은 MCP 도구를 추가하는 것과 동일한 인프라를 재사용합니다.
- 표준 프로토콜: MCP는 개방형 표준입니다. 발명하거나 유지할 독점 프로토콜이 없습니다.
- 에코시스템: 타사 MCP 서버(데이터베이스, API, SaaS 도구)가 즉시 작동합니다.
- 프로세스 격리: 각 MCP 서버는 별도의 프로세스로 실행됩니다. 오작동하는 어댑터가 플랫폼을 중단시킬 수 없습니다.
MCP 단독으로 제공하지 않는 기능
커넥터 거버넌스 레이어는 원본 MCP가 부족한 엔터프라이즈 거버넌스를 추가합니다:| 관심사 | MCP | 커넥터 거버넌스 레이어 |
|---|---|---|
| 읽기 전용 강제 | 아니오 | 작업에 read_only 플래그; 기본적으로 쓰기 차단 |
| 감사 로깅 | 아니오 | 모든 도구 호출 기록 (타임스탬프, 사용자, 도구, 매개변수, 결과) |
| 인증 통과 | 아니오 | 호스트 시스템 인증 프록시; 에이전트가 로그인한 사용자를 대신하여 작동 |
| 확인 게이트 | 아니오 | 쓰기 작업에 인간 승인 필요 (SSE confirmation_required) |
| 서킷 브레이커 | 아니오 | 연결 실패 시 우아한 성능 저하 트리거 |
| 작업 분류 | 아니오 | 작업을 읽기/쓰기/관리로 태그 지정하고 수준별 정책 적용 |
왜 커스텀 프로토콜을 만들지 않는가
프로토콜은 상용화된 기술입니다. 기술적 가치는 어댑터 자체(도메인 지식, 스키마 매핑, 엣지 케이스 처리)와 거버넌스 계층(감사, 인증, 안전성)에 있습니다. 전송 프로토콜을 새로 만드는 것은 기능을 추가하지 않으면서 유지보수 비용만 증가시킵니다. Stripe는 HTTPS를 사용하고, Docker는 cgroups를 사용하며, FIM One은 MCP를 사용합니다.배포 모델
모든 것이 단일 Docker Compose 배포에서 실행됩니다. 클라이언트는 아무것도 설치하지 않습니다.모두 FIM One에서 제공합니다. 클라이언트는 다음만 제공합니다:
- 데이터베이스 자격증명 (읽기 전용 계정 권장)
- API 엔드포인트 및 키 (사용 가능한 경우)
- 네트워크 화이트리스트 액세스
| 클라이언트가 보유한 것 | FIM One 연결 방식 |
|---|---|
| 문서화된 API | HTTP API 어댑터 (최선의 경우) |
| 문서화되지 않은 API | HTTP API 어댑터 + 수동 스키마 매핑 |
| 데이터베이스 액세스만 | 데이터베이스 어댑터 (직접 SQL, 기본적으로 읽기 전용) |
| 데이터베이스 + 메시지 버스 | 데이터베이스 어댑터 + 메시지 푸시 어댑터 |
에이전트-커넥터 분리
에이전트는 커넥터를 일반적인 도구로 봅니다. 에이전트는 도구가 내장 도구인지, 제3자 MCP 서버인지, 또는 레거시 시스템 커넥터인지 알거나 신경 쓰지 않습니다. 이는 다음을 의미합니다:- 새로운 시스템 추가 = 커넥터 설정 추가. 에이전트 코드는 변경되지 않습니다.
- 커넥터 제거 = 설정 제거. 코드 변경 없음.
- 동일한 에이전트가 단일 작업에서 내장 도구와 커넥터를 함께 사용할 수 있습니다.
핫 플러그 진화
| 버전 | 새로운 커넥터를 추가하는 방법 | 재시작 필요? |
|---|---|---|
| v0.6 | Connector Governance Layer를 포함한 Python MCP Server 작성, docker-compose에 추가 | 재배포 |
| v0.8 | YAML/JSON 설정 작성, 플랫폼이 MCP Server 생성 | 재시작 |
| v1.0 | OpenAPI 스펙 업로드, AI가 설정 자동 생성 | 재시작 불필요 (핫 플러그) |
데이터 흐름 예시
사용자: “재무 시스템에서 연체된 모든 계약을 확인하고 요약을 Lark에 푸시해줘.”커넥터 표준화 레벨
| 레벨 | 버전 | 접근 방식 | 구축자 |
|---|---|---|---|
| 레벨 1 | v0.6 | Python MCP Server with Connector Governance | FIM One 개발자 |
| 레벨 2 | v0.8 | YAML/JSON config, platform auto-generates MCP Server | 구현 엔지니어 (Python 불필요) |
| 레벨 3 | v1.0 | Upload OpenAPI/Swagger spec, AI generates config | AI (인간 검토 포함) |