GH GambleHub

Protokol öncelikli tasarım

Protokol-ilk nedir

Protokol-ilk, bileşenler (hizmetler, müşteriler, dış ortaklar) arasındaki bir etkileşim sözleşmesinin uygulanmadan önce tasarlandığı ve sabitlendiği bir yaklaşımdır. Kod, depolama, altyapı ve dokümantasyon sözleşmeye tabidir ve ondan otomatik olarak üretilir ve bunun tersi de geçerli değildir.

API'nin yalnızca kodun bir yan ürünü olduğu code-first'in aksine, Protocol-first protokolü birincil bir eser yapar: alan kavramlarına, veri modellerine, durumlara, hatalara, idempotency semantiğine, SLO/SLI'ye ve hatta sürüm politikasına sahiptir.

Neden buna ihtiyacın var?

Organizasyon genelinde arayüzlerin tutarlılığı ve öngörülebilirliği.
Hızlı giriş (SDK/kararlı/istemci otomatik oluşturma, düzgün hatalar ve kodlar).
Güvenilir evrim (şemaların uyumluluğu, test sözleşmeleri, açık sürüm politikası).
Ürün Odağı: Kod yazmadan önce davranış, SLA ve UX entegrasyonunu tartışın.
Otomasyon: CI/CD, tek bir doğruluk kaynağından eserler (istemciler, sunucu koçanları, doğrulayıcılar) toplar.
Güvenlik ve uyumluluk: haklar, PII maskeleme, saklama politikaları sözleşmede yer almaktadır.

Çekirdek yaklaşım

1. Tek Doğruluk Kaynağı (SSOT) - makine tarafından okunabilir özellikler:

REST: OpenAPI/JSON Şeması.
Etkinlikler ve akış: AsyncAPI, Avro/JSON Schema.
RPC: Protobuf (gRPC), Thrift, Smithy.
GraphQL: SDL + direktifleri/politikaları.
2. Uygulama öncesi düzenlemeler: etki alanı sözlüğü, hata kodları, idempotency semantiği, son tarihler, geri ödemeler, veri tekilleştirme.
3. Otomatik oluşturma: istemciler/sunucu saplamaları, türleri, SDK'lar, test sözleşmeleri, moks, Postman koleksiyonları, Terraform/OpenAPI Ağ Geçidi yapılandırması.
4. Yönetişim: Dizginler/politikalar (adlandırma, sayfalama, filtreler, hatalar), API loncası aracılığıyla inceleme, ana sürümler için değişim danışmanlığı.
5. Uyumluluk: "Yalnızca katkı maddesi" dağıtımlarının kesin olarak doğrulanması, semantik sürümler, kanarya/tüketici odaklı testler.
6. Sözleşme düzeyinde gözlemlenebilirlik: Korelasyon kimlikleri, hata modelleri, gecikme bütçeleri protokolde belirtilmiştir.

Süreç nasıl görünüyor (iskelet)

1. Başlatma: ürün özeti - kullanıcı yolculukları - API/Protokol PRD (kaynaklar/yöntemler/olaylar, SLA/SLO, hatalar, sınırlar).
2. Modelleme: Taslak spesifikasyon (OpenAPI/AsyncAPI/Proto) + veri şemaları, terimler sözlüğü.
3. Sözleşmeler ve UX entegrasyonları: yük örnekleri, hata sözleşmeleri, durum haritaları, sürüm kuralları.
4. İnceleme ve yönetişim: linters/standartlar, alan değişmezlerinin tartışılması, kilitlenme MGC (minimum garanti sözleşmesi).
5. Otomatik eser oluşturma: SDK'lar, saplamalar, test düzeltmeleri, altyapı taslakları (Ağ geçitleri, IAM kapsamları).
6. Uygulama ve Sözleşme Testleri: Tedarikçi ve tüketiciler CI'da uyumluluk kontrollerine tabi tutulur.
7. Gözlemlenebilirlik ve SLO: Korelasyon-id izleme, hata kataloğu, yeniden ödeme/zaman aşımı bütçeleri.
8. Salımlar ve evrim: ilk katkı maddesi, reddetme politikası, kanarya, A/B yetenek bayrakları.

Etkileşim protokolleri ve stilleri

REST/HTTP

Standartlar: kaynak modeli, 'GET/POST/PATCH/DELETE', sayfalama (imleç), filtreler, sıralama.
Alanlar ve şemalar: JSON Şeması, biçimler ('tarih-saat', 'uuid'), değişmezler (regex/enum/min-max).
Hatalar: tek biçim ('type', 'code', 'title', 'detail', 'trace _ id'), HTTP yığınlarına eşleme.
Değiştirme kontrolü: ETag/If-Match, POST için idempotent anahtarlar, açık semantik 409/422.

gRPC/RPC

Protobuf: kararlı etiket numaralandırma, 'isteğe bağlı', silinen alanların yeniden kullanılmasına izin vermiyor.
Sözleşmedeki son tarihler ve öncelikler; Kararlı durumlar (Tamam, INVALID_ARGUMENT, FAILED_PRECONDITION, vb.).
Akış: mesaj siparişi spesifikasyonu, geri basınç, son fragmanlar.

Olay odaklı (Kafka/NATS/SNS/SQS)

AsyncAPI: temalar/kanallar, bölümleme anahtarları, veri tekilleştirme anahtar kuralları, retentions, tam olarak bir kez anlambilim "vs'en az bir kez"

Çekirdek olay ve zenginleştirme: ayrı minimum yük ve uzantıları; Sürüm 'event _ type'/' schema _ version'.
Idempotency: 'event _ id', 'producer _ id', retrays ve veri tekilleştirme politikası.

GraphQL

Bir sözleşme olarak SDL, kullanımdan kaldırma direktifleri, derinlik ve karmaşıklık sınırları, hata kodları/uzantıları sözleşmesi.

Mimari ilkelerle entegrasyon

Ters Piramit/Kritik Yol İlk: şartnamede, MGC'yi vurgulayın (zorunlu minimum), uzantılar - '? include ='/yetenekleri.
Asfalt Yollar: bir dizi hazır spesifikasyon şablonu (ödeme, KYC, denetim, arama, dosyalar) + linters.
API Ağ Geçitleri ve Servis Ağı: sözleşmeye dayalı politikalar (oran limitleri, otomatik kapsamlar, yeniden denemeler, devre kesiciler).

Sürüm Oluşturma ve Evrim

Anlamsal Sürüm Oluşturma:
  • Minör = yalnızca eklemeli alanlar/kanallar.
  • Major = değişiklikleri kırma (silme, yeniden adlandırma, semantiği değiştirme).
  • Reddetme Politikası: destek pencereleri, 'Sunset' başlıkları, bildirim olayları.
  • Tüketici Odaklı Sözleşmeler (CDC): Mevcut API'nin belirli tüketicileri tatmin ettiğini doğrulamak.
  • Schema dizini: Geçmiş ve uyumluluk kurallarına sahip Schema Registry/Artifact Registry (GERI/İLERI/TAM).

Güvenlik ve uyumluluk

Sözleşmenin bir parçası olarak kimlik doğrulama/yetkilendirme (OAuth2/OIDC kapsamları, mTLS, JWT iddiaları).
PII/PCI: maskeleme, tokenizasyon formatları, özel depolama modlarına sahip alanlar/TTL.
Denetim ilkeleri: gerekli nitelikler ('actor', 'subject','action ',' occured _ at ',' trace _ id ').
Limitler: oran limiti başlıkları, kotalar, mesaj boyutları, son tarihler.

Sözleşme Gözlemlenebilirliği

Korelasyon/İstek-ID: şartnamede gereklidir.
Hata Kataloğu - çözülecek kodların ve SLA'ların sabit listesi.
SLI/SLO: p50/p95 gecikme, başarılı yanıtların oranı, uyumlu olayların oranı, idempotent tekrarlarının oranı.

Test ve kalite

Sözleşme testleri (sağlayıcı ↔ tüketici), CI'da şema diff, sahte sunucuların oluşturulması.
Altın örnekler: istek/yanıt referans örnekleri, e2e için demirbaşlar.
Kaos/gecikme enjeksiyonu: zaman aşımı/yeniden ödeme kontrolü, MGC'yi kaydederken uzantıların bozulması.

Örnek Alan Adı Şablonları

Ödeme (REST + Etkinlikleri)

'POST/payments' - '201 Created' with 'payment _ id', 'status = authorized'.
Olay 'ödeme. yetkilendirildi. v1 '(ядро):' {payment_id, tutar, para birimi, yöntem, occurred_at} '.
Uzatma 'ödemesi. zenginleştirilmiş. v1 ': risk oranı, coğrafi konum, cihaz-parmak izi.
Hatalar: '422' (doğrulama), '402' (ödeme gerekli), '409' (yinelenen).
SLA: 800ms p95 ≤ yetkilendirme; 2c lag p95 ≤ çekirdek olayı.

KYC (gRPC + kuyrukları)

RPC 'StartVerification (user_id)' - 'operation _ id'.
Konu 'kyc ilerleme olaylar. durum. v1 '(' PENDING '-' APPROVED/REJECTED ').
Sözleşme, PII alanları, raf ömrü, maskeleme, nedensel arıza kodlarını öngörmektedir.

Denetim (Yalnızca Etkinlik)

'audit. kaydedildi. v1 '(ядро):' actor ',' subject ',' action ',' occured _ at ',' trace _ id '.
Zenginleştirme: IP, cihaz, coğrafi - ayrı bir olay/iş parçacığı, çekirdeği engellemez.

Araçlar ve otomasyon (yaklaşık yığın)

Спеки: OpenAPI/AsyncAPI/Protobuf/Avro/GraphQL SDL.
Линтеры: Spektral, OpenAPI Diff, Buf (protobuf), Confluent SR uyumluluk kontrolleri.
Генерация: OpenAPI Jeneratör, Buf/İ, GraphQL Codegen, AsyncAPI Jeneratör.
Ağ Geçidi: Kong/Apigee/Azure/GCP GW, Elçi.
Тесты: Pact/CDC, Dredd, Schemathesis, Hoverfly, MockServer.
Register: Git-directory of schemes + Schema Registry/Artifact Registry.
Belgeler: Yeniden odaklama/Stoplight/Swagger-UI/GraphiQL/Explorer.

Anti-desenler

Kazayla ilk kod: "Kontrolörlerde ilk MVP", gerçek sonrası şartname, dokümantasyon ve davranış arasındaki tutarsızlık.
Swagger-wash: Gerçek kuralları olmayan resmi bir OpenAPI (hatalar, limitler, SLA'lar, sürümler).
Uyumluluk sonu: büyük sürüm olmadan kaldırılan alan/değiştirilen tür; Protobuf etiketlerini yeniden kullanma.
Sayfalama/filtreler olmadan "kalın" yanıt; idempotency eksikliği.
Sözleşme dışı güvenlik: Auth/Scopes wiki'de açıklanmıştır, ancak spesifikasyonda açıklanmamıştır.

Organizasyon süreci ile ilişkisi

API Guild: standartlar mütevelli, değişiklik incelemeleri, eğitim.
Tasarım Dokümanları: Her API için - PRD, ADR (çözümler), SLA, risk matrisi.
Değişim Yönetimi: RFC süreci, sürüm notları, geçiş kılavuzları, sapma-zaman çizelgesi.
Asfalt Yol ve Şablonlar: Spesifikasyondan servis çerçevesi jeneratörleri (işleyici iskeleti, doğrulama, günlük kaydı).

Kontrol listeleri

Başlamadan önce

  • Bir PRD ve bir domain sözlüğü vardır.
  • Seçilen stil (REST/gRPC/Event/GraphQL) ve şema biçimi.
  • MGC'ler, hatalar, SLA/SLO'lar, idempotency kuralları tanımlanmıştır.

Geliştirme aşamasında

  • Spesifikasyon, linterleri ve incelemeyi geçer.
  • SDK/Kararlı/Fikstür otomatik üretimi yapılandırılmıştır.
  • Sözleşme testleri (CDC) CI'ye dahildir; schema-diff blokları uyumsuz değişiklikler.

Yayınlanmadan Önce

  • Örnekler ve hata kodları ile entegratör belgeleri.
  • Sözleşmeli olarak gözlemlenebilir: Korelasyon-id, hata kataloğu, SLI panoları.
  • Sürüm politikası ve kullanımdan kaldırma ilan edilir.

SSS

Protocol-first ile API-first arasındaki fark nedir?
Genellikle terimler birbirinin yerine kullanılır. Protokol-first altındaki bu makalede, sözleşmenin titizliğini ve SLA, güvenlik ve gözlemlenebilirlik dahil olmak üzere tüm stillerin (REST/RPC/Events/GraphQL) kapsamını vurguluyoruz.

Bu gelişme yavaşlar mı?
Başlangıç biraz daha uzun olabilir, ancak o zaman entegrasyonlar, istikrar ve paralel geliştirme hızları (otomatik nesil, kararlı SDK'lar) kazanırız.

Hızlı deneylerle ne yapmalı?
Şemaların "taslak" sürümlerini (taslak), özellik bayraklarını ve sanal alanları kullanın, ancak satırları ve temel uyumluluk kurallarını atlamayın.

Toplam

Protokol öncelikli tasarım, sözleşmeyi mimarlığın merkezi yapar: davranışı koordine eder, şemaları düzeltir, üretimi ve testleri otomatikleştirir, ek olarak gelişir. Sonuç olarak, öngörülebilir entegrasyonlar, yüksek gelişme hızı ve sistemlerin ölçek ve komuta değişikliklerine karşı direnci elde ediyoruz.

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!

Telegram
@Gamble_GC
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.