Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-21.02

Traffic routing, scaling ve availability

Ad çözümlemeyi, traffic routing’i, readiness’i ve availability hedefini ayrı sorularla incele.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Origin path

  1. Miss sonrası başla

    Verilen DNS resolution ve edge cache miss kararından sonra edge public origin read’i hazırlamıştır. Balancer henüz bu request’i almadı.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    Balancer request unknown
    Application pool
    Pool request unknown
    Public note owner
    Tea note authoritative
  2. Balancer arrival

    Edge prepared request’i balancer’a ulaşır; application pool ve client knowledge önceki state’te kalır.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    Public read received
    Application pool
    Pool request unknown
    Public note owner
    Tea note authoritative
  3. Target seç

    Local literal-ready policy app-a’yı seçer ve target query hazırlar; ready olmak private permission vermemiştir.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    app-a query prepared
    Application pool
    Pool request unknown
    Public note owner
    Tea note authoritative
  4. Application arrival

    Selected app-a request’i pool’da arrival ile bilinir; authoritative note read henüz ayrı local iştir.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    app-a query prepared
    Application pool
    app-a read received
    Public note owner
    Tea note authoritative
  5. Local note read

    Pool own note owner’dan local read ile Tea title alır ve response hazırlarken serving identity’yi app-a diye bağlar.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    app-a query prepared
    Application pool
    Tea response prepared
    Public note owner
    Tea note authoritative
  6. Balancer dönüşü

    Application response balancer’da alınır; edge henüz response’u almış veya viewer’a teslim etmiş değildir.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    app-a result received
    Application pool
    Tea response prepared
    Public note owner
    Tea note authoritative
  7. Edge’e hazır

    Balancer own forwarding işlemiyle edge response hazırladı; bu local step receiver arrival sayılmaz.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin read prepared
    Local balancer
    Edge response prepared
    Application pool
    Tea response prepared
    Public note owner
    Tea note authoritative
  8. Edge arrival

    Prepared result edge’e ulaştı; bounded scene burada biter ve client state waiting kalır.

    Client / resolver projection
    Resolution supplied; waiting
    Edge projection
    Origin result received
    Local balancer
    Edge response prepared
    Application pool
    Tea response prepared
    Public note owner
    Tea note authoritative

One unready

  1. Down snapshot

    Declared readiness snapshot a=false b=true taşır; bu observed fixture gerçek replica kill değildir.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    Public read known
    Application pool
    a=false; b=true supplied
    Public note owner
    Tea note authoritative
  2. Eligible türet

    Local policy observed false a’yı excludes, observed true b’yi eligible yapar; failure domains ölçülmez.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    Eligible b only
    Application pool
    a=false; b=true supplied
    Public note owner
    Tea note authoritative
  3. b’ye hazır

    Balancer public request’i selected b için hazırlar; pool receiver bu request’i henüz almamıştır.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    app-b read prepared
    Application pool
    a=false; b=true supplied
    Public note owner
    Tea note authoritative
  4. b arrival

    Selected b request’i pool’da arrival ile bilinir; caller’a result henüz dönmedi.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    app-b read prepared
    Application pool
    app-b read received
    Public note owner
    Tea note authoritative
  5. b result hazır

    Own public title read’i b response’una bağlanır; result prepared olması measured HA guarantee vermez.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    app-b read prepared
    Application pool
    app-b result prepared
    Public note owner
    Tea note authoritative
  6. b result arrival

    Response balancer’da alındı; surviving b’nin bu finite request’i ürettiği source projection görülür.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    app-b result received
    Application pool
    app-b result prepared
    Public note owner
    Tea note authoritative
  7. Scope sınırı

    Local route result regional failover, parallel capacity veya uptime SLA olarak büyütülmez.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    Limited route result
    Application pool
    app-b result prepared
    Public note owner
    Tea note authoritative

No ready

  1. Read biliniyor

    Public read geldiği varsayılır; a false ve unknown instance missing readiness ayrı knowledge taşır.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    Public read known
    Application pool
    a=false; unknown missing
    Public note owner
    Tea note authoritative
  2. No eligible

    Literal true bulunmadığından eligible-set boş; unknown health confirmed failure diye yeniden adlandırılmaz.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    Eligible set empty
    Application pool
    a=false; unknown missing
    Public note owner
    Tea note authoritative
  3. Unavailable hazır

    Selected unavailable policy 503 hazırlar, forwarded=false korunur ve application request’i uydurulmaz.

    Client / resolver projection
    Client waiting
    Edge projection
    Edge waiting
    Local balancer
    503 response prepared
    Application pool
    a=false; unknown missing
    Public note owner
    Tea note authoritative
  4. Edge arrival

    Balancer’ın prepared unavailable response’u edge’de alınır; pool önceki no-request state’inde kalır.

    Client / resolver projection
    Client waiting
    Edge projection
    503 response received
    Local balancer
    503 response prepared
    Application pool
    a=false; unknown missing
    Public note owner
    Tea note authoritative
  5. Category ayır

    Edge local classification yapar; missing health observation’ın nedenine veya viewer delivery’ye dair yeni bilgi yoktur.

    Client / resolver projection
    Client waiting
    Edge projection
    Unavailable classified
    Local balancer
    503 response prepared
    Application pool
    a=false; unknown missing
    Public note owner
    Tea note authoritative

Desired / ready

  1. Önceki pool

    Başlangıçta desired ve ready sayıları 2’dir. Sayıların eşit olması, instance’ın oluşturulması ile traffic’e hazır olmasının aynı aşama olduğunu göstermez.

    Client / resolver projection
    Public flow selected
    Edge projection
    Edge unchanged
    Local balancer
    Desired2; ready2
    Application pool
    a/b ready
    Public note owner
    Tea note authoritative
  2. Intent büyür

    Supplied control intent desired3 olur; henüz yeni ready instance veya measured capacity eklenmedi.

    Client / resolver projection
    Public flow selected
    Edge projection
    Edge unchanged
    Local balancer
    Desired3; ready2
    Application pool
    a/b ready
    Public note owner
    Tea note authoritative
  3. Create separate

    Own fixture c exists gösterir fakat ready=false; created count3 ready count2 olmaya devam eder.

    Client / resolver projection
    Public flow selected
    Edge projection
    Edge unchanged
    Local balancer
    Desired3; ready2
    Application pool
    a/b ready; c created
    Public note owner
    Tea note authoritative
  4. Traffic gate

    Local routing listesi initializing c’yi seçmez; desired count bir request’e permission veya usable capacity değildir.

    Client / resolver projection
    Public flow selected
    Edge projection
    Edge unchanged
    Local balancer
    Eligible a/b only
    Application pool
    a/b ready; c created
    Public note owner
    Tea note authoritative
  5. Ready supplied

    Declared initialization complete c için ready=true verir; gerçek HPA/probe runtime veya timing ölçülmez.

    Client / resolver projection
    Public flow selected
    Edge projection
    Edge unchanged
    Local balancer
    Eligible a/b only
    Application pool
    a/b/c ready supplied
    Public note owner
    Tea note authoritative
  6. Eligible3 türet

    Ready set artık 3 instance içerir. Bu sonlu sayı, throughput ölçümü, regional redundancy veya HA yüzdesi sağlamaz.

    Client / resolver projection
    Public flow selected
    Edge projection
    Edge unchanged
    Local balancer
    Desired3; ready3
    Application pool
    a/b/c ready supplied
    Public note owner
    Tea note authoritative

ROLLER · STATE · VERİ AKIŞI

DNS cevabı HTTP response değildir

DNS, adı belirli resource record’larla çözmeye yardım eder; browser’ın HTTP body’sini application’a taşıyan bir forwarding hop değildir. Resolver adres veya ilgili record bilgisini aldıktan sonra client seçilen network endpoint’e ayrı bağlantı kurar. DNS answer adı çözen authority ve resolver cache ömrüyle ilgilidir. Hedef application’ın o anda note’u okuyabildiğini veya caller’a izin verdiğini kanıtlamaz. Örnekte public.example.invalid ve edge-demo verilen alias’lardır; DNS query veya kayıt değişikliği yapılmaz.

DNS → CDN → load balancer → application yaygın bir sorumluluk çizgisidir; her web uygulamasının zorunlu kutu sırası değildir. CDN public representation’ı edge’den döndürebilir, cache miss olduğunda backend’e gidebilir. Load balancer target pool içinden instance seçer. Aynı ürün CDN, gateway ve balancer rolleri taşıyabilir; bazı uygulamalarda CDN bulunmayabilir. Her request/response boundary’si ayrı receipt taşır. DNS cache sonucu, CDN cache hit’i veya origin response’u aynı state değildir.

Normal sahne, verilen resolution ve edge cache miss kararından sonra başlar: edge backend request’ini hazırlamıştır, balancer henüz almamıştır. Request balancer’a ulaştığında application-a hazır olduğu için seçilir; application pool Tea note response’u üretir. Response balancer üzerinden edge’e döndüğünde bu sahne biter. Client/resolver hâlâ bekler; son viewer delivery burada gösterilmez. Yerel adapter bu ilişkiyi process içinde değerlendirir, DNS, CDN, TLS veya gerçek network delivery çalıştırmaz.

Scale-out, ready capacity ve high availability

Horizontal scaling daha fazla instance veya replica ile işi paylaşır; vertical scaling mevcut instance’a daha fazla resource ayırır. Desired replica count controller’ın hedefidir; created ve ready instance sayıları bu hedefe aynı anda ulaşmayabilir. Kubernetes HPA, periyodik metrics ve control loop ile scale target’ını güncelleyen somut örnektir. Application startup, dependency initialization ve readiness ayrı ilerler. Buradaki desired 3 ve ready 2 değerleri örnek koşullarıdır; production threshold veya ölçülmüş HPA formula sonucu değildir.

High availability, belirli user flow’un failure durumlarında kullanılabilir kalması hedefidir. Birden fazla replica tek shared database, edge config veya fault domain sorununu kendiliğinden çözmez. Ayakta kalan replica’nın yeterli capacity taşıması, routing’in doğru olması ve gerekli state’i okuyabilmesi gerekir. Örnekte a hazır değilken public read b’ye yönlendirilir. Bu sınırlı routing sonucu regional failover veya uptime SLA ölçümü değildir.

Health check belirli predicate ve observation kapsamına ilişkin bilgi verir. Liveness process recovery kararına, readiness traffic eligibility’ye hizmet edebilir; end-to-end synthetic check ise user flow hakkında ayrı soru sorar. Eksik readiness alanı unknown’dur, ölçülmüş false ile aynı health bilgisi değildir. Policy her iki instance’ı da eligible listeden çıkarabilir, fakat nedenlerini ayrı tutmalıdır. Probe response’u authentication veya note-level authorization kanıtı değildir.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Desired ve ready

  1. Scaler intent’i

    DesiredBefore 2, desiredAfter 3 ve createdAfter 3. Bu sayılar provisioning intent ve existence gösterir; readyDuringInit hâlâ 2, yeni app-c ready false.

    Pool ve scale ledger
    Desired3 / created3 / ready2
    Traffic eligibility gate
    Henüz değerlendirilmedi
    Public read sonucu
    Henüz değerlendirilmedi
  2. Eligible pool’u hesapla

    Traffic seçimi yalnız literal ready true alanına bağlı. App-c yaratılmış olsa da init sırasında eligible değil; target sayısını desired count’tan kopyalamak yanlış karar verir.

    Pool ve scale ledger
    Desired3 / created3 / ready2
    Traffic eligibility gate
    Init eligible app-a/app-b only
    Public read sonucu
    Henüz değerlendirilmedi
  3. Capacity iddiasını sınırlı tut

    ReadyAfter 3 app-c’nin pool’a eklenmesini gösterir, measuredCapacity false. Üç ready instance üç bağımsız failure domain veya SLA başarısı değildir.

    Pool ve scale ledger
    Desired3 / created3 / ready2
    Traffic eligibility gate
    Init eligible app-a/app-b only
    Public read sonucu
    Ready3 / capacity unmeasured
  4. Bir target down

    OneDown app-a ready false, app-b true verir; deterministic policy app-b seçer. Public response servedBy app-b ilişkisinin doğru olması routing sorusunu yanıtlar.

    Pool ve scale ledger
    app-a false / app-b selected
    Traffic eligibility gate
    Init eligible app-a/app-b only
    Public read sonucu
    Ready3 / capacity unmeasured
  5. Authority başka owner’da

    Health veya readiness private operation yetkisi vermez. Bu örnek public note read; privateAuthorizationVerified false ve business policy ilgili application owner’ında kalır.

    Pool ve scale ledger
    app-a false / app-b selected
    Traffic eligibility gate
    Readiness ≠ private authorization
    Public read sonucu
    Ready3 / capacity unmeasured
  6. Teslim sınırını koru

    Normal sonuç edge received response’ta biter. Client delivery ölçülmez; public title’ın edge’e ulaşmasını tamamlanmış viewer akışı veya regional failover diye raporlamıyoruz.

    Pool ve scale ledger
    app-a false / app-b selected
    Traffic eligibility gate
    Readiness ≠ private authorization
    Public read sonucu
    Edge response known / client delivery outside scope

Unknown pool

  1. Readiness eksik

    app-unknown için readinessObserved false ve health unknown. Alan yokluğu verified healthy veya confirmed failure değildir; ikisi de farklı evidence ister.

    Pool ve scale ledger
    Unknown health / missing readiness
    Traffic eligibility gate
    Henüz değerlendirilmedi
    Public read sonucu
    Henüz değerlendirilmedi
  2. Güvenli eligible set

    Selected control literal true ister. app-a false ve app-unknown missing olduğunda eligible boş; unknown’u default true yapmak bu policy’yi bozar.

    Pool ve scale ledger
    Unknown health / missing readiness
    Traffic eligibility gate
    False + missing → eligible empty
    Public read sonucu
    Henüz değerlendirilmedi
  3. Forwarding olmadan 503

    NoReady selected null, forwarded false ve status 503 üretir. Application receipt veya note read bu branch’te yok; unavailable result belirli bir process crash teşhisi değildir.

    Pool ve scale ledger
    Unknown health / missing readiness
    Traffic eligibility gate
    False + missing → eligible empty
    Public read sonucu
    No target / no forwarding / 503
  4. DNS başka mekanizma

    dnsAnswerAlias edge-demo verilmiş isim çözümleme bilgisidir; dnsQueryExecuted false. DNS HTTP forwarder değil; name resolution başarısı ready application bulmayı garanti etmez.

    Pool ve scale ledger
    DNS answer ≠ ready target
    Traffic eligibility gate
    False + missing → eligible empty
    Public read sonucu
    No target / no forwarding / 503
  5. Failure domain sorusu

    App-a/app-b ortak dependency paylaşabilir. Ready count veya tek finite failover branch’i measured availability, capacity ve failure-domain bağımsızlığı iddiası sağlamaz.

    Pool ve scale ledger
    DNS answer ≠ ready target
    Traffic eligibility gate
    Replica count ≠ independent availability
    Public read sonucu
    No target / no forwarding / 503
  6. Unknown reason’ı koru

    Traffic verilmemesi known policy sonucudur, eksik readiness nedeni unknown kalır. Health-check 200 veya process alive bilgisi olsa bile caller authority ayrıca değerlendirilir.

    Pool ve scale ledger
    DNS answer ≠ ready target
    Traffic eligibility gate
    Replica count ≠ independent availability
    Public read sonucu
    No-ready decision known / cause unknown

VARSAYIM · SINIR · KONTROL

Ad çözümlemeyi ve kutu sayısını availability sanmak

DNS lookup başarısı, public request’in bütün zincir boyunca tamamlanacağını söylemez. CDN cache miss, eligible target bulunamaması ve application dependency hatası ayrı boundary’lerdir. Review son status’u doğrudan tek bir origin failure’a bağlamak yerine request’in ve response’un hangi owner’a ulaştığını izler. Sahnenin edge receipt’te bitmesi, henüz client’a ulaşmamış representation’ı tamamlanmış user flow saymayı engeller.

Desired 3 görünmesini kullanılabilir capacity 3 diye okumak provisioning ve startup sırasında yanlış risk hesabı oluşturur. Üç instance’ın aynı shared dependency’ye bağlı olması üç bağımsız availability yolu sağlamaz. Scale hedefi ve traffic eligibility ayrı verilerdir. Örnekte yeni c için ready false iken eligible set yalnız a ve b’dir; ready true verildiğinde c eklenir. Gerçek paralel capacity veya latency ölçülmez.

Eksik observation’ı sağlıklı veya yetkili saymak

Eksik readiness alanına true default vermek bilinmeyen target’a trafik yönlendirebilir. False default verip bunu doğrulanmış failure diye raporlamak da kanıtı yanlış yorumlar. Örnekte yalnız literal true eligible kabul edilir; eksik alanın nedeni unknown kalır. No-ready dalı request’i application’a hiç göndermeden unavailable sonucu üretir. Bu, instance’ların neden unready olduğuna dair diagnostic evidence yerine geçmez.

Health-check 200 veya çalışan process, private operation için caller yetkisi sağlamaz. Authentication, authorization ve business sonucu kendi owner’ında doğrulanır. Örnekte yalnız public note okunur; private object permission ölçülmez. Gerçek health tasarımında observation age ve ortak failure-domain bağımlılıkları da değerlendirilir. Yerel boolean adapter bütün vendor’ların fail-open veya fail-closed davranışını temsil etmez.

3. Blue · Güvenli geliştirme ve savunma

Hareket olmadan bütün senaryoları oku

Pool kontrolleri

  1. Normal ready baseline

    Normal pool app-a ve app-b için true taşıyor; deterministic first-ready app-a seçiyor. Result servedBy app-a ve Tea note; instance relation ayrı kontrol edilir.

    Readiness kayıtları
    app-a selected / servedBy app-a
    Routing review
    Henüz değerlendirilmedi
    Outcome evidence
    Henüz değerlendirilmedi
  2. Down branch karşılaştırması

    App-a false olduğunda app-b true kaldığı için app-b seçilir. Bu olumlu fallback sonucu hangi target’ın servis verdiğini gösterir; gerçek balancer veya cloud failover ölçümü değildir.

    Readiness kayıtları
    app-a selected / servedBy app-a
    Routing review
    app-b selected / servedBy app-b
    Outcome evidence
    Henüz değerlendirilmedi
  3. Unknown ile false ayrımı

    NoReady input false ve missing readiness içerir. İkisi eligible değil, fakat missing reason unknown’dur; confirmed unready gözlemiyle tek kayıtta birleştirilmez.

    Readiness kayıtları
    app-a selected / servedBy app-a
    Routing review
    app-b selected / servedBy app-b
    Outcome evidence
    Both ineligible / evidence reasons distinct
  4. Scale zamanı bağlamı

    Desired, created ve ready count birlikte tutulur. Init aşamasında 2, tamamlandığında 3 ready instance; bu authored aşamalar latency veya autoscaler algorithm benchmark’ı değildir.

    Readiness kayıtları
    Intent/existence/readiness distinct
    Routing review
    app-b selected / servedBy app-b
    Outcome evidence
    Both ineligible / evidence reasons distinct
  5. Outcome recipient’i

    Edge response receipt’i client delivery yerine sayılmaz. User-flow success için correct title, usable status ve gerçek recipient aşaması gerekir; sahnenin son owner’ı scope’u daraltır.

    Readiness kayıtları
    Intent/existence/readiness distinct
    Routing review
    Edge receipt / client completion unmeasured
    Outcome evidence
    Both ineligible / evidence reasons distinct
  6. Finite routing kanıtı

    Input listesi bağımsız filtrelenip selected target ile servedBy karşılaştırılır. Bu düzeyde route kararı bilinir; DNS, Kubernetes, capacity ve SLA sonucu eklenmez.

    Readiness kayıtları
    Intent/existence/readiness distinct
    Routing review
    Edge receipt / client completion unmeasured
    Outcome evidence
    Finite selection verified / availability broader

Health kaydı yok

  1. Target sayısı görünür

    Review yalnız created count 3 değerini görüyor; readiness veya selected target kaydı yok. Üç process’in listelenmesi public request’in hangi instance’a ulaştığını açıklamaz.

    Readiness kayıtları
    Created3 / readiness missing
    Routing review
    Henüz değerlendirilmedi
    Outcome evidence
    Henüz değerlendirilmedi
  2. Beklenen pool’u kopyalama

    Scale fixture readyDuringInit 2 ve readyAfter 3 bekler. Eksik olayın readiness alanına after state’i eklemek, init aşamasını tamamlanmış gibi gösterebilir.

    Readiness kayıtları
    Created3 / readiness missing
    Routing review
    Expected ready set ≠ observation
    Outcome evidence
    Henüz değerlendirilmedi
  3. User-flow belirsizliği

    Current eligible set, selected target ve edge/client delivery UNKNOWN. Created count yalnız existence gözlemidir; healthy, usable capacity veya request success değildir.

    Readiness kayıtları
    Created3 / readiness missing
    Routing review
    Expected ready set ≠ observation
    Outcome evidence
    Eligibility/selection/delivery UNKNOWN
  4. Gerekli route correlation

    Observed readiness zamanı, route purpose, selected instance ve response source gerekli. Pool ve application sonucu aynı public request’e bağlanmalı; private body toplamak gerekmez.

    Readiness kayıtları
    Needed: ready time/target/result recipient
    Routing review
    Expected ready set ≠ observation
    Outcome evidence
    Eligibility/selection/delivery UNKNOWN
  5. Signal health ayrı

    Readiness kaydı gelmemesi target failure veya telemetry failure olabilir. Observation pipeline kapsamı bilinmeden boş health tablosu bütün pool’un down olduğunu kanıtlamaz.

    Readiness kayıtları
    Needed: ready time/target/result recipient
    Routing review
    Target health ≠ observation pipeline health
    Outcome evidence
    Eligibility/selection/delivery UNKNOWN
  6. Yeni kanıtın amacı

    Yeni kayıt routing kararını ve teslim recipient’ini ayrı yanıtlamalı. Bu olayda yalnız created count korunur; SLA veya server permission başarısı için ek sonuç çıkarılmaz.

    Readiness kayıtları
    Needed: ready time/target/result recipient
    Routing review
    Target health ≠ observation pipeline health
    Outcome evidence
    Collect scoped routing/delivery evidence

UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA

Intent, observation ve selected target ayrı alanlar

Scaling defterinde desired hedefini, oluşturulan instance’ları ve ready set’i birlikte fakat ayrı alanlarda tut. Public read’in amacı, seçilen instance ve result source görünür olsun. Aynı artifact ve version’ın bütün ready instance’larda bulunması ayrıca configuration kanıtı ister; instance sayısı bunu göstermez. Bu örnekteki first-ready policy belirlenmiş seçim kuralıdır. Yerel kontrol input listelerini bağımsız filtreleyerek eksik, false ve true readiness alanlarını ayırır.

Normal path’te edge’den balancer’a, oradan application’a request receipt’i ve ters yöndeki response receipt’leri ayrı snapshot’larda izlenir. Receiver’ın bilgisi mesaj ona ulaştığında değişir. Pool’un authoritative note okuması yerel adapter işlemidir. Public-note sonucunu bağımsız JSON parse ederek selected instance ilişkisi ve title kontrol edilir; gerçek DNS, load balancer veya cloud API çağrısı yapılmaz.

Availability iddiasını kullanıcı akışına bağla

Seçilen operation için başarı koşulunu açık yaz: doğru public title, uygun status ve hangi endpoint’e teslim edildiği. Replica-down dalında b’den sonuç alınması ile no-ready dalında hiç forwarding yapılmaması farklı sonuçlardır. HA iddiası ölçülmüş user-flow availability, kalan capacity ve failure-domain kanıtı ister; bu sınırlı case’lerden yüzde veya SLA çıkarılmaz. DNS TTL ya da CDN cache ömrü de her yere anında yayılma garantisi değildir.

Application health ile telemetry pipeline health’ini ayrı değerlendir; sonraki ders bu gözlem sınırını açar. Eksik observation’ı event veya failure yokluğu ile eşitleme. XML selector unknown readiness ile selected=true tutarsızlığını arar. Sıfır eşleşme tek başına doğru routing kanıtı değildir; hangi input ve observation’ın mevcut olduğu bilinmelidir. Sahnedeki tamamlanmış adım gerçek deployment veya permission grant oluşturmaz.

ŞİMDİ VAKAYA UYGULA

Desired replica sayısı traffic eligibility veya availability mi?

Normal public read app-a’dan Tea note alıyor. App-a unready olduğunda app-b seçiliyor; yeni app-c yaratıldığında ready olana kadar pool büyümüyor. Readiness alanı bulunmayan app-unknown sağlıklı sayılmıyor; hiç ready target yoksa forwarding yapılmadan 503 üretiliyor.

Vakadaki data journey’yi environment, dependency ve telemetry context’iyle birlikte değerlendir. Bir operational success etiketi bütün application sonuçlarını kanıtlar mı?

Bağlı vaka dosyasını aç ↗

ÖRNEĞİ BİRLİKTE OKUYALIM

Traffic, readiness ve replica karar defteri

Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.

Ham kaydı ve alan açıklamalarını oku
{
  "topology": {
    "logicalChain": [
      "DNS resolution",
      "CDN role",
      "balancer role",
      "application role"
    ],
    "mandatoryEverySite": false,
    "dnsAnswerAlias": "edge-demo",
    "dnsNameAlias": "public.example.invalid",
    "dnsQueryExecuted": false,
    "dnsIsHttpForwarder": false
  },
  "normal": {
    "edgeDecision": "supplied miss",
    "ready": [
      {
        "id": "app-a",
        "ready": true
      },
      {
        "id": "app-b",
        "ready": true
      }
    ],
    "selected": "app-a",
    "response": {
      "id": "tea",
      "title": "Tea note",
      "servedBy": "app-a"
    },
    "stopsAt": "edge received response; client delivery outside scene"
  },
  "oneDown": {
    "ready": [
      {
        "id": "app-a",
        "ready": false
      },
      {
        "id": "app-b",
        "ready": true
      }
    ],
    "selected": "app-b",
    "response": {
      "id": "tea",
      "title": "Tea note",
      "servedBy": "app-b"
    },
    "regionalFailoverMeasured": false
  },
  "scale": {
    "desiredBefore": 2,
    "desiredAfter": 3,
    "createdAfter": 3,
    "readyBefore": 2,
    "readyDuringInit": 2,
    "readyAfter": 3,
    "newInstance": "app-c",
    "newReadyDuring": false,
    "newReadyAfter": true,
    "hpaAlgorithmExecuted": false,
    "capacityMeasured": false
  },
  "unknownHealth": {
    "instance": "app-unknown",
    "readinessObserved": false,
    "health": "unknown",
    "selected": false,
    "reason": "missing-readiness"
  },
  "noReady": {
    "instances": [
      {
        "id": "app-a",
        "ready": false
      },
      {
        "id": "app-unknown"
      }
    ],
    "eligible": [],
    "selected": null,
    "forwarded": false,
    "status": 503
  },
  "limits": {
    "realDnsExecuted": false,
    "realCdnExecuted": false,
    "realLoadBalancerExecuted": false,
    "kubernetesExecuted": false,
    "realNetworkExecuted": false,
    "slaMeasured": false,
    "privateAuthorizationVerified": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<audit><health observation=\"unknown\" selected=\"false\"/></audit>",
    "xpath": "count(/audit/health[@observation='unknown' and @selected='true'])",
    "expected": 0,
    "positiveFixtureXml": "<audit><health observation=\"unknown\" selected=\"true\"/></audit>",
    "positiveExpected": 1,
    "scope": "Own inert decision observations, not vendor log fields.",
    "missingFieldBehavior": "Missing observation is insufficient evidence; zero matches alone proves no healthy runtime/control."
  }
}
topology/normal
Verilen name resolution ile sınırlı origin path farklı receipt’ler taşır.
scale
Desired, created ve ready sayıları ayrıdır; HPA veya capacity ölçülmez.
unknownHealth/noReady
Eksik observation unknown kalır; yalnız literal true traffic seçimine uygundur.
selector/limits
Yerel health kararı; gerçek DNS, cloud, HA veya private permission ölçümü yok.

Process içinde çalışan sınırlı readiness ve route adapter’larıyla ölçüm yapılır; sahnedeki uzak mesajlar kavramsaldır. DNS query, gerçek CDN/load balancer, cloud deployment, SLA veya capacity ölçümü yapılmaz.

İki yanlış kanı

Başarılı DNS çözümü veya desired 3, üç healthy instance ve tamamlanmış user flow demektir.

Resolution, desired hedefi, ready eligibility ve response delivery ayrı gözlemler gerektirir.

Health event yoksa failure yoktur ve caller yetkilidir.

Eksik observation unknown kalır; health predicate authorization veya tamamlanmış user flow kanıtı değildir.

SIRA SENDE

Bu hikâyeyi sen çöz.

Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.

Desired instance sayısı 2’den 3’e çıktı ve 3 instance oluşturuldu. Yeni app-c henüz ready değil. Uygun instance sayısı hemen 3 olur mu?

  1. Hayır. readyDuringInit=2; app-c beklenir.
  2. Evet. Desired sayının artırılması capacity’nin ölçülmüş artışıdır.
Gerekçeli cevabı oku

Hayır. readyDuringInit=2; app-c beklenir. — Instance’ın var olması request kabul edebildiğini göstermez. Bu örnekte app-c ready olduğunda readyAfter=3 olur.

app-a ready değil; app-unknown için readiness alanı yok. Balancer hangi node’a request gönderir?

Dersten seçilen artifact alanları; öğretim örneği

noReady.instances
[{"id":"app-a","ready":false},{"id":"app-unknown"}]
noReady.eligible
[]
noReady.forwarded
false
noReady.status
503
  1. app-unknown seçilir; hata görünmemesi healthy olduğunu kanıtlar.
  2. Hiçbirine. Eligible liste boş; forwarding yok ve status 503.
Gerekçeli cevabı oku

Hiçbirine. Eligible liste boş; forwarding yok ve status 503. — Eksik readiness kaydı healthy varsayılmıyor. Bilinen false ile bilinmeyen durum farklı olsa da bu policy ikisine de dispatch yapmaz.

Normal akış edge’in response almasıyla bitiyor; oneDown branch’i app-b’yi seçiyor. Neden bu kayıtları client delivery veya regional failover ölçümü sayamayız?

Gerekçeli cevabı oku

Edge response’u almıştır; client delivery scene’in dışındadır. oneDown yalnız verilen instance readiness listesinden app-b’yi seçer; regionalFailoverMeasured=false. DNS burada resolution role’üdür, HTTP forwarder değildir. Bu mantıksal topology bütün siteler için zorunlu değildir; gerçek DNS/CDN/load balancer veya SLA ölçümü yapılmaz.

□ Edge receipt ile client delivery’yi ayırdım.

□ Yerel instance seçimini regional failover veya SLA kanıtı saymadım.

Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç

Kaynaklar ve kapsam