Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-20.02

Microservices, gateway ve intermediaries

Public read gateway’den notes ve index service’e gider. Cache, replica seçimi ve policy kararının nerede verildiğini izle.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Service dönüşü

  1. Gateway’de başla

    Public read gateway’e daha önce ulaşmıştır. Notes-b mesajı hazırdır, fakat notes henüz almamıştır.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  2. Notes request’i aldı

    Public read notes-b’ye ulaşır. Index service bu request hakkında henüz bilgi sahibi değildir.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Public read alındı
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  3. Index query hazır

    Notes, tea category query’sini hazırlar. Query hazırlamak, index’e teslim etmek değildir.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Index query hazır
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  4. Index query’yi aldı

    Index tea query’sini öğrenir. Browser hâlâ sonuç bekler.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Index query hazır
    Index service
    tea query alındı
    Edge cache / policy
    Edge bu dalda yok
  5. Category response hazır

    Index public veriden Tea category sonucunu hazırlar. Notes henüz bu sonucu almamıştır.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Index query hazır
    Index service
    Tea response hazır
    Edge cache / policy
    Edge bu dalda yok
  6. Category notes’a ulaştı

    Category response notes’a ulaşır. Gateway birleşik sonucu henüz bilmiyor.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Tea category alındı
    Index service
    Tea response hazır
    Edge cache / policy
    Edge bu dalda yok
  7. Birleşik sonuç hazır

    Notes title ve category’yi kendi contract’ına göre JSON response’a bağlar. Gateway’e teslim hâlâ ayrı olaydır.

    Browser
    Browser bekliyor
    Gateway / balancer
    notes-b mesajı hazır
    Notes replica
    Birleşik JSON hazır
    Index service
    Tea response hazır
    Edge cache / policy
    Edge bu dalda yok
  8. Sonuç gateway’e ulaştı

    Birleşik response gateway’e ulaşır. Bu sahne burada biter; browser’a teslim edilmiş sayılmaz.

    Browser
    Browser bekliyor
    Gateway / balancer
    Composed result alındı
    Notes replica
    Birleşik JSON hazır
    Index service
    Tea response hazır
    Edge cache / policy
    Edge bu dalda yok

Cache hit

  1. Public read hazır

    Browser public read hazırlar. Edge cache ve policy henüz request’i görmemiştir.

    Browser
    Public read hazır
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge request yok
  2. Request edge’e ulaştı

    Request edge’de alınır. Gateway, notes ve index’e forwarding henüz yapılmamıştır.

    Browser
    Public read hazır
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Public request alındı
  3. Edge cache hit

    Logical age=2, ttl=5 sınırındadır; public cover fresh kabul edilir. Response edge’de hazırlanır, originCalls=0 kalır.

    Browser
    Public read hazır
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Fresh cover hazır
  4. Response browser’a ulaştı

    Hazır response browser’a ulaşır. Diğer actor’lar bu request’i almamıştır; onların state’i değişmez.

    Browser
    Tea cover alındı
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Fresh cover hazır
  5. Cache sonucu sınıflandırıldı

    Browser sonucu kendi adımında sınıflandırır. Cache hit, origin availability veya private authorization kanıtı değildir.

    Browser
    Public cover görünür
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Fresh cover hazır

Replica yok

  1. Gateway request’i biliyor

    Public read gateway’de alınmıştır. Replica seçimi ve forwarding henüz yapılmamıştır.

    Browser
    Browser bekliyor
    Gateway / balancer
    Public read alındı
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  2. Seçilebilir replica yok

    Ready instance listesi boş çıkar. Olmayan bir service teslimi gösterilmez.

    Browser
    Browser bekliyor
    Gateway / balancer
    Eligible set boş
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  3. 503 response hazır

    Gateway unavailable policy’si 503 hazırlar. Notes ve index hiçbir request almamıştır.

    Browser
    Browser bekliyor
    Gateway / balancer
    503 response hazır
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  4. Response browser’a ulaştı

    Hazır response browser’a ulaşır. Diğer actor’lar bu request’i almamıştır; onların state’i değişmez.

    Browser
    503 response alındı
    Gateway / balancer
    503 response hazır
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok
  5. Caller unavailable sonucunu gördü

    Browser response’u unavailable olarak sınıflandırır. Bu sonuç origin’in toparlandığı anlamına gelmez.

    Browser
    Unavailable görünür
    Gateway / balancer
    503 response hazır
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge bu dalda yok

Policy kapalı

  1. Public read hazır

    Browser public read hazırlar. Edge cache ve policy henüz request’i görmemiştir.

    Browser
    Public read hazır
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Edge request yok
  2. Request edge’e ulaştı

    Request edge’de alınır. Gateway, notes ve index’e forwarding henüz yapılmamıştır.

    Browser
    Public read hazır
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    Public request alındı
  3. Maintenance policy block

    Örnekteki maintenance koşulu block üretir. Request origin’e gitmeden 403 hazırlanır.

    Browser
    Public read hazır
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    403 block hazır
  4. Response browser’a ulaştı

    Hazır response browser’a ulaşır. Diğer actor’lar bu request’i almamıştır; onların state’i değişmez.

    Browser
    403 response alındı
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    403 block hazır
  5. Policy reddi sınıflandırıldı

    Browser 403 yanıtını maintenance policy reddi olarak sınıflandırır. Request origin’e gitmemiştir; bu karardan private authorization kontrolünün doğru çalıştığı sonucu çıkmaz.

    Browser
    Policy error görünür
    Gateway / balancer
    Gateway request yok
    Notes replica
    Notes request yok
    Index service
    Index request yok
    Edge cache / policy
    403 block hazır

ROLLER · STATE · VERİ AKIŞI

Service sınırı bir URL’den büyüktür

Microservices, her fonksiyona ayrı HTTP endpoint açmak değildir. Bir service belirli bir iş alanının contract, release ve veri sorumluluğunu taşır. Notes service note representation’ını, index service arama özetini yönetebilir. Bunlar farklı mantıksal sorumluluklardır; aynı makinede mi, farklı process veya bölgelerde mi çalıştıkları bundan anlaşılmaz. Bağımsız deployment bir mimari karardır; route sayısı bunu kanıtlamaz.

Service-to-service communication’da client rolünü başka bir service üstlenebilir. Notes, index verisini isterken o bağlantının client’ıdır; aldığı sonucu kendi response’una eklerken server rolünü korur. Synchronous çağrıda sonucu bekleyen bir bağımlılık oluşur. Messaging kullanıldığında ise teslim, tamamlanma ve retry ayrı sınırlar taşır. Bir service’te commit edilen state diğerinde de aynı anda commit edilmiş sayılmaz.

Normal sahne, gateway’in public read request’i alıp notes-b’ye mesaj hazırladığı noktada başlar. notes-a seçilebilir değildir; notes-b seçilir. Notes index’e gider, index Tea kategorisini üretir, yanıtlar gateway’e döner. Son adımda browser hâlâ bekler. Gateway’in response alması browser’ın da aldığı anlamına gelmez; sahnenin gösterdiği teslim sınırı burada biter.

Gateway, load balancer, CDN ve WAF farklı kararlar verir

API gateway bir public contract’ın arkasındaki service’e routing yapabilir; authentication, quota veya transformation da uygulayabilir. Load balancer seçilen hizmetin instance’ları arasında iş dağıtır. Layer 4 ve HTTP method/path bilgisiyle çalışan Layer 7 aynı görünürlüğe sahip değildir. Reverse proxy dışarıda server gibi görünürken içeride başka bağlantının client’ı olabilir. Her bağlantıda isteği kimin aldığı ve sonucu hangi resource owner’ın ürettiği ayrı izlenir.

CDN, cache kullanım koşulları uygunsa origin’e gitmeden representation döndürebilir. Public asset hit dalında originCalls=0 kalır. Bundan origin’in o anda çalıştığını veya başka business verisinin güncel olduğunu çıkaramayız. Freshness ve invalidation WEB-09.02 ve WEB-19.01’deki ayrımlara bağlıdır. Sahne edge cache ve gateway’i ayrı gösterir; bir ürün bu rolleri birleştirebilir.

WAF, request üzerinde yapılandırılmış policy uygular. Allow, block ve count farklıdır; count gözlemi isteği durdurmuş sayılmaz. Örnekte public read, maintenance policy koşulu nedeniyle 403 alır. Bu bir ürüne ait gerçek rule formatı değildir. WAF allow sonucu da note authorization kararının yerini almaz. Cache hit, origin failure veya policy block’u yalnız son status’a bakarak birbirinden ayıramayabiliriz.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Hazır instance yok

  1. Önce hangi service istendi?

    Public note request’i bir service contract’ına yönlenebilir. Route’un tanınması, o service için şu anda seçilebilir bir instance bulunduğunu söylemez.

    Gateway kararı
    Public note route’u
    Service yolu
    Instance henüz seçilmedi
    Güven varsayımı
    Eligibility pending
  2. Seçilebilir küme boş

    NoOrigin dalında eligible=[] verilmiş. Gateway bu snapshot’ta seçilebilir hiçbir instance görmüyor; listede olmayan bir instance adı üretemez.

    Gateway kararı
    eligible=[]
    Service yolu
    selected=null
    Güven varsayımı
    Seçilebilir hedef yok
  3. Forwarding yapılmadı

    Forwarded=false. Resource’un service içinde başarısız işlendiği söylenmez; bu request service’e yönlendirilecek bir instance bulamamıştır.

    Gateway kararı
    eligible=[]
    Service yolu
    forwarded=false
    Güven varsayımı
    Hata routing sınırında
  4. 503 burada hazırlanır

    NoOrigin.status=503, gateway’in bu dal için ürettiği HTTP sonucudur. Downstream notes veya index’in response verdiğine dair bir alan değildir.

    Gateway kararı
    status=503
    Service yolu
    selected=null / forwarded=false
    Güven varsayımı
    Yalnız gateway sonucu
  5. Health permission değildir

    Başka dalda ready=true olan notes-b seçilebilir. Bu health girdisi kullanıcıya belirli bir note üzerinde permission vermez; availability ile authorization farklı şartlardır.

    Gateway kararı
    noOrigin: eligible=[]
    Service yolu
    Bu dalda forwarding yok
    Güven varsayımı
    Ready != object permission
  6. Hata owner’ını doğru bildir

    Bu dal için bilinen sınır gateway’in instance seçimidir. Private permission, notes işleme sonucu veya browser receipt gözlenmeden bunlar hakkında başarı ya da hata uydurulmaz.

    Gateway kararı
    Gateway hedef seçemedi
    Service yolu
    forwarded=false
    Güven varsayımı
    Diğer sonuçlar gözlenmedi

Bakım kararı

  1. Normal public request’i ayır

    PolicyClosed dalının target’ı /public/notes/tea. Request’in public olması, maintenance policy’nin onu mutlaka geçireceği anlamına gelmez.

    Gateway kararı
    target=/public/notes/tea
    Service yolu
    Forwarding henüz incelenmedi
    Güven varsayımı
    Policy kararı henüz yok
  2. Configured predicate kapalı

    Bu örnekte maintenanceClosed=true açıkça verilmiş. Bu, uygulamanın seçtiği policy girdisidir; request’in saldırı olduğu sonucu değildir.

    Gateway kararı
    maintenanceClosed=true
    Service yolu
    Service işlenmedi
    Güven varsayımı
    Policy tek başına saldırı kanıtı değil
  3. Policy block kararı verdi

    Action=block ve status=403. Karar bu katmanda üretilir; notes object owner’ın authorization kararı olarak yeniden adlandırılmaz.

    Gateway kararı
    action=block / status=403
    Service yolu
    Service işlenmedi
    Güven varsayımı
    Bakım policy’sinin sonucu
  4. Service’e forward edilmedi

    Forwarded=false, notes service’e bu request için iş devredilmediğini gösterir. Policy block ile downstream error aynı olay değildir.

    Gateway kararı
    maintenance block
    Service yolu
    forwarded=false
    Güven varsayımı
    Bu dalda downstream sonuç yok
  5. Count ile block’u karıştırma

    Configured count yalnız gözlem üretirken block request’i durdurabilir. Burada block verilmiştir; ürün etiketi veya bir sayaçtan başka action çıkarılmaz.

    Gateway kararı
    action=block
    Service yolu
    forwarded=false
    Güven varsayımı
    Bu sonucu configured action belirler
  6. Resource yetkisini ayrıca değerlendir

    Policy’nin request’i geçirmesi halinde de service kendi object/action kararına ihtiyaç duyar. Bu public bakım örneği private authorization veya gerçek vendor WAF doğrulaması değildir.

    Gateway kararı
    Bakım policy’si gözlendi
    Service yolu
    Yalnız public route
    Güven varsayımı
    privateAuthorizationVerified=false

VARSAYIM · SINIR · KONTROL

Bir hop’un başarısı bütün akışın başarısı değildir

Gateway’in route bulması, seçilen replica’nın kullanılabilir response vereceğini veya index’in beklenen sonucu üreteceğini kanıtlamaz. Bu varsayım bir dependency hatasında eski ya da eksik veriyi tamamlanmış sonuç gibi sunabilir. Kararı hangi service verdi, caller hangi response’u gerçekten aldı? Normal sahnenin gateway’de bitmesi bu soruyu görünür kılar; browser’a teslim edilmemiş sonucu tamamlandı sayamayız.

Health bilgisi, belirli bir zamanda gözlenen seçilebilirliktir; işlem yetkisi veya sürekli availability değildir. Ready instance da error dönebilir. Seçilebilir instance listesi boşken gateway service’e hiç request göndermeden 503 hazırlar. Seçilmeyen instance için sahte forwarding kaydı üretmemek ve attempted ile received sonuçlarını ayırmak gerekir.

Intermediary kararı domain yetkisi vermez

Edge allow ve gateway route kararı domain authorization değildir. Private bir service’te caller identity, audience, operation ve object ownership güvenilir bağlamda değerlendirilir. Header veya internal görünen service adı tek başına identity kanıtı olmaz. TLS termination noktaları değişiyorsa her bağlantının peer trust ve confidentiality sınırı ayrıca incelenir.

CDN hit, tanımlı cache reuse koşulları altında sonuç üretir. WAF count’u block saymak veya block’un bütün access control sorunlarını çözdüğünü varsaymak kapsamı yanlış gösterir. Sentetik kayıtta source, policyResult, selectedReplica ve originCalls alanlarını birlikte oku. Bu alanlar bir vendor log formatı değil, kararın nerede verildiğini anlatan öğretim kaydıdır.

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

Hareket olmadan bütün senaryoları oku

Gateway’de bitti

  1. Replica seçimini kayıttan oku

    Replica seçimini yerel routing adapter’ı, originCalls ve birleşik category sonucunu aynı örneğin service kaydı üretir; JSON roundtrip yalnız bu alanları yeniden okur. Normal dalda notes-a ready=false ve notes-b ready=true. Seçilen instance notes-b’dir; bu snapshot başka zamanın health bilgisini söylemez.

    Edge / gateway gözlemi
    selected=notes-b
    Service sonucu
    Composed result henüz incelenmedi
    Teslim kanıtı
    Browser’ın aldığı sonuç bilinmiyor
  2. Index sonucu notes için geldi

    IndexResponse.category=Tea, notes service’in aldığı category representation’ıdır. Index sonucunun gelmesi gateway’e veya browser’a bütün response’un ulaştığını söylemez.

    Edge / gateway gözlemi
    selected=notes-b
    Service sonucu
    index category=Tea
    Teslim kanıtı
    Diğer owner’ların aldığı sonuç ayrı
  3. Notes sonucu iki alanı birleştirdi

    Normal response, title=Tea note ile category=Tea alanlarını birlikte taşır. Composition için gerekli index sonucu notes tarafında alınmış olmalıdır.

    Edge / gateway gözlemi
    notes-b source
    Service sonucu
    title=Tea note / category=Tea
    Teslim kanıtı
    Birleştirilmiş sonuç mevcut
  4. Kaydın bitiş noktası gateway

    StopsAt alanı gateway received result der. Bu dalın gözlenen tamamlanması gateway’in service sonucunu almasıdır; browser delivery açıkça gösterilmez.

    Edge / gateway gözlemi
    Gateway sonucu aldı
    Service sonucu
    Birleştirilmiş title / category
    Teslim kanıtı
    Browser’a teslim gösterilmiyor
  5. Gateway receipt’i browser’a taşıma

    Browser’ın yanıtı aldığına dair ayrı bir gözlem olmadan browser status veya UI sonucu belirlenmez. Gateway’in bildiği sonucu başka owner’ın bilgisi gibi yazamazsın.

    Edge / gateway gözlemi
    Gateway sonucu gözlendi
    Service sonucu
    Service composition gözlendi
    Teslim kanıtı
    Browser status / UI sonucu bilinmiyor
  6. Eksik hop için aynı request’i izle

    Teslimi tamamlamak için aynı request’in browser receipt ve consumer sonucunu incelersin. Başka request’in 200 kaydı bu yolun eksik hop’unu tamamlamaz.

    Edge / gateway gözlemi
    Aynı request ile eşleştirme gerekir
    Service sonucu
    Gateway tamamlanması gözlendi
    Teslim kanıtı
    Browser gözlemi hâlâ gerekir

Origin’e gitmedi

  1. Önce cache scope’unu belirle

    Replica seçimini yerel routing adapter’ı, originCalls ve birleşik category sonucunu aynı örneğin service kaydı üretir; JSON roundtrip yalnız bu alanları yeniden okur. CacheHit dalı public-cover-v1 key’i için Tea cover saklar. Bu kayıt public cover representation’ına aittir; kişisel not veya bütün endpoint’ler hakkında sonuç vermez.

    Edge / gateway gözlemi
    key=public-cover-v1
    Service sonucu
    Origin henüz incelenmedi
    Teslim kanıtı
    Kapsam: public cover
  2. Seçilen freshness koşulu geçti

    Stored=10, now=12 ve ttl=5. Bu örnekte entry yaşı 2’dir; seçilen kullanım penceresinin içindedir.

    Edge / gateway gözlemi
    age=2 / ttl=5
    Service sonucu
    Origin henüz incelenmedi
    Teslim kanıtı
    Seçilen cache reuse koşulu geçti
  3. Body’nin owner’ı edge-cache

    Source=edge-cache ve body=Tea cover. Yanıtın geldiği owner bu kayıtta edge’dir; body metninin aynı olması origin çağrısı yapıldığını göstermez.

    Edge / gateway gözlemi
    source=edge-cache / Tea cover
    Service sonucu
    Origin çağrısı ayrıca incelenir
    Teslim kanıtı
    Body equality != source equality
  4. Origin call sayısı sıfır

    OriginCalls=0, bu dalda origin’e gidilmediğinin ayrı gözlemidir. Origin’in şu anda sağlıklı olduğu veya data’nın en yeni revision olduğu bu sayıdan çıkmaz.

    Edge / gateway gözlemi
    Public cover tekrar kullanıldı
    Service sonucu
    originCalls=0
    Teslim kanıtı
    Origin health / son revision bilinmiyor
  5. Cache hit başka owner’ın availability’sini ölçmez

    Cache hit sırasında origin devreye girmediğinden onun canlı durumu ayrıca ölçülmelidir. Buradaki success yalnız seçilen stored representation’ın kullanılmasıyla ilgilidir.

    Edge / gateway gözlemi
    source=edge-cache
    Service sonucu
    originCalls=0
    Teslim kanıtı
    Cache availability != origin availability
  6. Kapsamı response kaynağıyla raporla

    Rapor bu public key’in edge’den döndüğünü, seçilen freshness koşulunu ve sıfır origin call’ı içerir. Private permission veya origin’in güncel business sonucunu eklemez.

    Edge / gateway gözlemi
    public-cover-v1 / edge-cache
    Service sonucu
    originCalls=0
    Teslim kanıtı
    Yalnız gözlenen reuse doğrulandı

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

Kutunun adından önce verdiği kararı yaz

Replica seçimini yerel routing adapter’ı, originCalls ve birleşik category sonucunu aynı örneğin service kaydı üretir; JSON roundtrip yalnız bu alanları yeniden okur. Edge hangi representation’ı yeniden kullanabilir, gateway hangi service contract’ını seçer, load balancer hangi replica’yı uygun bulur, notes hangi veriyi yönetir? Aynı appliance birkaç rol taşısa da kararların sorumluluğu ayrı kalır. Public read için method, target ve service amacı görünür olsun. Request tracing identifier ilişkilendirme içindir; secret veya yetki anahtarı değildir.

Örneğin routing adapter’ı ilk seçilebilir instance’ı alır; bu herhangi bir vendor’ın default algoritması değildir. notes-a=false ve notes-b=true girdisinde b seçilir. Liste boşsa origin’e gidilmez. Index response’u notes’a ulaşmadan birleşik sonuç hazırlanmaz. Gerçek sistemde version değişimleri, timeout budget ve correlation ayrıca tasarlanır.

Gateway routing configuration’ı notes operation’ını belirlenmiş backend contract’ına bağlasın; uygun replica seçilmesi resource permission üretmez. Public read daha sonra protected operation’a dönüşürse service kendi endpoint’inde güncel actor, action ve object kararını vermelidir; gateway veya WAF’ın kabulü bu kararın yerine geçmez. Böyle bir implementation testinde routing kabulü ile service permission reddini ayrı sonuçlar olarak karşılaştır. Bu dersin public-note fixture’ı authentication çalıştırmaz; yalnız origin’e gidilmeyen dalda forwarding olmadığını doğrular.

Cache, policy ve routing sonuçlarını ayrı doğrula

Cache-hit dalında key ve freshness koşulunu; maintenance dalında block kararını; origin-unavailable dalında forwarding yapılmadığını incele. Bunlar aynı hatanın üç görünümü değildir. Sentetik kayıt seçilen replica, origin call sayısı ve category sonucunu ayrı gösterir. Yerel modelin sonucu bir CDN veya WAF ürününün çalıştırıldığı anlamına gelmez.

Gerçek bir sistemde CDN policy, health bilgisinin yaşı, WAF action, gateway routing ve service-side access control için ayrı kanıt gerekir. XML selector, no-eligible kararıyla çelişen forwarding kaydını arar. Event eksikken sıfır match görülmesi kontrolün doğru çalıştığını kanıtlamaz. Sahne de alıcının durumunu ancak mesaj ulaştığında değiştirir.

ŞİMDİ VAKAYA UYGULA

Gateway sonucu, edge cache hit ve origin seçimi hangi owner’ın bilgisidir?

Atlas gateway’i public tea notu için notes service ile index service sonuçlarını birleştirir. Başka bir dalda edge, saklanmış Tea cover yanıtını origin’e gitmeden üretir. Aynı mimaride farklı request’lerin farklı owner’larda bitmesi mümkündür.

Vakadaki response’a hangi component’ler katkıda bulunuyor? UI, service, platform ve dış provider sonuçlarının hangi hop’ta tamamlandığını ayrı göster.

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

ÖRNEĞİ BİRLİKTE OKUYALIM

Service ve edge kararları

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

Ham kaydı ve alan açıklamalarını oku
{
  "roles": {
    "gateway": "service contract routing",
    "balancer": "first eligible instance in supplied list",
    "edge": "public cache/policy roles combined for diagram",
    "notes": "note representation",
    "index": "category representation"
  },
  "normal": {
    "request": {
      "method": "GET",
      "target": "/public/notes/tea"
    },
    "eligible": [
      {
        "id": "notes-a",
        "ready": false
      },
      {
        "id": "notes-b",
        "ready": true
      }
    ],
    "selected": "notes-b",
    "indexRequest": {
      "id": "tea"
    },
    "indexResponse": {
      "category": "Tea"
    },
    "response": {
      "id": "tea",
      "title": "Tea note",
      "category": "Tea"
    },
    "stopsAt": "gateway received result; browser delivery not shown"
  },
  "cacheHit": {
    "key": "public-cover-v1",
    "stored": 10,
    "now": 12,
    "ttl": 5,
    "body": "Tea cover",
    "source": "edge-cache",
    "originCalls": 0
  },
  "noOrigin": {
    "eligible": [],
    "selected": null,
    "forwarded": false,
    "status": 503
  },
  "policyClosed": {
    "ordinaryTarget": "/public/notes/tea",
    "predicate": "supplied maintenanceClosed=true",
    "action": "block",
    "status": 403,
    "forwarded": false
  },
  "limits": {
    "networkExecuted": false,
    "vendorGatewayExecuted": false,
    "realWafExecuted": false,
    "realCdnExecuted": false,
    "privateAuthorizationVerified": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<audit><route eligible=\"0\" forwarded=\"false\"/></audit>",
    "xpath": "count(/audit/route[@eligible='0' and @forwarded='true'])",
    "expected": 0,
    "positiveFixtureXml": "<audit><route eligible=\"0\" forwarded=\"true\"/></audit>",
    "positiveExpected": 1,
    "scope": "Authored inert decision ledger only; these are teaching fields, not product log or API field names.",
    "missingFieldBehavior": "A missing observation is insufficient evidence; zero matches alone proves no runtime control."
  }
}
normal
Notes ile index sonucu birleştirilip gateway’e ulaşır. Browser’ın aldığı sonuç bu kayıtta gösterilmez.
cacheHit/noOrigin
Edge cache reuse ile hazır instance seçimi farklı kararlardır. Cache hit sırasında origin’e hiç gidilmemiş olabilir.
policyClosed/roles
Maintenance policy ile service routing ayrı rollerdir. Bu public örnekte private object permission doğrulanmaz.
selector/limits
Öğretim kaydında seçilebilir instance yokken forwarding yapılması aranır. Gerçek CDN, gateway veya WAF sonucu değildir.

Bu örnek public route, cache ve maintenance policy kararlarını ayırır. Remote hop’lar bilginin aktarımını gösterir; gateway, WAF veya CDN trafiğinin capture’ı değildir. Bir public response, private resource authorization’ın doğru çalıştığını kanıtlamaz.

İki yanlış kanı

Gateway, load balancer, CDN ve WAF aynı kararı verir.

Service routing, instance selection, representation reuse ve request policy ayrı ownership taşır.

Gateway’e response gelmesi veya CDN hit bütün origin akışını tamamlar.

Gateway arrival browser arrival değildir; cache hit origin call veya origin health kanıtı da 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.

Eligible instance listesi boş. Balancer bu request’i nereye forward eder?

  1. Listede olmayan bir instance’ı sağlıklı varsayıp ona gönderir.
  2. Hiçbir yere. forwarded=false ve status=503.
Gerekçeli cevabı oku

Hiçbir yere. forwarded=false ve status=503. — Bu örnekte uygun instance bulunmadığında forwarding durur. Boş liste, yeni bir node’a güvenmek veya fan-out yapmak için izin değildir.

Gateway response aldı. Browser’ın Tea note başlığını öğrendiği kanıtlanmış mıdır?

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

normal.selected
notes-b
normal.response
{"id":"tea","title":"Tea note","category":"Tea"}
normal.stopsAt
gateway received result; browser delivery not shown
  1. Hayır. İz, gateway’in response almasıyla bitiyor.
  2. Evet. Upstream response oluşunca bütün client’lar sonucu bilir.
Gerekçeli cevabı oku

Hayır. İz, gateway’in response almasıyla bitiyor. — Gateway representation’ı almıştır. Bu izde browser’a delivery, body okuma veya view update gözlemi yoktur.

Edge cache hit için originCalls=0; kapalı policy için 403 ve forwarding yok. Bunlar neden private resource authorization kanıtı değildir?

Gerekçeli cevabı oku

Cache hit, örnekteki public cover body’sini origin’e başvurmadan döndürür. MaintenanceClosed ise önceden tanımlanan bakım policy’siyle forwarding’i yerelde durdurur. İki sonuç da private resource için subject/object permission kontrolünü doğrulamaz. Gerçek WAF, CDN, vendor gateway veya network işlemleri bu örnekte çalıştırılmamıştır.

□ Edge cache ve bakım kararını private resource authorization saymadım.

□ Çizilen topology’yi gerçek vendor deployment’ı için kanıt saymadım.

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

Kaynaklar ve kapsam