GH GambleHub

Πρακτικές DevOps και CI/CD

1) Στόχοι και αρχές

Ταχεία και ασφαλής: σύντομοι κύκλοι, μικρές παρτίδες αλλαγών, αυτόματοι έλεγχοι.
Επαναληψιμότητα: υποδομή ως κωδικός (IaC), περιβάλλον = κωδικός + πολιτική.
Παρατηρησιμότητα: μετρήσεις/μονοπάτια/συνδέσεις εκτός πλαισίου, SLO ως σύμβαση.
Συμμόρφωση: έλεγχος, έλεγχος αλλαγής, απομόνωση περιφερειακών δεδομένων.

Ο χρυσός κανόνας: «Πρώτη ποιότητα, μετά ταχύτητα - αλλιώς η ταχύτητα δεν θα εμφανιστεί ποτέ».

2) Κλάδοι και περιβάλλοντα

Σημαίες με βάση τον κορμό + χαρακτηριστικά - βασική επιλογή.

Σύντομες γραμμές χαρακτηριστικών (≤ 2-5 ημέρες), καθημερινή συγχώνευση σε κορμό.
Σημαίες Server-side για στοιχειώδη παράδοση και ασφαλείς ανατροπές.
Git περιβάλλοντα: 'dev' → 'stage' → 'prod' (+ περιφερειακό 'prod-eu', 'prod-latam').
Προώθηση αντικειμένων: μια συλλεγμένη εικόνα προωθείται μέσω των μέσων (αμετάβλητη ετικέτα με πέψη).

Όταν το GitFlow: σπάνιες κυκλοφορίες ρυθμιστικών συνελεύσεων/SDK - τότε απελευθερώνουν υποκαταστήματα + «σκλήρυνση».

3) Πυραμίδα ποιότητας και «κόκκινη γραμμή»

1. Στατική ανάλυση (SAST, χιτώνια, άδειες).
2. Δοκιμές μονάδας/ιδιότητας (δευτερόλεπτα).
3. Δοκιμές συμβάσεων (CDC) για API και γεγονότα (OpenAPI/AsyncAPI, Schema Registry).
4. Ολοκλήρωση (Testcontainers, τοπικοί μεσίτες).
5. Κρίσιμες διαδρομές: εγγραφή KYC κατάθεση έναρξη παιχνιδιού.
6. Δοκιμές φορτίου/χάους για πληρωμές/παρόχους πορτοφολιών/παιχνιδιών.

Η ποιότητα δεν περνά → η κατάθεση είναι δεσμευμένη. Δεν υπάρχουν «χειροκίνητες εξαιρέσεις» χωρίς καταγραφή αλλαγών.

4) Αλυσίδα εφοδιασμού

SBOM για κάθε εικόνα/πακέτο (CycloneDX/SPDX).
Υπογραφή τεχνουργήματος (συνημμένο), «υπογεγραμμένη μόνο» πολιτική αποδοχής.
SCA/Electrabot: τρωτά σημεία και άδειες.
Προέλευση/SLSA: αναπαραγώγιμα συγκροτήματα, κλειστός κατασκευαστικός πράκτορας, βεβαιώσεις.
Μυστικά: στο διαχειριστή (KMS/Εξωτερικά Μυστικά), ούτε ένα μυστικό στο repo/logs.

5) GitOps и IaC

Infra as Code: Terraform/Pulumi for Cloud· Helm/Kustomize για k8s.
Ελεγκτής GitOps (ArgoCD/Flux): δηλωτικά μανιφέστο, επανεξέταση δημοσίων σχέσεων, διαδρομή ελέγχου.
Windows/freezes: εβδομάδες τουρνουά/ώρες αιχμής - αυτόματη παύση των κυκλοφοριών παραγωγής.
Πολιτικές OPA/Kyverno: όχι ': τελευταία', μη ριζική, μόνο ανάγνωση FS, HostPath disable.

6) Προοδευτική υλοποίηση

Κανάριος: 1→5→10→25→50→100% στις μετρήσεις guardrail (p95 latency, 5xx, burn budget).
Μπλε-πράσινο: ταχύς διακόπτης + σχέδιο ανατροπής.
Shadow/Mirroring: αντιγραφή αιτημάτων χωρίς να επηρεάζεται η απάντηση (για νέους προσαρμογείς PSP).
Σημαίες χαρακτηριστικών: συμπερίληψη ανά τμήμα (περιφέρεια/ρόλος/εταίρος/κανάλι) + διακόπτης θανάτωσης.

7) Μετανάστευση βάσεων δεδομένων (επέκταση και σύναψη σύμβασης)

Στάδιο 1: επέκταση του συστήματος (νέες στήλες/δείκτες) - συμβατό με τον παλαιό κωδικό.
Βήμα 2: κωδικός απόρριψης που γράφει και στις δύο εκδόσεις/πεδία.
Στάδιο 3: Μετάβαση δεδομένων εργασίας υποβάθρου, μετρήσεις προόδου.
Βήμα 4: Αλλαγή ανάγνωσης σε νέα πεδία.
Βήμα 5: Η αφαίρεση του παλαιού είναι ξεχωριστή απελευθέρωση.
παρεμπόδιση της απαγόρευσης DDL σε χρόνο αιχμής· για υψηλούς πίνακες - διαδικτυακές μεταναστεύσεις.

8) Παρατηρησιμότητα και SLO

Μετρήσεις: RPS, p50/95/99, 4xx/5xx, κορεσμός (CPU/mem/σειρά αναμονής), DLQ/μεσίτης lag.
Επιχειρηματικές μετρήσεις: TTP (time-to-play), TtW (time-to-wallet), FTD-success, KYC-TtV.
Ίχνη: trace-id από την πύλη στη βάση δεδομένων.
SLO: για παράδειγμα, «Deposit p95 300-500 m », επιτυχία 98. 5% ',' διαθεσιμότητα ≥ 99. 9%`.
Συναγερμοί ρυθμού καύσης + εκλύσεις αυτόματης παύσης κατά τη διάρκεια της υποβάθμισης.

9) Περιστατικά, νεκροψίες, βάρδιες

Runbooks on critical streams (κατάθεση/έξοδος/ACC, live games).
Κλίμακα προτεραιότητας: P1...P4, ιδιοκτήτης, ΕΤΑ, επικοινωνία (πανό, σελίδα κατάστασης, εταίροι).
Αθώα μεταθανάτια με αντικείμενα και ημερομηνίες δράσης.
Εναλλαγές εφημερίας, συναγερμών συνομιλίας, επικαιροποιήσεις κατάστασης κάθε λεπτό N.
Μονοπάτι αποβάθρας: ποιος/πότε/τι αναρτήθηκε (commit, articact, περιβάλλον, σημαία).

10) Ασφάλεια και συμμόρφωση (Devsecops)

SAST/DAST/IAST, μυστική σάρωση σε CI.
mTLS servis↔servis, JWT με μικρό TTL, περιστροφή κλειδιού.
Κάλυψη PII/PAN σε αρχεία καταγραφής/τροχιάς. Αρχεία καταγραφής δραστηριοτήτων του διαχειριστή του WORM.
Γεωγραφικός διαχωρισμός: ομάδες/βάσεις δεδομένων ανά περιφέρεια, δρομολόγηση πύλης.
Διαχείριση αλλαγών: εισιτήριο/έγκριση για ευαίσθητες περιοχές (πορτοφόλι/όρια).

11) Μετρήσεις DORA και FinOps

Συχνότητα εγκατάστασης (καθημερινές μικρές εκλύσεις).
Χρόνος προβολής για αλλαγές (ιδανικό: ρολόι).
MTTR (ανάκτηση: λεπτά/ώρες).
Ποσοστό αποτυχίας μεταβολής (στόχος ≤ 15%).
FinOps: κόστος περιβάλλοντος, αποθήκευση RPS, θερμές δεξαμενές, αυτόματη παύση των εργαζομένων, «κόστος ανά συναλλαγή».

12) Ιδιαιτερότητα iGaming

Κορυφές (τουρνουά/live): κατάψυξη μεγάλων αλλαγών, προθέρμανση κρύπτης/εικόνων, αύξηση ποσοστώσεων.
Πληρωμές/πορτοφόλια: μεμονωμένες ομάδες/κόμβοι, αυξημένες SLO, εγκατάσταση καναρινιών ανά περιοχή, διπλή τηλεμετρία από παρόχους PSP.
CC/συμμόρφωση: χωριστή κάλυψη των εκλύσεων, υποχρεωτικές μεταγενέστερες επικαιροποιήσεις της συμμόρφωσης.
Συνεργάτες/θυγατρικές: ασφαλής έκδοση SDK, API με παράθυρο υποστήριξης και παρακολούθηση παλαιών πελατών.

13) Παράδειγμα CI/CD (YAML, GitHub Actions → ArgoCD)

yaml name: ci-cd on:
push:
branches: [ main ]
paths: [ "services/wallet/" ]
jobs:
build_test_scan:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node uses: actions/setup-node@v4 with: { node-version: 22 }
- run: npm ci --omit=dev working-directory: services/wallet
- run: npm test -- --ci working-directory: services/wallet
- name: Lint & SAST run: npm run lint && npm run sast working-directory: services/wallet
- name: Build image run:
docker build -t registry. local/wallet:${{ github. sha }} -f Dockerfile.
cosign sign --key $COSIGN_KEY registry. local/wallet:${{ github. sha }}
- name: SBOM & Scan run:
syft packages registry. local/wallet:${{ github. sha }} -o cyclonedx-json > sbom. json trivy image --exit-code 1 --severity HIGH,CRITICAL registry. local/wallet:${{ github. sha }}
- name: Push image run: docker push registry. local/wallet:${{ github. sha }}

deploy_stage:
needs: build_test_scan runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Bump Helm values (image tag)
run: yq -i '.image. tag = "${{ github. sha }}"' helm/wallet/values-stage. yaml
- name: Create PR to gitops repo run: gh pr create -R org/gitops -B stage -H stage-bump/wallet-${{ github. sha }} -t "wallet:${{ github. sha }}" -b "Promote to stage"

promote_prod:
if: github. ref == 'refs/heads/main'
needs: deploy_stage runs-on: ubuntu-latest steps:
- name: Gate: SLO/quality checks run:./scripts/gates/check_stage_health. sh # p95, 5xx, e2e ok
- name: Canary 10%
run:./scripts/gitops/canary. sh wallet ${{ github. sha }} 10
- name: Auto-pause on degradation run:./scripts/gates/guardrails. sh./scripts/gitops/rollback. sh wallet
- name: Roll to 100%
run:./scripts/gitops/rollout. sh wallet ${{ github. sha }} 100
💡 Ιδέα: συλλογή και υπογραφή μιας εικόνας, δημοσίευση SBOM, προώθηση μέσω GitOps. prod-rollout - καναρίνι, με guardrails.

14) Κατάλογοι ελέγχου

Πριν από τη συγχώνευση στο κύριο

  • Μονάδα/ΚΕΕΛΠΝΟ/οικολογική ενσωμάτωση.
  • Linters/SAST/άδειες είναι καθαρές.
  • Ενημερωμένα σχήματα OpenAPI/AsyncAPI και μεταναστεύσεις βάσεων δεδομένων.
  • Προσθήκη σημαιών δελτίου, ορισμός οπισθοδρόμων.

Πριν την απελευθέρωση σε prod

  • Υπογεγραμμένη εικόνα, επισυνάπτεται SBOM, κλειστά τα τρωτά σημεία High/CRIT.
  • Δημιουργούνται πίνακες/καταχωρίσεις. Οι πύλες SLO είναι συνδεδεμένες.
  • Σχέδιο ανατροπής, θανατηφόρος διακόπτης, Σκιά (αν είναι απαραίτητο).
  • Επιβεβαιώθηκαν οι περιφερειακοί περιορισμοί και η πολιτική δεδομένων.

Περιστατικά

  • Βρέθηκε και ενημερώθηκε το βιβλίο.
  • Επικοινωνία με τους χρήστες/εταίρους (υπόδειγμα, ΠΩΑ).
  • Μεταθανάτια στις 48 ώρες, αντικείμενα δράσης με ημερομηνίες.

15) Αντι-μοτίβα

«Επανασυναρμολόγηση για κάθε περιβάλλον» (χωρίς προώθηση τεχνουργημάτων).
Χειροκίνητη ανάπτυξη βημάτων χωρίς έλεγχο/επαναληψιμότητα.
Μετανάστευση βάσεων δεδομένων «κατά μέτωπο», ασύμβατες απαντήσεις API.
Μυστικά στις μεταβλητές CI ή στο αποθετήριο.
Καταστροφικά χαρακτηριστικά χωρίς σημαία/ανατροπή.
Έλλειψη SLO/guardrails κατά την απελευθέρωση των καναρινιών.
Αρχεία καταγραφής με PII/PAN, χωρίς κάλυψη.

16) Χρήσιμα υποδείγματα μικροεπισκόπησης

Απελευθέρωση (σε εταίρους):
  • "Αναπτύσσουμε σταδιακά την επικαιροποίηση της ενότητας πληρωμών (10%→100%). Είναι πιθανές βραχυπρόθεσμες καθυστερήσεις εγγραφής έως 2 λεπτά. ΠΩΑ ολοκλήρωσης - ΕΕΤ 9 μ.μ. "
Περιστατικό (πανό στο προϊόν):
  • "Ο πάροχος πληρωμών Χ είναι ασταθής. Η εγγραφή μπορεί να διαρκέσει έως και 15 λεπτά. Εργαζόμαστε πάνω σε μια λύση. Η επόμενη ενημέρωση της κατάστασης είναι σε 30 λεπτά"
Μετατόπιση:
  • "Η ενημέρωση βρίσκεται σε αναμονή λόγω των αυξανόμενων καθυστερήσεων. Επιστρέφουμε την προηγούμενη έκδοση. Αποθηκεύτηκαν δεδομένα και πράξεις"

17) Διαδικασία εφαρμογής (4 σπριντ)

1. Πρότυπα ποιότητας και αγωγός: SAST/Μονάδα/CDC, ενιαία εικόνα, υπογραφές, SBOM.
2. GitOps + περιβάλλοντα: Helm/Kustomize, ArgoCD, προώθηση τεχνουργημάτων, μυστική πολιτική.
3. Προοδευτικές εκλύσεις και πύλες SLO: καναρίνι/σκιά, guardrails, auto-hub.
4. Αξιοπιστία και κόστος: δοκιμές χάους, αυτόματες/θερμές δεξαμενές, ταμπλό FinOps.

Τελικό φύλλο εξαπάτησης

Κορμός + σημαίες + μικρές παρτίδες = ταχύτητα χωρίς άγχος.
Ενιαίο υπογεγραμμένο τεχνούργημα + SBOM = ελεγχόμενη αλυσίδα εφοδιασμού.
GitOps + πολιτικές = αναπαραγωγιμότητα και λογιστικός έλεγχος.
Πύλες Canary/Blue-Green + SLO = ασφαλείς εκλύσεις.
Επέκταση και σύμβαση για DB = μηδέν downtime.
Παρατηρησιμότητα και DORA = διαχειρίσιμες βελτιώσεις.
Περιφερειακή απομόνωση και συμμόρφωση = συμμόρφωση με τους νόμους και την εμπιστοσύνη.

Contact

Επικοινωνήστε μαζί μας

Επικοινωνήστε για οποιαδήποτε βοήθεια ή πληροφορία.Είμαστε πάντα στη διάθεσή σας.

Έναρξη ολοκλήρωσης

Το Email είναι υποχρεωτικό. Telegram ή WhatsApp — προαιρετικά.

Το όνομά σας προαιρετικό
Email προαιρετικό
Θέμα προαιρετικό
Μήνυμα προαιρετικό
Telegram προαιρετικό
@
Αν εισαγάγετε Telegram — θα απαντήσουμε και εκεί.
WhatsApp προαιρετικό
Μορφή: κωδικός χώρας + αριθμός (π.χ. +30XXXXXXXXX).

Πατώντας «Αποστολή» συμφωνείτε με την επεξεργασία δεδομένων.