GH GambleHub

Referans uygulaması

1) Hedefler, sınırlar ve ilkeler

Hedefler:

1. Protokolün/özelliklerin açık bir yorumunu verin.

2. Bağımsız uyumluluk kontrolü sağlayın.

3. İstemci/sunucu/webhook'ların çalışma örneklerini sağlayın.

4. Entegrasyon ve uygulama maliyetlerini azaltın.

Sınırları:
  • RI, performansı en üst düzeye çıkarmak yerine davranışsal doğruluğa odaklanır.
  • Minimum bir dizi üretim ayarı içerir (TLS, günlük kaydı, metrikler, izleme, sınırlayıcılar).
  • Ticari/ürün satışlarının yerini almaz, ancak'daha düşük kalite çubuğunu "ayarlar.
İlkeler:
  • Spec-first: true - teknik özelliklerde (OpenAPI/AsyncAPI/Proto/JSON-Schema/IDL).
  • Deterministik ve Test Edilebilir: Tekrarlanabilir Yanıtlar ve Kurgular.
  • Docs-as-Code: Hepsi VCS'de, kod ve uygunluk testleri ile bir sürüm.
  • Taşınabilirlik: konteynerler, Helm/compose, hazır manifestolar.

2) Referans uygulama türleri

RI-Server: spesifikasyon başına sunucu referansı (REST/gRPC/GraphQL/Streaming).
RI-Client/SDK: müşteri referansı (bir veya iki popüler platform) + örnekler.
RI-Webhook Alıcı: imzalı webhook işleyicisi (imza doğrulama, retrays).
RI-Adaptörler: mesaj aracılarına/olay veri yollarına (Avro/Proto/JSON, Schema Registry) adaptörler.
RI-Data: referans veri setleri, gizlilik profilleri, altın anlık görüntüler.


3) RI Depo Mimarisi

Önerilen yapı:

ri/
specs/        # OpenAPI/AsyncAPI/Proto/JSON-Schema server/       # эталонный сервер src/
config/
docker/
helm/
client/       # эталонный клиент/SDK + примеры js/ python/ go/
conformance/     # конформанс-раннер, тест-кейсы, золотые файлы cases/
fixtures/
golden/
samples/       # end-to-end сценарии, Postman/k6/Locust security/      # ключи тестовые, политики, пример подписи docs/        # руководство, ADR, runbook, FAQ ci/         # пайплайны, конфиги, матрица совместимости tools/        # генераторы, линтеры, проверяльщики схем
Anlaşmalar:
  • Her sürümün bir 'vX' etiketi vardır. Y.Z've eserler (resimler, grafikler, SDK).
  • Her bir nokta için - miktar ve imza (tedarik zinciri).
  • CHANGELOG değişiklikleri "kırma'olarak işaretledi.

4) Özellikler, sözleşmeler ve planlar

Taşıma: OpenAPI/REST, gRPC/Proto, GraphQL SDL, AsyncAPI.
Anlambilim: hata kodları, idempotency, imleçler/sayfalama, retrai, veri tekilleştirme.
Olaylar: type/version,'id ',' occurred _ at _ utc ',' partition _ key ', order invariants.
İmzalar/güvenlik: OIDC/JWT damgaları, webhook imzası (HMAC/EdDSA), anahtar rotasyonu.

Uyumluluk şeması: 'geriye dönük kurallarileriTam ', MAJOR olmadan değişiklikleri bozmayı devre dışı bırakır.

5) Uygunluk testi

Kontrol ettiklerimiz:
  • Lekelere uygunluk (şemaların doğrulanması),
  • Davranışsal değişmezler (idempotency, sorting, cursors, TTL, retry policies),
  • (güvenlik imzaları, son tarihler, nonce/replay koruması),
  • Zamansal yönler (UTC, RFC3339, DST),
  • olumsuz durumlar ve sınır koşulları.

Altın dosyalar: Sonuçların karşılaştırıldığı kararlı referans yanıtları/olayları.

Runner skeci:
python def run_conformance(target_url, cases, golden_dir):
for case in cases:
req = build_request(case.input)
res = http_call(target_url, req)
assert match_status(res.status, case.expect.status)
assert match_headers(res.headers, case.expect.headers)
assert match_body(res.json, golden_dir / case.id, allow_extra_fields=True)
for invariant in case.invariants:
assert invariant.holds(res, case.context)
Uyumluluk matrisi (örnek):

consumer/sdk-js 1.4server 1.6, 1.7server 2.0 consumer/sdk-go 0.9server 1.5–1.7   –
webhook-receiver 1.1events v1events v2 (deprecated fields removed)

6) Üretim minimum (fırfırlar yok)

Güvenlik: Varsayılan olarak TLS, güvenlik başlıkları, CORS sınırlaması, sınırlayıcılar, anti-yeniden oynatma.
Gözlemlenebilirlik: günlükler (yapısal + PD maskeleme), metrikler (p50/p95/p99, hata oranı), izleme (korelasyon 'request _ id').
Yapılandırma: tüm ortam değişkenleri ve dosyaları aracılığıyla, yapılandırma şeması doğrulanır.
Perf-basline: ortak havuz ayarları, zincir zaman aşımı bütçesi, birleştirmeli önbellek.
Kararlılık: jitter ile retrai, devre kesici, geri basınç.


7) CI/CD ve eserler

Boru hattı (referans):

1. Lint/montaj/ünite testleri.

2. Spec doğrulama (OpenAPI/AsyncAPI/Proto-lint).

3. Teknik özelliklerden SDK/bıçak üretimi.

4. Uyumluluk çalışması: 'ri-server', 'cases've' golds'a karşı.

5. Görüntüleri oluşturun (SBOM, imza), kayıt defterine yayınlayın.

6. E2E komut dosyaları (docker-compose/kind/Helm).

7. Docksite yayınlama ve örnekler.

Artefaktları serbest bırakın:
  • Konteyner resimleri'ri-server ','ri-webhook',
  • SDK paketleri (npm/pypi/go),
  • Helm chart/compose dosyaları,
  • "Altın dosyalar've uygun bir koşucu ile zip.

8) Örnekler, SDK ve nasıl yapılır

İki popüler yığın üzerinde mini uygulama (örn. Düğüm noktası. Js/Go) aşağıdaki adımlarla: kimlik doğrulama> API çağrısı - hata işleme - geri çekme - webhook.
Nasıl yapılır: idempotent POST, el yazısı sayfalama, webhook imzası, işleme 429/503.
"Duman perf" için k6/JMeter profiller (yük değil, temel sağlık).


9) Sürüm ve evrim

SemVer: breaking changes - MAJOR; Kırılamayan MINOR - PATCH ekleyin.
Reddetme planı: özelliklerde bildirimler, özellik bayrakları, "gölge" uygunluk modu süresi, ardından zorlama.
Olay uyumluluğu: Tüketicilerin bilinmeyen alanları göz ardı etmesi gerekir.


10) RI'da güvenlik ve gizlilik

Test anahtarları ve sırları - sadece stand için; rıhtımda - değiştirme talimatları.
PD günlüklerde maskeleme; Ficesture anonimleştirme profilleri (PII - sentetik).
Demo ortamı eser ömrü politikası (TTL, otomatik temizleme).


11) Gözlemlenebilirlik ve RI için SLO

SLI/SLO RI: p95 <250 ms referans bankında, hata oranı <0. %5, bağımlılık hatası altında doğru bozulma (örnekte).
Panolar: gecikme/Verim/Hatalar + uygunluk sonuçları.
Webhooks/token kontrollerini imzalamak için karar günlükleri (izlenen başarısızlık nedenleri).


12) Performans: "Yeterli" taban çizgisi

Sıcak ve soğuk pistlerdeki 'wrk/hey/k6' profilleri.
Açık pozisyon: RI, maksimum RPS'de rekabet etmez, ancak tipik bir hedefe dayanmalıdır (örneğin, t3'te 500 RPS. p95 <200ms ile orta) - entegratörler için bir kılavuz olarak.


13) Kullanım kılavuzu (runbook)

Yerel başlatma: compose/' make up '.
K8s-deploy: Dümen değerleri, sırlar, giriş, HPA.
Webhook imzalama anahtarlarının döndürülmesi (çift anahtar dönemi).
Trableshooting: sık hatalar ve nedenleri (401, 403, 429, 503), günlükleri/izleri okumak için nasıl.


14) Yönetim ve mülkiyet

Sahipler: lekelerin ürün sahibi + platform (ekipman) + güvenlik.
Yayın takvimi ve mola değişikliği onay penceresi.
Anlamlı protokol değişiklikleri üzerine RFC/ADR.


15) Diller/platformlar için uyarlama

Önerilen minimum bir üst düzey (JS/TS) ve bir sistemdir (Go/Java).
Tür eşleme: tarihler/para biçimleri/ondalık/bayt kümeleri nasıl temsil edilir.
Her SDK'da geri çekilmeler/zaman aşımları/havuz ayarları için öneriler.


16) Anti-desenler

RI = "sandbox without tests": uygunluk yok, fayda yok.
Speka koddan ve testlerden "ayrı yaşıyor" - tutarsızlık.
"Altın dosyalar've değişmezlerin eksikliği - davranış hakkında pullar ve anlaşmazlıklar.
Bağımlılık çerçevesi: Kapsayıcı olmadan bir kütüphaneye/buluta katı bağlanma.
PD maskeleme olmadan günlükler, arşivdeki anahtarlar.
Perf, davranış yerine karışır: "kimin haklı" yerine "kimin daha hızlı" olduğunu ölçmeye çalışır.
Modülerlik ve eserler olmadan bir dev ikili/görüntü (SDK/grafikler/özellikler).


17) Mimar kontrol listesi

1. Speka - kanonik ve doğrulanmış? (OpenAPI/Proto/AsyncAPI/JSON-Schema)

2. Tam örneklerle bir RI sunucusu ve en az bir RI istemcisi/SDK var mı?
3. Uyumluluk koşucusu, vakalar, "altın dosyalar", negatifler ve değişmezler hazır mı?
4. CI/CD görüntüleri toplar, SDK, site, uygunluk ve e2e çalışır?
5. Varsayılan güvenlik: TLS, imzalar, sınırlar, PD maskeleme?
6. Gözlemlenebilirlik: RI için günlükler/metrikler/yollar, panolar ve SLO'lar?
7. Perf-basline belgelenmiş ve tekrarlanabilir?
8. SemVer sürümü, uyumluluk matrisi, reddetme prosedürü?
9. Runbook ve yerel/küme başlatma - tek tıklamayla?
10. Sahipler, yayın takvimi, RFC/ADR akışı tanımlandı mı?


18) Mini-örnek: referans webhook (pseudocode)

python def verify_webhook(request, keys):
sig = request.headers["X-Signature"]
ts = int(request.headers["X-Timestamp"])
if abs(now_utc().epoch - ts) > 300: return 401 # replay window body = request.raw_body if not any(hmac_ok(body, ts, k, sig) for k in keys.active_and_previous()):
return 401 event = json.loads(body)
if seen(event["id"]): return 200 # idempotency handle(event)
mark_seen(event["id"])
return 200

Test durumu kontrol eder: zaman penceresi, imzanın doğruluğu (geçerli ve önceki anahtar), olayın idempotensi. id ', negatifler (bozuk imza, süresi dolmuş' ts ').


Sonuç

Referans uygulaması, sistem davranışının kanonudur: kod, testler ve eserler tarafından onaylanan tek bir özellik. İyi RI entegrasyonu hızlandırır, protokol belirsizliğini ortadan kaldırır, doğrulanabilir uyumluluk sağlar ve güvenlik, gözlemlenebilirlik ve performans için minimum standartları belirler. Mühendislik "iskeletinizin'bir parçası haline getirin - ürünleriniz, ortaklarınız ve ekosisteminiz daha hızlı ve daha güvenilir bir şekilde hareket edecektir.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.