f8b21af4be
10_Wiki/Topics 대규모 정리: - 오류 캡처/미완성 stub 문서 227개 제거 - 교차폴더 중복 43클러스터 병합 (63파일 → redirect) - 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건 - 카테고리 MOC 6개 신규 생성 - Graph 섹션 미해결 related-keyword 링크 10,058건 제거 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
164 lines
4.8 KiB
Markdown
164 lines
4.8 KiB
Markdown
---
|
||
id: wiki-2026-0508-interoperability
|
||
title: Interoperability
|
||
category: 10_Wiki/Topics
|
||
status: verified
|
||
canonical_id: self
|
||
aliases: [Interop, System Integration, Cross-Platform Compatibility]
|
||
duplicate_of: none
|
||
source_trust_level: A
|
||
confidence_score: 0.9
|
||
verification_status: applied
|
||
tags: [systems, protocols, integration, standards]
|
||
raw_sources: []
|
||
last_reinforced: 2026-05-10
|
||
github_commit: pending
|
||
tech_stack:
|
||
language: multi
|
||
framework: standards
|
||
---
|
||
|
||
# Interoperability
|
||
|
||
## 매 한 줄
|
||
> **"매 different systems 가 매 friction 없이 함께 작동하는 능력"**. 매 syntactic (data format), 매 semantic (meaning), 매 organizational (governance) 의 3 layer 로 분해. 매 2026 의 hot topics: MCP (Model Context Protocol), OpenAPI, gRPC, WebAssembly Component Model.
|
||
|
||
## 매 핵심
|
||
|
||
### 매 3 layers of interop
|
||
- **Syntactic**: 매 byte-level format 의 agreement (JSON, Protobuf).
|
||
- **Semantic**: 매 field-meaning 의 agreement (schema + ontology).
|
||
- **Organizational**: 매 governance, versioning, deprecation policy.
|
||
|
||
### 매 enablers
|
||
- **Open standards**: HTTP, OpenAPI, JSON-Schema, OAuth 2.1.
|
||
- **Schema-first**: Protobuf, Avro, GraphQL SDL.
|
||
- **Capability negotiation**: Accept headers, gRPC reflection, MCP capability handshake.
|
||
- **Adapter pattern**: 매 N×M integration → N+M with hub.
|
||
|
||
### 매 응용
|
||
1. **AI tool ecosystem**: MCP 매 LLM ↔ tools 의 universal protocol.
|
||
2. **Microservices**: gRPC + Protobuf 매 polyglot interop.
|
||
3. **Healthcare**: HL7 FHIR 매 EHR interop.
|
||
4. **Cross-cloud**: Open Container Initiative (OCI), CNCF standards.
|
||
|
||
## 💻 패턴
|
||
|
||
### MCP server (2026 standard)
|
||
```python
|
||
# Model Context Protocol — Anthropic 2024, ubiquitous in 2026
|
||
from mcp.server import Server
|
||
from mcp.types import Tool, TextContent
|
||
|
||
server = Server("my-tool")
|
||
|
||
@server.list_tools()
|
||
async def list_tools() -> list[Tool]:
|
||
return [Tool(
|
||
name="search",
|
||
description="Search the knowledge base",
|
||
inputSchema={"type": "object", "properties": {"q": {"type": "string"}}}
|
||
)]
|
||
|
||
@server.call_tool()
|
||
async def call_tool(name: str, args: dict) -> list[TextContent]:
|
||
if name == "search":
|
||
return [TextContent(type="text", text=do_search(args["q"]))]
|
||
```
|
||
|
||
### OpenAPI contract
|
||
```yaml
|
||
# 매 syntactic + semantic interop in one file
|
||
openapi: 3.1.0
|
||
info: { title: User API, version: 2.0.0 }
|
||
paths:
|
||
/users/{id}:
|
||
get:
|
||
parameters:
|
||
- { name: id, in: path, required: true, schema: { type: string } }
|
||
responses:
|
||
'200':
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/User' }
|
||
```
|
||
|
||
### Protobuf schema-first
|
||
```protobuf
|
||
// user.proto — language-neutral, version-tolerant
|
||
syntax = "proto3";
|
||
package user.v1;
|
||
|
||
message User {
|
||
string id = 1;
|
||
string email = 2;
|
||
reserved 3; // 매 deprecated field — 매 forward compat
|
||
optional string display_name = 4;
|
||
}
|
||
```
|
||
|
||
### Adapter pattern (N+M interop)
|
||
```python
|
||
class PaymentAdapter:
|
||
def charge(self, amount: int, currency: str) -> str: ...
|
||
|
||
class StripeAdapter(PaymentAdapter):
|
||
def charge(self, amount, currency):
|
||
return stripe.Charge.create(amount=amount, currency=currency).id
|
||
|
||
class TossAdapter(PaymentAdapter):
|
||
def charge(self, amount, currency):
|
||
return toss.payments.confirm(amount=amount).payment_key
|
||
```
|
||
|
||
### Wasm Component Model (2026 cross-language)
|
||
```toml
|
||
# 매 binary interop — Rust ↔ Python ↔ Go via Wasm components
|
||
[package]
|
||
name = "my-component"
|
||
version = "0.1.0"
|
||
|
||
[lib]
|
||
crate-type = ["cdylib"]
|
||
|
||
[dependencies]
|
||
wit-bindgen = "0.30"
|
||
```
|
||
|
||
## 매 결정 기준
|
||
| 상황 | 표준 |
|
||
|---|---|
|
||
| LLM ↔ tools | MCP |
|
||
| REST API contract | OpenAPI 3.1 |
|
||
| High-throughput RPC | gRPC + Protobuf |
|
||
| Cross-language binary | Wasm Component Model |
|
||
| Healthcare data | HL7 FHIR R5 |
|
||
| Auth | OAuth 2.1 + OIDC |
|
||
|
||
**기본값**: 매 schema-first + open standard. 매 proprietary format 의 X.
|
||
|
||
## 🔗 Graph
|
||
- 부모: [[System-Design]] · [[Distributed-Systems]]
|
||
- 변형: [[API-Design]]
|
||
- 응용: [[MCP]] · [[Protocols]] · [[Microservices]]
|
||
|
||
## 🤖 LLM 활용
|
||
**언제**: 매 protocol selection, 매 schema design review, 매 adapter scaffolding.
|
||
**언제 X**: 매 single-team monolith 의 internal modules — over-engineering.
|
||
|
||
## ❌ 안티패턴
|
||
- **Snowflake protocols**: 매 in-house custom protocol → 매 every consumer N×N adapters.
|
||
- **Schema drift**: 매 producer / consumer 매 separate schema copies → 매 silent breakage.
|
||
- **No versioning**: 매 breaking change broadcast → cascade failure.
|
||
- **Tight coupling via DB**: 매 shared DB schema 매 anti-interop.
|
||
|
||
## 🧪 검증 / 중복
|
||
- Verified (W3C, IETF, IEEE standards; Anthropic MCP 2024 spec; gRPC.io; CNCF landscape 2026).
|
||
- 신뢰도 A.
|
||
|
||
## 🕓 Changelog
|
||
| 날짜 | 변경 |
|
||
|---|---|
|
||
| 2026-05-08 | Phase 1 |
|
||
| 2026-05-10 | Manual cleanup — 3-layer interop, MCP/OpenAPI/Wasm patterns |
|