Πύλη API και δρομολόγηση
1) Ρόλος πύλης API στην αρχιτεκτονική
Μια πύλη API είναι ένα ενιαίο σημείο εισόδου σε μικροϋπηρεσίες. Είναι αυτός:- Αιτήματα διαδρομών (ανά διαδρομή/κεφαλίδες/γεω/βάρος/έκδοση).
- Προστατεύει την περίμετρο (TLS/mTLS, WAF, DDoS, όρια ταχύτητας, authN/Z).
- Έλεγχος κυκλοφορίας (καναρίνι/AB, σκιά/κάτοπτρο, διακόπτης κυκλώματος, ρετράς, χρονοδιακόπτες).
- Τυποποιεί πρωτόκολλα (REST/gRPC/WebSocket), κεφαλίδες, κωδικούς.
- Παρατηρεί (κούτσουρα, μετρήσεις, ίχνη, συσχέτιση).
- Μετασχηματίζει και επικυρώνει (JSON/XML, ομαλοποίηση, σχηματική επικύρωση).
Για το iGaming, είναι επίσης γεωγραφική συμμόρφωση (μπλοκάρισμα χώρας/ηλικίας), έξυπνη δρομολόγηση πληρωμών και υπεύθυνες πολιτικές τυχερών παιχνιδιών στην άκρη.
2) Επιλογές δρομολόγησης
Βάσει διαδρομής: '/api/v1/πληρωμές/ → πληρωμές-svc '.
Host-based: "eu. api. παράδειγμα. com → eu-edge «,» psp. παράδειγμα. com → psp-proxy ".
Με κεφαλίδα: «X-Client: partner-A» → partner backend. 'Αποδοχή: εφαρμογή/grpc'.
Γεωγραφική διαδρομή: ανά IP/ASN/χώρα (GDPR/τοπικές απαγορεύσεις, καθυστέρηση).
Σταθμισμένο/Κανάριο: '90%' στην παλιά, '10%' στη νέα έκδοση. γρήγορη ανατροπή.
Δρομολόγηση αιτήσεων: по 'JWT. απαιτήσεις. βαθμίδα/ρόλος/περιφέρεια "(για παράδειγμα, όρια υψηλών κυλίνδρων → πριμοδοτήσεων).
Αποτυχία: περιουσιακό στοιχείο/υποχρέωση από περιουσιακά στοιχεία μεταξύ κέντρου δεδομένων/νέφους και PSP.
3) Ασφάλεια περιμέτρου
TLS παντού: TLS 1. 2 + στο εξωτερικό, mTLS στο εσωτερικό (shlyuz↔servisy).
: επαλήθευση υπογραφής, έλεγχος 'exp/nbf/aud/πεδίο εφαρμογής', περιστροφή JWKS· κρύπτη επικύρωσης με TTL.
HMAC: Υπογραφή φορέα για webhooks/πληρωμές.
Κλειδιά API: για τους πελάτες του συστήματος. συσχετίζονται με ποσοστώσεις/ρόλους.
WAF: βασικοί κανόνες (έγχυση, ανωμαλίες πρωτοκόλλου), μέγεθος σώματος, αρνητικός κατάλογος χωρών.
Προστασία DDoS: περιορισμός σύνδεσης, cookies SYN, όριο ταχύτητας για IP/κλειδί/τελικό σημείο.
Μηδενική εμπιστοσύνη: υποχρεωτικές πολιτικές (SPIFFE/SPIRE, ταυτότητες υπηρεσιών), η αρχή των ελάχιστων δικαιωμάτων.
Προστασία της ιδιωτικής ζωής: επεξεργασία PII σε αρχεία καταγραφής, συγκάλυψη PAN/IBAN, πολιτική αποθήκευσης.
4) Όρια, ποσοστώσεις και προστασία από εκρήξεις
: συμβολικός κουβάς, διαρροή κουβά, σταθερό/συρόμενο παράθυρο.
Σύνορα: ανά IP, ανά κλειδί, ανά χρήστη, ανά διαδρομή.
- Διάρρηξη + παρατεταμένη (π.χ. '50 rps διάρρηξη', '10 rps συντηρείται').
- Retry-Budget and Slow-Loris protection (read timeouts).
- Ποσόστωση ανά ημέρα/μήνα για τους εταίρους.
5) Μετασχηματισμοί και επικύρωση
Ομαλοποίηση κεφαλίδων (trace-id, locale, client-id).
Απεικόνιση αιτήσεων/απαντήσεων.
Επικύρωση συστήματος (OpenAPI/JSON Schema) πριν από το proxying - πρόωρη αποτυχία 4xx.
Συμπίεση/' Αποδοχή-κωδικοποίηση ', αποθήκευση (βλέπε παρακάτω).
6) Αποθήκευση και απόδοση
Edge cache για καταλόγους, δημόσια μεταδεδομένα, ρυθμίσεις (TTL, 'ETag '/' If-No-Match').
Micro-cache 1-5 s για ζεστό GET (μειώνει το φορτίο αιχμής).
Αρνητική μνήμη σύντομη (404/κενή) - προσεκτική.
Αιτήσεις αντιστάθμισης κινδύνου και ανταγωνιστικές αιτήσεις για αντίγραφα στο όριο p95>.
7) Χρονοδιαγράμματα, υποχωρήσεις, ανθεκτικότητα
Timeouts: σύνδεση/ανάγνωση/εγγραφή ξεχωριστά. εύλογα p95-ορόσημα.
Retrai: idempotent methods (GET/PUT) with backoff + jitter? επαναπροσδιορισμός του προϋπολογισμού.
POST idempotency: 'Idempotency-Key' + υπηρεσία/αφαίρεση πύλης.
Διακόπτης κυκλώματος: από σφάλματα/καθυστέρηση. Ημι-ανοικτή δίκη.
Διάφραγμα/ομαδική απομόνωση ανάντη.
8) Έκδοση και συμβατότητα
Μέθοδοι:- URI: '/v1/... "(απλές, αλλά" θορυβώδεις "διαδρομές).
- Κεφαλίδα/Διαπραγμάτευση περιεχομένου: 'Αποδοχή: εφαρμογή/vnd. v2 + json '.
- Δυνατότητα feature-flags/server - για συμβατότητα ήσσονος σημασίας αλλαγών.
Πολιτική: SemVer, παράθυρο υποστήριξης (για παράδειγμα, 'v1' = 12-18 μήνες), χρονοδιάγραμμα αποπροσανατολισμού, συμβατές απαντήσεις για επεκτάσεις (η προσθήκη πεδίων δεν σπάει).
9) Παρατηρησιμότητα και ποιοτικός έλεγχος
Απαιτείται συσχέτιση: «traceparent »/« x-request-id». Το πετάμε κάτω.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, κορεσμός, μετρήσεις γεγονότων επανάληψης/κυκλώματος.
Καταγραφές: δομική JSON. μεταμφίεση PII· επίπεδα ανά κωδικό.
Δειγματοληψία ιχνοστοιχείων: βασικός στόχος 5-10% + για σφάλματα/βραδύτητα.
SLO/καταχωρίσεις: ανά δρομολόγια/πελάτες (ώρα ανόδου, καθυστέρηση, σφάλμα).
10) Διαχείριση κυκλοφορίας ελευθέρωσης
Γαλάζιο-πράσινο διακόπτη DNS/LB.
Κανάριος: μερίδιο βάρους/τμήματα (περιφέρεια, εταίρος, ρόλος).
Σκιά/Καθρέφτης: αντίγραφο της κίνησης στη νέα έκδοση χωρίς απάντηση στον πελάτη.
Kill-switch: σημαία για την ταχεία απενεργοποίηση του προβληματικού ανάντη/χαρακτηριστικού.
11) Έξυπνη δρομολόγηση πληρωμών (iGaming)
Κανόνες επιλογής ΠΥΠ: γεω, νόμισμα, ποσό, ποσοστό κινδύνου, διαθεσιμότητα, προμήθεια.
Failover PSP: αυτόματη μετάβαση στο '5xx/timeout'.
Κανόνας της ίδιας μεθόδου: αποδόσεις/εκροές μέσω της αρχικής μεθόδου - ελέγξτε στο άκρο.
Αναγνωριστικός κωδικός πληρωμής: κλειδί στο «userId + ποσό + νόμισμα + σκοπός».
Διαφάνεια ETA: η πύλη προσθέτει καταστάσεις και αιτίες αποτυχίας (όχι κωδικούς PSP).
12) Διαπεριφερειακές πολιτικές και συμμόρφωση
Γεωγραφικά φίλτρα: λευκοί/μαύροι κατάλογοι χωρών, περιορισμοί ηλικίας, κλίμακες IP.
Στοιχεία κατοίκων: δρομολόγηση προς περιφερειακούς συνεργατικούς σχηματισμούς (GDPR/τοπικοί νόμοι).
Αρχεία καταγραφής και TTL: αποθήκευση ανά περιοχή, αυτόματη ανωνυμοποίηση.
13) Παραδείγματα διαμόρφωσης
13. 1 NGINX (δρομολόγηση + όριο + κεφαλίδες)
nginx http {
map $http_x_request_id $req_id { default $request_id; }
limit_req_zone $binary_remote_addr zone=per_ip:10m rate=20r/s;
server {
listen 443 ssl http2;
server_name api. example. com;
Security add_header Strict-Transport-Security "max-age = 31536000" always;
add_header X-Content-Type-Options nosniff;
Limit on IP location/api/v1/{
limit_req zone=per_ip burst=40 nodelay;
proxy_set_header X-Request-Id $req_id;
proxy_set_header X-Client-Ip $remote_addr;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass http://payments_v1;
}
Canary traffic by header location/api/v2/{
if ($http_x_canary = "1") { proxy_pass http://payments_v2; }
proxy_pass http://payments_v1;
}
}
}
13. 2 Απεσταλμένος (JWT, όριο επιτοκίου, επιστροφές, ακραίες τιμές)
yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager route_config:
name: local_route virtual_hosts:
- name: payments domains: ["api. example. com"]
routes:
- match: { prefix: "/api/v1/payments" }
route:
cluster: payments_v1 timeout: 5s retry_policy:
retry_on: "connect-failure,refused-stream,5xx,retriable-status-codes"
num_retries: 2 per_try_timeout: 2s http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication providers:
main:
issuer: "https://auth. example. com/"
remote_jwks: { http_uri: { uri: "https://auth. example. com/.well-known/jwks. json" } }
forward: true rules:
- match: { prefix: "/api/" }
requires: { provider_name: "main" }
- name: envoy. filters. http. ratelimit
- name: envoy. filters. http. router clusters:
- name: payments_v1 connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN load_assignment: { cluster_name: payments_v1, endpoints: [{ lb_endpoints: [{ endpoint: { address: { socket_address: { address: payments, port_value: 8080 }}}}]}] }
outlier_detection: { consecutive_5xx: 5, interval: 5s, base_ejection_time: 30s }
14) Κατάλογοι ελέγχου
Πριν την απελευθέρωση της οδού
- Σύστημα επαλήθευσης ταυτότητας (JWT/JWKS, κλειδιά, μνήμη TTL).
- Τα timeouts/Retrays/Idempotency είναι ρυθμισμένα.
- Όρια: ανά IP, ανά κλειδί, ανά διαδρομή· ποσοστώσεις εταίρων.
- Επικύρωση του συστήματος αίτησης/απάντησης.
- Αρχεία καταγραφής και ίχνη με «trace-id», μάσκες PII.
- SLO/ειδοποιήσεις και ταμπλό.
- Γεω-κανόνες/συμμόρφωση/ηλικία που ελέγχθηκαν.
Συναλλαγές και πληρωμές
- Έξυπνη διαδρομή PSP: Κανόνες, προτεραιότητες, Feilover.
- Η ίδια μέθοδος ελέγχεται στο άκρο.
- Διαφανείς καταστάσεις και κωδικοί σφάλματος για τον πελάτη (δεν υπάρχει ανεπεξέργαστος κωδικός ΠΥΠ).
Αποδεσμεύσεις
- Canary/AB και kill-switch, σχέδιο rollback.
- Σκιώδης κίνηση προς νέα έκδοση, σύγκριση των μετρήσεων.
- Δοκιμή φορτίου και στόχοι p95.
15) Μετρήσεις ποιότητας (ελάχιστες)
Διαθεσιμότητα/SLO ανά διαδρομή· ποσοστό σφάλματος 5xx/4xx.
Καθυστέρηση p50/p95/p99 (εξωτερική και εσωτερική).
Retribe/timeout/κυκλώματα (στάθμη θορύβου).
Cache hit-ratio και εξοικονόμηση RPS.
Επιτυχίες στα όρια των επιτοκίων και μειωμένες αιτήσεις.
PSP-routing KPI: επιτυχίες, TtW, ποσοστό feilover, προμήθεια.
16) Αντι-μοτίβα
Ένα συνολικό όριο «για τα πάντα».
«Στιγμιαίες» υποχωρήσεις χωρίς νευρικότητα (εντατικοποίηση θύελλας).
Εμπιστοσύνη 'X-Forwarded-For' χωρίς ομαλοποίηση και αξιόπιστη λίστα πληρεξουσίων.
Σκληρά timeouts εκτός από p95 (ψευδώς θετικά).
Σκληροί μετασχηματισμοί που σπάνε τη συμβατότητα.
Αρχεία καταγραφής με PII/PAN/μυστικά.
Συνδυασμός εσωτερικών και εξωτερικών API στον ίδιο τομέα/πολιτική.
17) Πρότυπα και σφάλματα απόκρισης (μικροσκοπία)
429 Πάρα πολλά αιτήματα: "Το όριο του αιτήματος έφτασε. Επαναλάβετε σε N δευτερόλεπτα ή αυξήστε την ποσόστωση στο γραφείο του συντρόφου"
401/403: "Το σύμβολο είναι άκυρο/έληξε. Παρακαλώ υπογράψτε ξανά"
408/504: "Η υπηρεσία ανταποκρίνεται περισσότερο από το αναμενόμενο. Η αίτηση δεν έγινε δεκτή"
Idempotency-conflict: «Ένα αίτημα με αυτό το Idempotency-Key έχει ήδη υποβληθεί σε επεξεργασία (status: success/failure)».
18) Διαδικασία εφαρμογής (στάδια)
1. Μοντέλο διαδρομής: domain/path/region map.
2. Πολιτικές ασφαλείας: TLS/mTLS, WAF, authN/Z, κλειδιά/JWKS.
3. Αξιοπιστία: timeouts, retrays, idempotency, circuit-breaker.
4. Παρατηρησιμότητα: καταγραφές/μετρήσεις/ίχνη, συσχέτιση.
5. Cache/perf: άκρη/μικροκρύπτη, συμπίεση, δεξαμενές σύνδεσης.
6. Δρομολόγηση πληρωμών: κανόνες, δοκιμές, παρακολούθηση.
7. Απελευθερώσεις: καναρίνι/σκιά, θανατηφόρος διακόπτης, σχέδιο ανατροπής.
8. Συμμόρφωση/γεω: φίλτρα χώρας, αποθήκευση δεδομένων, ηλικία.
Τελικό φύλλο εξαπάτησης
Αυστηρή περίμετρος (TLS/mTLS, WAF, όρια) + διαχείριση της κυκλοφορίας (retrai, κύκλωμα, καναρίνι).
Η επικύρωση και οι μετασχηματισμοί στο άκρο του → είναι λιγότερο από ελαττώματα «εντός».
Η παρατηρησιμότητα με μάσκες ιχνοστοιχείων και PII δεν είναι επιλογή, αλλά πρότυπο.
Η έξυπνη δρομολόγηση των πληρωμών και η συμμόρφωση είναι ζωτικής σημασίας για το iGaming.
Πολιτική έκδοσης και στέρησης - προβλεψιμότητα για τους εταίρους.