멀티 클라우드 토폴로지
1) 멀티 클라우드가 정당화 될 때
드라이버:- 신뢰성/가용성: 공급자 수준의 독립적 인 실패 영역.
- 주권/준수: 관할 구역 별 저장/처리 (데이터 레지던트).
- 위험 관리: 공급 업체-로신 감소, 구매/가격 레버.
- 지리/성능: 사용자 및 데이터 소스에 더 가깝습니다.
- 특별 서비스: 다른 구름의 최고의 "틈새" 기능에 대한 액세스.
- SDLC/관측 성/작업의 상당한 복잡성.
- 공급자 간의 탈출 가치 및 대기 시간의 성장.
- 다른 IAM/네트워크 모델/할당량/제한 → 더 많은 운영 위험.
2) 위상 패턴
3) 네트워크 계층 및 라우팅
3. 글로벌 로그인 1 개
GSLB/DNA 라우팅: latency-/health-based; 마이그레이션 창에 대한 짧은 TTL.
Anycast + L7 프록시: 단일 IP, 지역 건강 라우팅.
관할권 별 정책: 지리 차단/지리 고정 트래픽.
python def pick_cluster(client, intent):
вход: ip, geo, tenant, feature allowed = filter_by_compliance(client. geo) # sovereignty healthy = [c for c in allowed if sdo (c). ok and slo(c). ok]
return argmin(healthy, key=lambda c: latency_estimate(client, c))
3. 2 클라우드 간 연결
가능한 경우 개인 채널/피어링; 그렇지 않으면 인터넷을 통한 SL + mTLS.
탈출 제어: 집계/압축, 로컬 캐시/애그리 게이터.
코드로서의 네트워크: Terraform/Blueprints, CIDR 정책, 경로 및 출입구.
4) 데이터와 일관성
4. 모델 1 개
전 세계적으로 강력한 일관성은 클라우드 간 거의 현실적이지 않습니다 (대기 시간/그리드/비용).
실용적인 사건: 충돌 해결을 통한 양방향 CDC (변경 데이터 캡처).
CRDT/idempotency: 카운터/세트/로그 용-정류 구조.
4. 2 개의 패턴
아웃 박스가있는 이중 쓰기: 트랜잭션 이벤트 레코딩 → 브로커 → 인접 클라우드에 대한 복제.
읽기/쓰기 홈: "홈" 영역/클라우드에 쓰기, 로컬 읽기 (버전 및 오래된 정책 포함).
분할 뇌 보호: 발산 감지, "보상" (saga), 통화 불변량에 대한 수동 중재.
DB → Debezium/stream → Events(topic@vN) → Cross-cloud relay → Apply w/ resolver resolver: prefer_higher_version prefer_home business_rule()
4. 3 개체 저장소
양동이의 비동기 복제, 해시/표현, dedup.
ILM (hot/warm/cold) 정책은 클라우드 독립적입니다.
주권 규칙: "PII는 UA/EEA를 떠나지 않습니다" -코드로 검증됩니다.
5) 정체성, 비밀 및 열쇠
신원 연맹: 단일 IdP, 단기 토큰, 파이프 라인에 대한 OIDC 신뢰.
비밀: 각 클라우드의 KMS/HSM + Vault 클래스 추상화; 회전/스위치를위한 듀얼 키.
PoLP/ABAC: 속성 (클라우드, 지역, env, data _ class) 을 기반으로하는 권한.
크립토 도메인: 관할 구역에 대한 다른 루트 키 → 범위 별 암호화 소거.
6) 이그제큐티브 환경: 클러스터 및 메쉬
멀티 클러스터 (K8): 클라우드/영역 당 하나의 클러스터; GitOps (ArgoCD/Fleet) 를 통한 차량 제어.
лерви달력: mSL, 재 시도, 회로 차단기, 장애 정책 교차 클러스터.
- 정적 서비스 → 제자리.
- 각 클라우드의 대화 형 API → (Active/Active).
- 배치/ETL → "녹색" 창/저렴한 지역 (탄소/비용 인식).
rego package placement
allow[cloud] {
input. service. pii == false cloud:= input. clouds[_]
cloud. features. contains("cheap_gpu")
}
deny["PII outside allowed region"] {
input. service. pii == true not input. target_region in {"eu-central","eu-north","eu-west"}
}
7) 멀티 클라우드의 관찰 및 SLO
다중 임대 레이블: '클라우드', '지역', '테넌트', '데이터 _ 도메인'.
SLI/SLO 클라우드 당 및 전 세계: "1 클라우드를 사용할 수있는 경우 전 세계적으로 사용 가능"
원격 측정 수집: 탈출 제어가있는 로컬 + 집계.
미량: 전역 미량, 컨텍스트 전파, 꼬리에 의한 꼬리 기반 샘플링.
비교 대시 보드: 엔드 포인트/p99/오류 예산 화상 당 A 대 B.
8) SDLC/IaC 및 "코드로서의 정책"
단일 IaC 모노 디렉토리: 공급자 모듈/스택, 불변 (태그, 네트워크, 암호화).
GitOps: 선언적 선언, 드리프트 감지, 프로모션 환경.
적합성 테스트: API/이벤트 계약, 두 구름의 카나리아.
릴리스 게이트: 주권 일치가없는 경우 하나의 클라우드에서 SLO를 위반할 위험이있는 블록 (연소율 예측).
yaml gate: multi-cloud-slo-and-compliance checks:
- slo_burn_rate(global) < 1. 0
- slo_burn_rate(cloud:A) < 2. 0
- compliance_rule("pii_in_region") == pass
- egress_forecast < budget on_fail: block_release
9) 비용과 탄소 (FinOps/GreenOps)
단위 메트릭: '$/req', '$/GB-egress', 'gCO ² e/req'.
중요하지 않은 배치를위한 비용/탄소 라우팅: 저렴한/녹색 시계/지역.
탈출 캡: 클라우드 간 트래픽 예산; 캐시/집계/압축/TTL.
RI/SP/Committed 현장/선점 가능한 각 클라우드 + "탄성 레이어" 에서 사용하십시오.
10) 테스트 실패 및 연습
게임 데이: "클라우드 A 소화", "데이터베이스 속도 저하", "탈출 한계를 뛰어 넘습니다".
체크 포인트: RTO/RPO, DNA 수렴 시간, 플래그 기능 롤, 캐시 동작.
석방시 혼돈 연기: 의존성의 저하가 일련의 배상으로 이어지지 않아야합니다.
11) 보안, 개인 정보 보호, 규정 준수
제로 트러스트: 서비스/클라우드 간 mTLS, 아티팩트 서명, SBOM.
DPA/주권: 데이터 세트 카탈로그, 현지화 규칙, ILM 위의 Legal Hold.
비밀과 키: 로테이션 매거진, 플레이 북 타협/킬 스위치.
웹 후크 및 외부 통합: 서명, 재생 방지, 지역 종점.
12) 데이터/이벤트 통합 템플릿
12. 1 양방향 카프카 브리지 (아이디어):
cloudA. topicX ⇄ relayA→B ⇄ cloudB. topicX cleanup. policy=compact,delete key-based routing idempotent producer
12. 2 개의 전송 테이블 및 릴레이:
sql
-- outbox id uuid pk, aggregate_id, type, payload jsonb, version int, created_at timestamptz
-- transactional insertion with domain table change
다음으로 커넥터는 아웃 박스를 읽고 이벤트를 로컬 브로커 + 릴레이에 게시합니다.
12. 3 갈등 전략 (의사):
python def resolve(local, remote):
if local. version > remote. version: return local if remote. version > local. version: return remote equal versions: domain rules return business_tiebreak (local, remote)
13) 반 패턴
"모든 것을 두 개의 구름으로 드래그하십시오. "승리하지 않고 어려움을 두 배로 늘 렸
핫 트랙에서 동기식 클라우드 간 트랜잭션.
모든 구름/지역에 대한 단일 글로벌 암호화 키.
변장없이 현지화 규칙없이 PII가있는 로그/트레일.
외부 측정이 없습니다 (실제 가용성은 공급자의 상태 페이지에서만 볼 수 있음).
플레이 북/드릴 없음-DR이 현재 X에서 작동하지 않습니다.
하나의 클라우드 (리미터/음영/차단기 없음) 를 분해하는 동안 배상의 캐스케이드.
탈출을 설명하지 않은 것은 예상치 못한 청구서입
14) 건축가 점검표
1. 멀티 클라우드 드라이버 공식 (SLO/DR/주권/비용)?
2. 선택된 패턴 (AA/AP/DR-Only/Poly-Service) 및 RTO/RPO가 커밋 되었습니까?
3. 네트워크 계획: GSLB/Anycast, 건강 샘플, 탈출 캡, 개인 채널?
4. 데이터: CDC/CRDT/듀얼 라이팅, 충돌 해결 규칙, 아웃 박스?
5. 주권: 데이터/지역지도, 정치인을 코드 및 게이트로?
6. IAM/비밀: 연합, 단기 토큰, 도메인 별 KMS?
7. 클러스터/메쉬: 실패 전략, 제한/중단/시간 초과?
8. 관찰 가능성: '클라우드/지역', 클라우드 당 SLO 및 전 세계 외부 합성 레이블?
9. SDLC/IaC/GitOps: 단일 카탈로그, 적합성 테스트, 게이트 해제?
10. FinOps/GreenOps: 단위 메트릭, 출구 예산, "녹색" 배치 창?
11. 드릴: 정기적 인 게임 일, 프로토콜 및 재테스트?
12. 종료 계획: 데이터 내보내기/형식/마감일, 주요 서비스의 두 번째 소스?
15) 미니 샘플 구성
15. 1 관할권 라우팅 정책 (의사 -YAML):
yaml route:
pii:
allowed_regions: ["eu-central","eu-north","eu-west"]
deny_cross_cloud: false analytics:
allowed_regions: ["eu-","us-"]
prefer_low_carbon: true weights:
eu-central@cloudA: 60 eu-central@cloudB: 40
15. GSLB를위한 2 가지 건강 샘플:
http
GET /healthz
200 OK x-region: eu-central x-slo: ok at-risk breach
15. 3 실패 기능 플래그 (의사 코드):
python if slo_at_risk("cloudA", "payments"):
route. weight["cloudA"] -= 20 route. weight["cloudB"] += 20 enable_stale_rates(ttl=1560)
결론
멀티 클라우드는 레이블이 아닌 엔지니어링 분야입니다. 명확한 동기, 의식적인 토폴로지 선택, 데이터 사려 깊은 작업, 강력한 자동화 및 엄격한 정책이 필요합니다. 교과서에 따라 위험과 비용을 측정하고 네트워크와 데이터를 구축하고 단순성을 향해 나아가면 멀티 클라우드 플랫폼은 청구서의 놀라움없이 사용자 경험을 손상시키지 않으면 서 안정성, 유연성 및 자유를 제공합니다.