GH GambleHub

Հանրաքվե-իմպեմենտացիա

1) Նպատակներ, սահմաններ և սկզբունքներ

Նպատակները

1. Տվեք արձանագրության/մեջքի միանշանակ մեկնաբանություն։

2. Ապահով ստուգում տրամադրելու համար։

3. Տրամադրել հաճախորդի/սերվերի/վեբհուկի աշխատանքային օրինակներ։

4. Նվազեցնել ինտեգրման և ներդրման արժեքը։

Սահմանները

RI-ն կենտրոնանում է վարքագծային ճկունության վրա, ոչ թե արտադրողականության բարձրացման վրա։

Այն ներառում է նվազագույն prod-105 (TFC, լոգոն, մետրեր, թրեյսինգ, լիմիտերներ)։

Չի փոխարինում առևտրային/ապրանքային իրականացումը, բայց տալիս է «որակի ստորին պլանը»։

Սկզբունքները

Spec-first: Ճշմարտությունը մասնագիտություններում (OpenAPI/AsyncAPI/Delo/JSON-Schema/IDL)։

Deterministic & Testable: վերարտադրված պատասխանները և ֆիքսուրները։

Docs-as-Code: Ամեն ինչ VCS-ում, մեկ տարբերակ կոդով և կոնֆորմացիոն թեստերով։

Portability: բեռնարկղեր, Helm/compose, պատրաստի մանիֆեստներ։

2) Հանրաքվեների իմպեմենտացիայի տեսակները

RI-Server: սերվերի ստանդարտ (REST/gRPC/GraphQL/Streaming)։

RI-Client/MSK 'հաճախորդի ստանդարտ (մեկ-երկու հայտնի պլատֆորմներ) + օրինակներ։

RI-Webhook Receiver-ը ստորագրված Webhuks-ի վերարտադրողն է (ստորագրության հավատարմագրում, retray)։

RI-Adapters: Brockers/իրադարձությունների (Avro/Delo/JSON, Schema Registry)։

RI-International: Տվյալների ստանդարտ հավաքածուներ, գաղտնիության պրոֆիլներ, «ոսկե» սարքավորում։

3) RI ռեպոզորիայի ճարտարապետությունը

Առաջարկվող կառուցվածքը


ri/
specs/# OpenAPI/AsyncAPI/Proto/JSON-Schema server/# reference server src/
config/
docker/
helm/
client/# reference client/SDK + examples js/python/go/
conformance/# conformance runner, test cases, gold cases files/
fixtures/
golden/
samples/# end-to-end scripts, Postman/k6/Locust security/# test keys, policies, example signature docs/# manual, ADR, runbook, FAQ ci/# pipelines, configs, compatibility matrix tools/# generators, linters, circuit checkers

Համաձայնագրեր

Յուրաքանչյուր թեգը 'vX։ Y.Z "և արտեֆակտները (պատկերներ, գծապատկերներ, MSK)։

Յուրաքանչյուր հետևի համար գումարը և ստորագրությունը (supply-chain)։

CHANGELOG-ը '«կոտրող» փոփոխությունների նշումով (breaking)։

4) Սպեկեր, պայմանագրեր և սխեմաներ

Տրանսպորտը ՝ OpenAPI/REST, gRPC/Delo, GraphQL DRL, AsyncAPI։

Սեմանտիկան 'սխալներ, գաղափարախոսություն, կուրսորներ/պագինացիաներ, ռեթրատիա, դեդուպլիկացիա։

Իրադարձությունները 'տեսակը/տարբերակը, «id», «occurred _ at _ utc», «partection _ key», կարգի ինվարանտներ։

Ազդանշաններ/անվտանգություն ՝ OIDC/JWT կլեյմա, վեբհուկի ստորագրություն (HMAC/EddDSA), կոդավորման։

Կոմպատիբիլիտի սխեմաները '"backward" forward' fox "կանոնները, խախտող փոփոխությունների արգելքը առանց MAJOR-ի։

5) Կոնֆորմանսի փորձարկումը

Ի՞ նչ ենք ստուգում

specam (սխեմաների վալիդացիա),

վարքագծային invariants (idempotention, տեսակավորում, կուրսորներ, TTL, retry քաղաքականություն),

անվտանգություն (ստորագրություններ, ժամկետներ, nonce/replay-պաշտպանություն),

ժամանակավոր ասպեկտներ (UTC, RFC339, DST),

բացասական դեպքեր և սահմանափակում պայմաններ։

Ոսկե ֆայլերը (golden) 'կայուն ստանդարտ պատասխաններ/իրադարձություններ, որոնց դեմ համեմատվում են արդյունքները։

Sketch ranner

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)

Մատրիցա (օրինակ)


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) Prodacchen-նվազագույն (առանց բուժումների)

Տե՛ ս ՝ TRS by-ը, անվտանգության վերնագրերը, MSS-ի սահմանափակումը, սահմանաչափերը, հակա-replay-ը։

Observability: Logs (կառուցվածքային + PD), մետրիկները (p50/p95/p99, error rate), թրեյսինգը (հարաբերակցությունը 'request _ id ")։

Express: Ամեն ինչ շրջակա միջավայրի և ֆայլերի միջոցով, կազմաձևման սխեման վալիդացվում է։

Perf-bunline: փամփուշտների առողջ իրականացումը, շղթայի թայմաութ բյուջեն, coalescing-ի քեշը։

Իսպանիան 'ջիթերի, circuit breaker, backpressure։

7) CI/CD և արտեֆակտներ

Դելպլին (հանրաքվեներ)

1. Լինթ/հավաքում/յունիտների թեստեր։

2. (OpenAPI/AsyncAPI/Into-lint)։

3. SDK/Express գեներացիան մեջքից։

4. Կոնֆորանսը '"ri-server' ընդդեմ" cases "և" ոսկու "։

5. Պատկերների հավաքումը (SBSA, ստորագրություն), հրատարակումը խմբագրությունում։

6. E2E սցենարները (docker-compose/kind/Helm)։

7. Դոկ կայքի և օրինակների հրապարակումը։

Արտեֆակտները։

բեռնարկղային պատկերներ «ri-server», «ri-webhook»,

MSK փաթեթներ (npm/pypi/go),

Helm-chart/compose ֆայլեր,

zip-ը «ոսկե ֆայլերով» և կոնֆորմանսային ռեների հետ։

8) Սեմպլները, MSK և «how-to»

Մինի-ծրագիրը երկու հայտնի ապակիների վրա (օրինակ ՝ Node։ js/Go) քայլերով 'API-ի զանգի վավերացումը բացատրում է սխալների վերամշակում։

How-to 'idempotent POST-ը, կուրսային սագինացիան, վեբհուկի ստորագրությունը, 429/503 վերամշակումը։

k6/JMeter-ը ավելացված է «smoke-perfa» (ոչ թե ռուսական, այլ առողջ) համար։

9) Տարբերակումը և էվոլյուցիան

SemVer: կոտրող փոփոխություններ MAJOR-ում; ավելացում առանց կոտրվածքի MINOR; ուղղումներ PATCH։

Deprecation-պլանը 'հայտարարությունները սպեկերում, ֆիչի դրոշներում, www.orm.ru-ի «ստվերային» ռեժիմի ժամանակահատվածը, ապա enforce-ը։

Իրադարձությունների համատեղելիությունը 'վահանակները պարտավոր են անտեսել անծանոթ դաշտերը։

10) Անվտանգությունն ու սեփականաշնորհումը RI-ում

Թեստային բանալիները և գաղտնիքները միայն պատի համար են։ դանակներում փոխարինման հրահանգն է։

PD-ի դիմակավորում լոգարաններում։ ֆիքսթուրների անանունացման ավելցուկը (PII intintephics)։

Դեմո միջավայրի արտեֆակտների կյանքի քաղաքականությունը (TTL, Auto-մաքրումը)։

11) Դիտարկումը և SLO-ն RI-ի համար

SLI/SLO RI: p95 <250 ms ստանդարտ պատի վրա, error rate <0։ Հինգ տոկոսը, ճիշտ դեգրադացիան կախվածության հրաժարման տակ (սեմպլում)։

Dashbords: latency/Throughput/Errors + կոնֆորմացիոն արդյունքները։

Decision-Logs-ը ստորագրելու համար webhuks/Toxen ստուգումներ (ձախողումների հետադարձելի պատճառները)։

12) Արտադրողականություն ՝ «բավարար» բազլայնը

Ավելցուկ 'wrk/hey/k6 «տաք» և «սառը» ճանապարհների վրա։

Պարզ դիրք. RI-ը չի մրցում առավելագույն RPS-ով, բայց պետք է դիմակայի տիպիկ target (օրինակ ՝ 500 RPS t3։ R95 <200ms) - որպես ինտեգրատորների ուղեցույց։

13) Գործողության ղեկավարությունը (runbook)

Տեղական գործարկումը 'compose/« make up »։

K8s-depla: Helm արժեքներ, գաղտնիքներ, ingress, HPA։

Քրեյշնը բացատրում է վեբհուկի ստորագրությունները (dox-key ժամանակահատվածը)։

Trablshuting: հաճախակի սխալներ և պատճառներ (401, 403, 429, 503), ինչպես կարդալ logs/treiss։

14) Կառավարությունն ու ունեցվածքը

Owners 'սպեկտրի ապրանքային սեփականատերը + պլատֆորմը (տեխնոլոգիան) + անվտանգությունը։

Օրինագծերի օրացույցը և կոտրող փոփոխությունների հաստատման պատուհանը։

RSA/ADR-ը նշանակալի փոփոխությունների վրա։

15) Հարմարեցում լեզուների/պլատֆորմի համար

Առաջարկվող նվազագույն ՝ մեկ բարձր մակարդակի (JS/TS) և մեկ համակարգային (Go/Java)։

Mapping տեսակի. Ինչպես են ներկայացված ամսաթվերը/դրամական կոդերը/decimal/բայթերի հավաքածուները։

Ռելեների/թայմաուտների/պուլային պարամետրերի առաջարկությունները յուրաքանչյուր SDK-ում։

16) Anti-patterna

RI = «ավազը առանց թեստերի» 'չկա կոնֆորմացիա, ոչ էլ օգուտներ։

Սպան «ապրում է առանձին» կոդից և թեստերից բացատրվում է անհամապատասխանությունը։

«Ոսկե ֆայլերի» և ինվարանտների բացակայությունը ռուսական ֆլեյկի և վարքի մասին բանավեճերի մասին։

Ֆրեյմորքի կախվածությունը 'խիստ կապվածություն մեկ գրադարանի/ամպերի հետ առանց տարանջատման։

Լոգները առանց PD-ի դիմահարդարման, բանալիներ են։

Փերֆ-խառնուրդները վարքի փոխարեն 'փորձելով չափել «ով ավելի արագ» փոխարեն «ով է ճիշտ»։

Մեկ հսկա բինար/պատկեր առանց մոդուլիզմի և արտեֆակտների (MSK/charts/spects)։

17) Ճարտարապետի չեկի թերթիկը

1. Սպեկան կանոնական և վալիդացված է։ (OpenAPI/Proto/AsyncAPI/JSON-Schema)

2. Կա RI-server և առնվազն մեկ RI-client/MSK-ը ամբողջական օրինակներով։

3. Կոնֆորմանս-ռաններ, քեյսներ, «ոսկե ֆայլեր», բացասական և ինվարիացիաներ պատրաստ են։

4. CI/CD-ն հավաքում է պատկերներ, SDK, կայքը, սկսում է www.orm.ru և e2e։

5. Լռելյայն անվտանգությունը 'TFC, ստորագրություններ, սահմաններ, PD դիմակավորում։

6. Դիտարկումը 'logs/metrics/treiss, dashbords և SLO RI-ի համար։

7. Perf-բազլայնը փաստաթղթավորված և վերարտադրված է։

8. SemVer-ի տարբերակումը, կոդավորման մատրիցը, deprecation-ընթացակարգը։

9. Runbook-ը և տեղական/կլաստերային արձակումը 'մեկ կտոր։

10. Սեփականատերերը, օրինագծերի օրացույցը, RFC/ADR հոսքը որոշված են։

18) Մինի-օրինակ 'Webhuk (կեղծ)

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

Թեստ-Քեյսը ստուգում է, որ ժամանակի պատուհանը, ստորագրության ճկունությունը (ընթացիկ և նախորդ բանալին), գաղափարախոսությունը 'event։ id ', բացասական (կոտրված ստորագրություն, ժամկետանց' ts ')։

Եզրակացություն

Հանրաքվեը համակարգի վարքագծի կանոնն է, որը հաստատվում է կոդով, թեստերով և արտեֆակտներով։ Լավ RI-ն արագացնում է պարամետրերը, մաքրում պարամետրերի երկիմաստությունը, ապահովում է ստուգված համատեղելիություն և տալիս անվտանգության, դիտարկման և արտադրողականության նվազագույն ստանդարտներ։ Դարձրեք այն ձեր ինժեներական կմախքի մի մասը, և ձեր ապրանքները, գործընկերները և էկոհամակարգը ավելի արագ և ավելի հուսալի կլինեն։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։