GH GambleHub

공급자 어댑터

공급자 어댑터-외부 공급 업체 계약 (게임 공급 업체, 결제 게이트웨이, KYC/AML, 위험 채점, 알림 등) 을 내부 도메인 언어로 변환하는 격리 된 통합 계층 (ACL). 불안정한 API, 네트워크 이상, 스키마 진화 및 보안 정책으로부터 도메인을 보호합니다.

주요 목표:

1. 디커플링: "원시" 외부 페이로드가 핵심에 도달하지 않습니다.

2. 신뢰성: 고장 관리 (타임 아웃, 재 시도, DLQ, 회로 차단기).

3. 일관성: demempotency, 주요 순서, 거래 메시징.

4. 운영: 지표, 추적, 제한, 전송 격리 및 거주.

1) 어댑터 책임 영역

계약: 외부 체계/종점에 대한 설명; → 내부 명령/이벤트 매핑.
전송: REST/gRPC/WebSocket/SQS/Kafka/SFT; 연결 풀, 역압.
보안: mSL, OAuth2, HMAC, 테넌트/지역 당 키/인증서, 비밀 회전.
신뢰성: 타임 아웃, 지터를 사용한 배상, 회로 차단기, 중복 제거.
이념성: 'Idempotency-Key '/' 요청 _ id', 응답/상태 저장.
관찰 가능성: SLO 지표, 구조 로그, 추적.
버전 지원: 여러 버전의 체계/엔드 포인트 지원.
운영: ficheflags, 카나리아 릴리스, 샌드 박스, 인증.

2) 해당되는 경우 (예: 상황)

게임/RGS: 시작/종료 라운드, 베팅/승, 세션 토큰, 제공자 상태.
결제/PSP: 예금/인출, 웹 후크 상태, 채권 회수, 3D 보안.
KYC/AML: 검증, 제재/POP 점검, 거래 모니터링.
위험/사기: 득점, 트리거, 권장 사항 차단.
Comms: 전자 메일/SMS/푸시, 메일 제한, 템플릿.

각 유형에는 자체 이벤트 상태 머신과 SLA가 있습니다. 어댑터는이를 정규화해야합니다.

3) 계약 및 매핑 (외부)

원칙:
  • 우리는 어댑터 내부에 게시 된 언어를 입력하고 공급자의 필드를 드래그하지 않습니다.
  • 모든 메시지에는 '테넌트 _ id', '지역', '제공자 _ id', 'operation _ id', '버전 _ ts' 가 있습니다.
  • 매퍼를 통해 여러 버전의 외부 구성표를 지원합니다.
yaml mapping:
provider: "AcmeRGS"
version: "v3"
inbound:
SpinResultV3 -> Round. Resulted
BonusWinV3  -> Bonus. Wagered outbound:
StartRound  -> POST /v3/sessions/{id}/start
Stake    -> POST /v3/spins compat:
accepts: ["v2","v3"]
emits:  ["v3"]

4) 이념과 질서

요청 해제: 요청시 'Idempotency-Key: <operation _ id>'; TTL의 스토리 '(op _ id → 최종 상태/응답)'.
Webhook ddup: 테이블 '받은 편지함 (제공자, 이벤트 _ id)' 을 PK로 표시합니다.
키 별 순서: '집계 _ id' (예: 'round _ id' 또는 'psp _ tx _ id') 로 호출 및 처리를 직렬화합니다.
전송/인복싱: 파이프 라인의 양쪽 가장자리에있는 거래 메시징.

5) 신뢰성: 타임 아웃, 휴식, 회로 차단기

타임 아웃: 연결/읽기를 위해 별도의 짧은 클라이언트 측 (p95 지향).
배상: 재시도 가능 (5xx/타임 아웃/429), 지수 백오프 + 전체 지터, 시도 제한 및 총 마감일.
회로 차단기: 오류/대기 시간이 증가하면 열립니다. 우아한 저하 (예: 보조 RGS 기능을 비활성화하고 "결과 대기" 를 설정).
DLQ: 풍부한 메타 정보, 안전한 재 드레이브가있는 "유독 한" 메시지.

yaml reliability:
timeout_ms:
connect: 1000 read:  1500 retry:
max_attempts: 6 initial_backoff_ms: 200 max_backoff_ms: 8000 jitter: full retry_on: [TIMEOUT, 5xx, 429]
circuit_breaker:
failure_rate_threshold: 20%   # за окно slow_call_threshold_ms: 1500 half_open_max_calls: 10

6) 요율 제한, 할당량, 경쟁력

공급자 제한 사항 관찰 (RPS, 버스트, 동시성).
"잡음" 클라이언트가 예산을 삭감하지 않도록 테넌트 당 WFQ/DRR (공정성) 을 구현하십시오.
'재생 후 '/' X-RateLimit-' 헤더를 존중하십시오.
내부 대기열 + 제품의 역압.

7) 안전 및 준수

전송: mTLS, TLS 1. 2 +, 현재 암호 제품군, 가능한 경우 인증서 고정.
인증: OAuth2 클라이언트 자격 증명/MSL, HMAC (서명 된 바디 해시 + 타임 스탬프), API 키.
PII 최소화: 필요한 필드 만; 로그 및 DLQ의 마스킹/편집.
비밀: KMS/HashiCorp Vault, 자동 회전, 임차인/지역당 격리.
준수: PSP 용 PCI DSS, PAN 대신 토큰 스토리지, GDPR/로컬 데이터 법률.

8) 다중 테넌트 및 다중 지역

테넌트/지역당 키/엔드 포인트 구성.
데이터 레지던트: 전화는 "홈" 지역에서 이루어집니다. 교차 지역-집계 만.
격리: 자체 연결 풀 및 임차인 당 한계.

yaml tenants:
T1:
region: eu-central provider_keys:
acme_rgs: { client_id: "...", cert_ref: "vault://..." }
psp_foo: { hmac_key_ref: "kms://..." }
endpoints:
acme_rgs: "https://eu. api. acme-rgs. com"
psp_foo: "https://eu. api. psp-foo. com"
T2:
region: sa-east
...

9) 관찰 가능성: 지표, 로그, 추적

메트릭:
  • 클래스 별 성공/오류 (2xx/4xx/5xx/타임 아웃/429).
  • 방법별로 p50/p95/p99 대기 시간.
  • 속도 제한 작동, 개방/폐쇄 차단기, DLQ- 속도, 재 구동 성공.
  • 구조 로그: '테넌트 _ id', 'provesser _ id', 'operation _ id', 'endpoint', 'state', 'sid', 'backoff _ ms'.
  • 추적: 단일 'trace _ id', 스팬 "직렬화 → 전송 → 수신 → 맵 → 게시", 태그 'skima _ version', 'region'.

10) Versioning 및 phicheflags

외부 계약의 v1/v2를 병렬로 지원합니다. 마이그레이션 - 카나리아/세입자.
새로운 공급자 기능은 깃발 뒤에 있습니다. 출시없이 전환.
진화 계약: 체계의 추가 우선 엄격한 검증 (JSON Schema/Proto).

11) 플레이 북 (런북)

1. Squall 429/limes: 글로벌 스로틀 링 켜기, 'Reduction-After' 존중, 세입자 간의 창문 재분배.

2. 타임 아웃 성장: 동시성 감소, 타임 아웃 신중하게 증가, 오픈 브레이커, 기능 저하 가능

3. 스키마 불일치: 재구동 동결, 호환 가능한 매퍼 활성화, 백필/재처리.
4. 웹 후크 플랩: 풀/조정 모드로 전환하고받은 편지함을 적용하십시오.
5. 공급자의 사고: 샌드 박스/백업 DC로 전환 (있는 경우) "지연된" 작업을 활성화하십시오.

12) 테스트

계약 테스트: 고정 공급자 수정에 대한 생산자/소비자.
혼돈 테스트: 지연, 낙하, 고장, 복제, 부분 응답, 단절.
성능: 버스트 스파이크에 대한 스트레스; 측정 p95/p99, 차단기 동작.
이념성: 동일한 'operation _ id' 를 반복하면 추가 효과가 발생하지 않습니다.
샌드 박스 E2E: 행복한 경로/chargeback/논쟁/취소/recalc 스크립트.

13) 배포 패턴

별도의 서비스 어댑터: + 격리, 독립 릴리스; -추가 네트워크.
사이드카/플러그인: + 통화 지역; -버전을 관리하기가 더 어렵습니다.
라이브러리: + 포함하기 쉬운; -높은 커플 링 및 잡종 버전.

추천: 명확한 API와 릴리스주기를 갖춘 서비스 어댑터.

14) 어댑터 API 예 (의사)

http
POST /adapters/psp/authorize
Headers:
X-Tenant: T1
Idempotency-Key: op-uuid
Body:
{ "amount":"10. 00","currency":"EUR","method":"card","card_token":"tok_..." }

→ 202 Accepted
{
"operation_id":"op-uuid",
"status":"PENDING",
"as_of":"2025-10-31T12:00:00Z"
}
공급자 웹 후크 → 어댑터 → 커널:
  • 'provider _ event _ id' → '받은 편지함' (PK on '(provesser, 이벤트 _ id)') → 도메인 이벤트 'PaymentAuthorized' 가 포함 된 웹 후크.

15) 전형적인 오류

"원시" 외부 회로를 도메인 → 엄격한 연결 및 고가의 마이그레이션으로 가져옵니다.
demotency 및 받은 편지함/아웃 박스 → 중복 효과 및 팬텀 상태 부족.
지터/제한이없는 배신자 → 폭풍 및 요율 제한 금지.
공정성이없는 유일한 글로벌 풀 → 한 명의 임차인이 모두를 "넣습니다".
PII 개정/→ 식별자가없는 로그는 사건 및 준수 위험을 조사 할 수 없습니다.
카나리아/플래그가 없습니다 → 릴리스는 모든 사람을 한 번에 깨뜨립니다.
'재생 후' 및 공급자 유지 보수 일정을 무시합니다.

16) 사전 판매 점검표

  • 외부 스키마 매핑 → 내부 언어; 버전 및 이전 버전 호환성.
  • 요청/웹 후크의 신원 ('operation _ id', '받은 편지함').
  • 타임 아웃, 풀 지터, 회로 차단기, DLQ 및 안전한 재구동 기능이있는 리트레이.
  • 요율 제한은 임차인 당 공정성입니다. '재생 후' 에 대한 존중.
  • mSL/OAuth/HMAC, 비밀 회전, PII 최소화, 액세스 감사.
  • 지역 격리 및 데이터 레지던트; 세입자/지역당 구성 요소.
  • p95/p99 메트릭, 클래스 오류, 차단기/429/DLQ 비율; 추적.
  • 샌드 박스 및 계약 테스트; 카나리아 롤아웃 및 phicheflags.
  • 사건 플레이 북 및 통화 중 교육.
  • 문서: SLA, 한계, 스키마, 진화 과정.

결론

공급자 어댑터는 도메인과 외부 세계 사이의 방패 및 변환기입니다. 등기성, 오류 제어 및 관찰 성을 갖춘 강력한 ACL은 통합을 예측할 수있게하고 공급자의 변경 비용을 줄이며 "체인 오류로부터 보호합니다. "독립적이고 관리 가능한 구성 요소로서의 디자인 어댑터와" 외부 세계 "는 내부 아키텍처를 깨뜨리지 않습니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.