ეკოსისტემის განახლებები დასრულების გარეშე
(განყოფილება: ეკოსისტემა და ქსელი)
1) zero-downtime მიზანი და პრინციპები
Zero-downtime განახლებები უზრუნველყოფს ქსელისა და პროდუქტის უწყვეტ მუშაობას კოდის, კონფიგურაციის, მონაცემთა სქემების და ოქმების შეცვლისას. ძირითადი პრინციპები:- თავსებადობა წინ/უკან (backward/forward) კონტრაქტების საზღვრებში.
- თანდათანობითი (პროგრესული) ნაცვლად „დიდი გადართვის“ ნაცვლად.
- დაკვირვება და შექცევადობა: მეტრიკა, კვალი, სწრაფი დაბრუნება.
- Idempotence და უსაფრთხო ჭრილობები ქსელისა და გადახდის ნაკადებისთვის.
- უარის თქმის იზოლაცია: ეკლის არქიტექტურა, ცირკის ყუთები, გულშემატკივართა შეზღუდვები.
2) გამოშვების სტრატეგია დასრულების გარეშე
Blue-Green არის ორი იდენტური დასტის (Blue = scream, Green = ახალი). ტრაფიკი ატომურად გადადის დაბალანსების დონეზე, მყისიერი დაბრუნების შესაძლებლობით.
Canary არის ეტაპობრივი ტრაფიკის წილი (1%) 5% -დან, 20% -დან, 50% -დან 100%) SLO კარიბჭეებით.
Rolling - აუზის კვანძოვანი განახლება მზადყოფნის შემოწმებით და ნაერთების დრენაჟით.
Shadow/Traffic Mirroring - ახალი ვერსიის მოთხოვნის მარცვლეული პასუხების გავლენის გარეშე.
Feature Flags არის ბიზნესის გადართვა უცვლელი API- ის თავზე.
Dark Launch - ლოგიკის ფარული ფილიალების ჩართვა ტელემეტრიისა და პროფილისთვის.
რეკომენდაცია: კრიტიკული მომსახურებისთვის - საკანალიზაციო + rolling + feature flags- ის ერთობლიობა; კარიბჭეებისა და API- სთვის - ცისფერი-მწვანე მოკლე გადართვით.
3) ხელშეკრულების თავსებადობა (API/მოვლენები/პროტოკოლი)
API: ვერსია URI/სათაურებში; ველების დამატება - დასაშვებია, მოცილება/შეცვლა - მხოლოდ „სადეპოზიტო ფანჯრის“ საშუალებით.
მოვლენები (ღონისძიება-ბუსი): ველების „მხოლოდ დამატება“; გასაღებები უცვლელია; ახალი ტიპები - როგორც ახალი თემები/ვერსიები.
სქემები (Avro/JSON-Schema/Protobuf): რეესტრის სქემა, თავსებადობა 'BACKWARD' FULL '.
ქსელის პროტოკოლი/P2P: ვერსია handshake და კაპიტალი negotiation (კვანძები აცხადებენ მხარდაჭერილ ვერსიებს/ფიჩებს).
Gateways: გადამყვანები მიგრაციის პერიოდისთვის vN და vN + 1 (გადატანა/ველი) შორის.
დეპრესიის პოლიტიკა (მაგალითი): გამოცხადება - 90 დღის გაფრთხილება - „დეპრესიული“ დროშა - ველის/ენდოინის მოცილება.
4) მონაცემთა მიგრაცია შეჩერების გარეშე
1. Expand - დაამატეთ ახალი სტრუქტურები/ინდექსები/სვეტები (nullable/c ნაგულისხმევი), ორმაგი ჩაწერა (ორმაგი ჩაწერა) ძველ და ახალ ფორმატში.
2. Migrate - ფონის მიგრაცია, backfill, თანმიმდევრულობა; კითხვა ადაპტერის საშუალებით, რომელიც მხარს უჭერს ორივე სქემას.
3. Contract - გამორთეთ კითხვა/ჩაწერა ძველ სქემაში, ამოიღეთ ტექნიკური ვალი „დეპრესიის ფანჯრის“ დასრულების შემდეგ.
sql
-- Expand
ALTER TABLE payouts ADD COLUMN payout_ref TEXT NULL;
CREATE INDEX CONCURRENTLY ix_payouts_ref ON payouts(payout_ref);
-- Migrate (batch + idempotent)
UPDATE payouts SET payout_ref = concat('ref_', id) WHERE payout_ref IS NULL;
-- Contract (after compatibility window)
ALTER TABLE payouts ALTER COLUMN payout_ref SET NOT NULL;
მოვლენების გარიგება: გამოიყენეთ Outbox (გარიგება ღონისძიების ჩაწერით) + CDC გარანტირებული მიწოდებისთვის.
5) ხანგრძლივი ნაერთები და დრენაჟი
Graceful shutdown: SIGTERM: შეაჩეროს ახალი მოთხოვნების მიღება - ჩამოაყალიბოს 'readiness = fail' - ს, დაელოდეთ WebSocket/HTTP2/QUIC ნაკადების დრენაჟს.
დაბალანსებაზე დაკავშირება: 'deregister _ delay' 30-120 წმ, sticky სესიები - ნიშნების საშუალებით და არა IP.
Back-pressure: შეზღუდეთ ახალი აფსიდები p99 _ ლატენტობის ზრდით.
6) SDK და მომხმარებლების ვერსიები
SemVer for SDK; LTS ფილიალი გაფართოებული დამხმარე ფანჯრით (მაგალითად, 12 თვე).
პოლიტიკა: „მინიმუმ ორი აქტიური უმცირესობის ვერსია“; ტელემეტრია მომხმარებლებისთვის ვერსიების მიხედვით; ავტომატური გაფრთხილებები აგრეგაციის აუცილებლობის შესახებ.
კრიტიკული ცვლილებები (უსაფრთხოება): იძულებითი დროშა, რომ ძველი ვერსიები გამორთულიყო კარიბჭის საშუალებით, ვადის გასვლის შემდეგ.
7) პროტოკოლების და ქსელის კვანძების განახლებები
რბილი ფონი: წესების გაფართოება ძველი კვანძების დარღვევის გარეშე.
Hard-fork: წინასწარ გამოცხადებული ფანჯარა, ორმაგი მისაბმელი, „კანარის მიმღები“, კონფლიქტების დაცვა „reorg/rollback“ - ისგან, გააქტიურების დრო-დრო.
ჯვარედინი ჯაჭვის გაფართოება: მთავრობის ხიდები გადასცემს გააქტიურების სიგნალებს; რასინქრონიზაციის შემთხვევაში - ადგილობრივი circuit-breaker.
8) კონფიგურაცია და საიდუმლოებები, როგორც მონაცემები
ცენტრალიზებული საკომისიო მომსახურება ვერსიით, ციფრული ხელმოწერებით და გამოტოვებით.
საიდუმლოებები rotation გარეშე: ორმაგი გასაღებები (ძველი/ახალი), მონაცვლეობით ჩართვა; ნულოვანი ბილიკები KMS/PKI- სთვის.
Feature-flags ცალკე სვეტში, ჩანართების/გამორთვის აუდიტი.
9) Pipeline გამოშვება და ავტომატური „კარიბჭეები“
Стадии: build → unit → security scan → e2e/stage → shadow → canary → 100%.
კარიბჭის გაჩერებები:- Error-budget burn-rate, p95/p99 latence, error-rate, მოვლენების/გადახდების success-rate- ის შემცირება, ხაზების მკვდარი ლეტერის ზრდა.
- მანქანის დაბრუნება SLO- ს დარღვევით ნებისმიერ ეტაპზე.
yaml release:
strategy: canary steps:
- name: shadow traffic_mirror: 5%
gates: [no_data_loss, no_pii_leak]
- name: canary_1 traffic: 1%
gates: [error_rate<0. 2%, p99<400ms]
- name: canary_2 traffic: 10%
gates: [slo_ok_1h, zero_deadletters]
- name: rollout traffic: 100%
gates: [stability_6h]
- name: bake duration: 24h action: finalize_or_rollback
10) დაკვირვება და SLO გამოშვებისთვის
საკვანძო SLI:- p95/p99 latence endpoints; error-rate (5xx + ფატალური 4xx); მოვლენების success-rate; ჭიდაობის წილი; რიგის ფეხები; „relay“ წილი P2P- ში; მომხმარებელთა წილი ვერსიით.
- p99 API - 400 ms; error-rate ≤ 0. 2%; success-rate მოვლენები 99. 5%; ხაზის ლაგი 2 წმ; MTTR გამოტოვება 15 წუთზე.
- გამოშვების დაშბორდები: შედარება „ადრე/შემდეგ“, კანარის გრაფიკები, დამოკიდებულების რუკა (სერვისის რუკა), ალერტები burn-rate 1.th/6h.
11) გამოტოვება და „kill-switch“
ავტო გამოტოვება: შეინახეთ ბოლო „კარგი“ ნივთები და კონფიგურაცია; „1 ღილაკი“ rollback დაბალანსებაზე (ცისფერი - მწვანე).
Partial rollback: ficeflag გამორთავს ახალ ლოგიკას ბინარის შენარჩუნებისას.
Data rollback: მხოლოდ „read-paths“; „write-paths“ - ისთვის - დაცული მიგრაცია (არასოდეს ამოიღოთ ძველი სვეტები ფანჯრის დასრულებამდე).
Kill-switch: ცენტრალიზებული დროშა არასტაბილური ქვესისტემის გათიშვის მიზნით.
12) ტესტირება სისუსტის გარეშე
საკომისიო ტესტები მომხმარებელთა სტაბილურობის საწინააღმდეგოდ (consumer-driven).
თავსებადობის ტესტები (schema-compat).
Chaos ტესტები staging: უკმარისობა% კვანძები/რეგიონები, DHT/TURN/KMS/DNS დეგრადაცია, „ქარიშხლის ქარიშხალი“.
დატვირთვის/რემარკეტის ტესტები: კანარის რეგიონები და ცხელი მარშრუტები.
13) კომუნიკაციისა და შესაბამისობის წესები
გამოშვება: რა იცვლება, გავლენა, ფანჯრები/დეპრესიის ვადები, მოქმედებები პარტნიორებისთვის.
SLA პასუხები ინციდენტებზე: MTTA - 5 წუთი, სტატუსის პირველი განახლება 15 წუთი, პოსტ-mortem - 72 წუთი;
კვალიფიკაციის აუდიტი: ყველა კონფისკაციის ცვლილების და განაცხადის/პროპაგანდის, არტეფაქტების ხელმოწერების დაკავშირება.
14) სპეციალური შემთხვევები
გადახდის/ფინანსური ნაკადები: მკაცრი idempotence, idempotence-key, outbox + CDC, მიგრაციის „განუყოფელი“ მხოლოდ.
WebSocket/strimes: პროტოკოლის ვერსია handshake- ში, შეჯამების ჩანაწერი (resume tokens).
ქეში/edge: 'stale-while-revalidate', ქეში ორმაგი ვერსია, TTL ჰიგიენა გამოშვების დროს.
მობილური მომხმარებლები: ეტაპობრივი rollout სტენდებში, იძულებითი განახლება უსაფრთხოების საკითხებზე.
15) zero-downtime ჩეკის სია
1. გაფორმებულია ხელშეკრულების თავსებადობა და სქემის რეესტრი.
2. Expand - Migrate - Contract აღწერილია და ავტომატიზირებულია.
3. Balance/Ingress მხარს უჭერს ცისფერ-მწვანე და ნაერთების დრენაჟს.
4. Canary pline ერთად SLO კარიბჭეები და ავტო-გამოტოვება.
5. Feature-flags და kill-switch ხელმისაწვდომია 24/7.
6. Outbox + CDC და idempotence შედის ყველა write ბილიკისთვის.
7. Dashbords „გამოშვება-ჯანმრთელობა“ და burn-rate ალერტები აქტიურია.
8. კომუნიკაციები და სადეპოზიტო პოლიტიკა პარტნიორებმა წინასწარ გამოაცხადეს.
9. ყოველკვირეული გამოტოვების რეპეტიცია; კვარტალური ქაოსის დღე.
16) გლოსარიუმი
Progressive delivery არის რისკის კონტროლის მქონე ფირების ეტაპობრივი გამოშვება.
Schema registry - თავსებადობის პოლიტიკოსებთან სქემების ვერსიების საცავი.
Outbox/CDC არის გარიგების ღონისძიებების გარანტირებული გამოქვეყნების შაბლონი.
Blue-Green არის პარალელური სათვალეები ატომური ტრაფიკის გადართვით.
კანარი არის ახალი ვერსიით ტრეფიკის წილის თანდათანობითი ზრდა.
Graceful shutdown/draining არის აქტიური ნაერთების სწორი დასრულება.
შედეგი: ნულოვანი დაბრკოლება არ არის ერთი ხრიკი, არამედ სისტემა: კონტრაქტები, სქემების თავსებადობა, ეტაპობრივი გამოშვების სტრატეგიები, დაკვირვება, უსაფრთხო მიგრაცია და გარანტირებული დაბრუნება. ამ ჩარჩოს შემდეგ, ეკოსისტემა განახლდება სწრაფად, პროგნოზირებულად და ტკივილის გარეშე მომხმარებლებისა და პარტნიორებისთვის.