GH GambleHub

마이크로 세르 비체 아키

1) iGaming에서 microservices 인 이유

변경 속도: 팀 기능 (지불, 내용, 위험, 토너먼트) 의 독립적 인 릴리스.
신뢰성: 한 서비스의 실패로 인해 전체 제품 (실패 제한) 이 중단되지는 않습니다.
스케일: "핫" 도메인의 수평 스케일 (지갑, 로비, 스트림).
준수: 지역/관할권별로 데이터 분리.

가치가없는 경우: 소규모 팀/볼륨, DevOps 관행, 약한 테스트 자동화-모듈 식 모놀리스가 더 좋습니다.

2) 도메인, 테두리 및 팀 (DDD + 팀 토폴로지)

도메인 윤곽: 계정/프로필, CCM/준수, 지불/지갑, 게임 내용/집계, 보너스/미션, 토너먼트, 마케팅/CRM, 보고/BI.
경계 상황 = 데이터 모델 및 언어 계약.
흐름 변경 명령: 하나의 명령 = 하나의 루프 + SLO.
BFF (프론트 엔드 백엔드): 클라이언트에서 "오케스트레이션" 을 수집하지 않도록 웹/모바일/파트너를위한 별도의 외관.

3) 통신: 동기 대 비동기

동기식 (REST/gRPC): 즉각적인 응답이 필요한 경우 (예금 제한 확인).
Asynchron (Kafka/NATS/SQS): 이벤트 및 배경 프로세스 (캐쉬백 발생, 우편 발송, 등급 업데이트).

규칙:
  • 중요 경로 = 최소 네트워크 홉.
  • 이벤트 및 계약 API를 통한 도메인 간 통합.
  • 온라인으로 "5 + 동기 통화 체인" 을 구축하지 마십시오 → EDA/sagas를 사용하십시오.

4) 계약 및 버전 지정

계약 1: OpenAPI/AsyncAPI + Schema Registry (Avro/JSON Schema).

SemVer + 호환성: 필드를 추가해도 클라이언트가 중단되지 않습

소비자 중심 계약 (CDC): CI의 자동 점검 (vs. 회귀).
거부 정책: 지원 창 (12-18 개월), 이전 버전의 원격 측정.

5) 이벤트, 사가 및 일관성

전송/거래 로그 테일링: 원자 레코드 "데이터 + 이벤트".

사가 패턴:
  • 지불/출력을위한 오케스트레이션 (중앙 코디네이터).
  • 보너스/미션에 대한 안무 (이벤트에 대한 반응).
  • 이데올로기: 'entityID + action + nonce' 의 키, dedup 레지스트리 스토리지.
  • 일관성: "외부" -이벤트를 통한; "내부" -서비스 내 거래.

6) 데이터 및 스토리지

"자체 상점" 의 원칙: 각 서비스는 자체 데이터베이스 (체계 격리) 를 소유합니다.

액세스 패턴별 스토리지 선택:
  • 트랜잭션/밸런스는 엄격한 불변량을 가진 관계형 (PostgreSQL) 입니다.
  • 이벤트/로그-추가 전용 (Kafka/Redpanda).
  • 캐시/세션 - Redis/KeyDB; 리더 보드-Redis 정렬 세트.
  • 검색-OpenSearch/Elastic.
  • CQRS (Materialized Read Projections) -빠른 목록/보고서.

7) 신뢰성과 안정성

dempotent 작업에 대해서만 지터/재시도 예산으로 타임 아웃/재시도.
서비스 간 회로 차단기/Outlier 배출.
벌크 헤드: "잡음" 업스트림을위한 별도의 수영장.
클라이언트/경로 당 속도 제한, 역압 (503 + 재시도 후).
대기열에서 데드 레터 + 독 메시지 처리.

8) 관찰 가능성

추적: OpenTelemetry (shlyuz → servisy → BD를 통한 'trace _ id').
메트릭: RPS, p50/p95/p99, 오류율 4xx/5xx, 채도 (CPU/mem/큐), 비즈니스 메트릭 (TTP, TtW).
로그: 구조화 된 JSON, PII/PAN/IBAN 마스킹, 'trace _ id' 의 상관 관계.
SLO/경고: 경로/기능 (예: '예금 p95 5%`).

9) 안전 및 준수

제로 트러스트: mSL 서비스 서비스 (SPIFFE/SPIRE), 단기 인증서.
AuthN/Z: OAuth2/JWT (aud/scope/exp), 역할의 속성 차별화.
비밀: KMS/비밀 관리자/밀봉 된 비밀, 키 로테이션.
GDPR/데이터 현지화: 지역 클러스터, API 게이트웨이의 지오 펜싱.
감사: 불변의 로그 (WORM), 관리자 동작 추적.

10) 배포 및 릴리스

컨테이너/K8: 하나의 서비스 = 하나의 배포; 자원/제한; PodDisruptionBudget.
CI/CD: 라인터, 단위/계약/인테그 테스트, 보안 스캔, SBOM.
릴리스: 카나리아/청록색/그림자, 확장 및 계약을 통한 계획 마이그레이션.
Autoscale: CPU + RPS + p95 + 큐 깊이에 의한 HPA; 붕괴시 배수.

11) 성능 및 비용

프로파일 링: p95/99 "서비스 및 방법별" 화염 그래프.
캐싱: 읽기/쓰기; 이벤트 별 TTL/장애.
데이터 지역: 핫 데이터를 계산에 가깝게 유지하십시오.
FinOps: 다운로드 대상 60-70%, "따뜻한 수영장", 비활성 근로자의 자동 정지.

12) 도메인 템플릿 (iGaming)

12. 지불/지갑 1 개

서비스: 'payment-gw' (외관), 'wallet', 'psp-adapters-', '사기 확인'.
스트림: 'init → 예약 → 캡처/롤백' (saga).
확인: 'PaymentInitiated', 'PaymentAuthorized', 'PaymentSettled/Failed'.
이념성: 'Idempotency-Key', '지갑' 의 데드 업.

12. 2 CCM/준수

лервис달력: 'kyc-flow', 'doc-storage', 'justice-secking', 'pep-screening'.
확인: 'KycSubmitted/Approved/Rejected', 'RiskScoreUped'.
감사 및 ETA: 작업 대기열, 타임 라인 케이스, 사후 작업.

12. 3 보너스/미션

서비스: '보너스 엔진', '지갑 보너스', '자격'.
안무: 'BetPlaced → BonusEngine → BonusGranted → WalletCredited'.
남용으로부터 보호: 보조금, 제한, 규칙 시뮬레이터.

12. 4 개의 토너먼트/리더 보드

서비스: '토너먼트 -svc', '스코어링', '리더 보드'.
스토리지: OLAP의 Redis ZSET + 주기적 "플러시".
확인: '스코어 업데이트', '토너먼트 마감', '보상'.

13) 계약 + 이벤트 예 (간체)

OpenAPI (조각) - 지갑

yaml paths:
/v1/wallet/{userId}/credit:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreditRequest'
responses:
'202': { description: 'Enqueued' }
components:
schemas:
CreditRequest:
type: object required: [amount, currency, reason, idempotencyKey]
properties:
amount: { type: number }
currency: { type: string, example: UAH }
reason: { type: string, enum: [Deposit, Bonus, Adjustment] }
idempotencyKey: { type: string }

AsyncAPI (조각) -이벤트

yaml channels:
wallet. credit. applied:
publish:
message:
name: WalletCreditApplied payload:
type: object required: [userId, amount, currency, sourceEventId]

14) 테스트

도메인 규칙에 대한 단위/속성 기반.
CDC (Pact/Assertible) -공급자/소비자 계약 테스트.
현지 중개인 (테스트 컨테이너) 과의 통합.

중요한 흐름 E2E (registratsiya → depozit → 시작 이그리 → vyvod)

혼돈/실패 테스트: PSP 셧다운/브로커 드롭/존 손실.

15) 측정 항목 및 SLO (최소)

서비스의 가용성: '계정 99. 결제/지갑의 경우 9% '.
대기 시간 p95: 중요한 경로 API 계정 300-500 ms.
오류 예산: 0. 1–0. 분기당 5%, 화상 경보.
대기열: 리드 타임 이벤트 (→ 소비 생성), DLQ 1%.
비즈니스: TTP, TtW, FTD 성공, KYC-TtV.

16) 점검표

서비스 설계

  • 도메인 경계 및 데이터 소유자를 지우십시오.
  • OpenAPI/AsyncAPI는 레지스트리에서 + 스키마를 계약합니다.
  • SLO/경고 정의; 메트릭/트레일/로그가 내장되어 있습니다.
  • 타임 아웃/리트레이/이데올로기 정책.
  • 스키마 마이그레이션: 확장 및 계약.

출시 전에

  • 단위/CDC/통합 테스트 녹색.
  • 카나리아 노선 및 롤백 계획.
  • 속도 제한/중량 경로가 구성됩니다.
  • 비밀/키/인증서가 파고 있습니다.
  • Ficha 플래그와 폴백이 준비되었습니다.

17) 반 패턴

데이터 버스로서의 네트워크: 이벤트 대신 깊은 동기 체인.
모든 서비스에 대한 일반적인 "신" -DB.
dempotency의 부족 → 이중 쓰기/발생.
원격 측정 및 킬 스위치가없는 어두운 릴리스.
숨겨진 세션 (외부 조건 대신 모든 곳에서 끈적 끈적함).
버전 및 CDC없이 "코드 내" 계약.
서비스 대신 API 게이트웨이의 논리 (게이트웨이 = 얇음).

18) 모놀리스 마이그레이션 (Strangler Fig)

1. 외관 게이트웨이와 기본 회로 (예: 지불) 를 선택하십시오.
2. 모놀리스에서 이벤트까지 이진 로깅 (아웃 박스) 을 제거하십시오.
3. 점차적으로 엔드 포인트를 새로운 서비스 (라우팅/카나리아 웨이트) 로 전송합니다.
4. 모놀리스를 "코어" 에 압축하여 끄십시오.

19) 스택 및 인프라 (예)

커뮤니케이션: REST/gRPC, Kafka/NATS; 스키마 등록 소.
리포지토리: PostgreSQL, Redis, OpenSearch, S3/MinIO; OLAP-클릭 하우스/빅 쿼리.
컨테이너/오케스트레이션: 필요한 경우 Docker, Kubernetes (Ingress/Gateway), Service Mesh (Istio/Linkerd).
게이트웨이: Envoy/Kong/Traefik/NGINX.
CI/CD: GitHub 액션/GitLab CI + ArgoCD/Flux; 협정/OWASP/ZAP.
관찰 가능성: OpenTelemetry, Prometheus, Tempo/Jaeger, Loki.

20) 최종 치트 시트

도메인 및 데이터 책임 별 설계 경계.
Synchron-답변이 필요한 경우에만; 나머지는 이벤트입니다.
계약/계획/CDC-회귀 보험.
Sagas + outbox + demempotency-신뢰성의 기초.
관찰 가능성과 SLO는 옵션이 아니라 "준비된" 기준입니다.
카나리아/청록색, 마이그레이션-확장 및 계약을 통한 릴리스.
안전/준수: mSL, JWT, KMS, 지역 데이터.
첫째, 스케일과 팀이 준비되면 모듈 식 모놀리스, 진화.

Contact

문의하기

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

통합 시작

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

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

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