Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-20.03

Containers, Kubernetes, serverless ve edge

Runtime yenilenince memory kaybolabilir, kalıcı note korunabilir. Running ile ready kararını aynı örnekte karşılaştır.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Instance değişimi

  1. Eski instance

    Runtime-a memory’si ve committed note ayrı sorumlulardadır. Replacement henüz başlamamıştır.

    Dispatcher
    Read bekliyor
    Platform durumu
    runtime-a biliniyor
    Yerel runtime
    Cache Tea / count=2
    Kalıcı note
    Tea note committed
  2. Yeni runtime başladı

    Environment yenilenince eski memory devreden çıkar. Yeni runtime boş cache ile başlar; kalıcı veri owner’ı değişmez.

    Dispatcher
    Read bekliyor
    Platform durumu
    runtime-b oluşturuldu
    Yerel runtime
    Cache boş / count=0
    Kalıcı note
    Tea note committed
  3. Running henüz ready değil

    Status Running’dir, fakat ready=false kalır. Trafik alabilecek instance listesine henüz girmez.

    Dispatcher
    Read bekliyor
    Platform durumu
    Running; ready=false
    Yerel runtime
    Cache boş / count=0
    Kalıcı note
    Tea note committed
  4. Trafik gönderilmedi

    Dispatcher hazır olmayan runtime’ı seçmez. Bu örneğin yerel policy’sidir; gerçek kubelet probe sonucu değildir.

    Dispatcher
    Eligible set boş
    Platform durumu
    Running; ready=false
    Yerel runtime
    Cache boş / count=0
    Kalıcı note
    Tea note committed
  5. Runtime ready oldu

    Örnekte initialization tamamlanır ve ready=true olur. Seçilebilir instance listesi yeniden değerlendirilir.

    Dispatcher
    runtime-b seçilebilir
    Platform durumu
    ready=true girdisi
    Yerel runtime
    Cache boş / count=0
    Kalıcı note
    Tea note committed
  6. Kalıcı note okundu

    Runtime yeni connection ile SQLite dosyasını okur. Committed Tea note, memory cache replacement’tan etkilenmemiştir.

    Dispatcher
    runtime-b seçilebilir
    Platform durumu
    ready=true girdisi
    Yerel runtime
    Bağımsız DB read
    Kalıcı note
    Tea note committed
  7. Public response kontrol edildi

    Yerel adapter’ın Tea response’u bağımsız parse edilir. Container veya cluster network sonucu ölçülmez.

    Dispatcher
    Tea response kontrol edildi
    Platform durumu
    ready=true girdisi
    Yerel runtime
    Public cache: Tea
    Kalıcı note
    Tea note committed

Warm ve yeni ortam

  1. Public input hazır

    Sabit public input yerel function’a verilir. Bu örnekte identity veya secret taşınmaz.

    Dispatcher
    Invocation-a girdisi hazır
    Platform durumu
    env-a oluşturuldu
    Yerel runtime
    count=0 / yalnız public veri
    Kalıcı note
    Tea note committed
  2. İlk invocation

    Aynı environment’daki counter ilk çağrıda 1 olur. Bu memory sayacıdır; global kalıcı request sayısı değildir.

    Dispatcher
    Invocation-a girdisi hazır
    Platform durumu
    env-a oluşturuldu
    Yerel runtime
    env-a / count=1
    Kalıcı note
    Tea note committed
  3. Aynı environment yeniden kullanıldı

    İkinci input aynı environment’a verilir. Önceki counter memory’de hâlâ vardır.

    Dispatcher
    Invocation-b girdisi hazır
    Platform durumu
    env-a oluşturuldu
    Yerel runtime
    env-a / count=1
    Kalıcı note
    Tea note committed
  4. Warm reuse sonucu

    Counter 2 olur. Sahne memory reuse ayrımını gösterir; gerçek Lambda invocation değildir.

    Dispatcher
    Invocation-b girdisi hazır
    Platform durumu
    env-a oluşturuldu
    Yerel runtime
    env-a / count=2
    Kalıcı note
    Tea note committed
  5. Yeni environment

    Yeni environment eski memory’yi paylaşmaz. Kalıcı public note ayrı owner’da korunur.

    Dispatcher
    Invocation-b girdisi hazır
    Platform durumu
    env-b oluşturuldu
    Yerel runtime
    env-b / count=0
    Kalıcı note
    Tea note committed
  6. Counter yeniden 1

    Yeni environment’ın ilk invocation’ı 1 üretir. Önceki 2 değeri kalıcı sequence olarak taşınmaz.

    Dispatcher
    Invocation-b girdisi hazır
    Platform durumu
    env-b oluşturuldu
    Yerel runtime
    env-b / count=1
    Kalıcı note
    Tea note committed

Edge dönüşümü

  1. Public response girdisi

    Tea note representation’ı dönüşüm girdisidir. Bu kayıtta coğrafi konum veya network ölçümü yoktur.

    Dispatcher
    Sabit public input
    Platform durumu
    Edge konumu varsayım
    Yerel runtime
    Dönüşüm yapılmadı
    Kalıcı note
    Tea source korundu
  2. Girdi kopyalandı

    Yerel function input object’i kopyalar ve dönüşümü kopyada başlatır. Original source değişmez.

    Dispatcher
    Sabit public input
    Platform durumu
    Edge konumu varsayım
    Yerel runtime
    Input yerel kopyalandı
    Kalıcı note
    Tea source korundu
  3. Metadata eklendi

    Dönüşüm yalnız sabit servedBy etiketi ekler. Title değişmez; etiket signed attestation değildir.

    Dispatcher
    Sabit public input
    Platform durumu
    Edge konumu varsayım
    Yerel runtime
    servedBy=edge-demo
    Kalıcı note
    Tea source korundu
  4. Output kontrol edildi

    JSON roundtrip title ile metadata ilişkisini kontrol eder. Bu, gerçek edge provider’da execution kanıtı değildir.

    Dispatcher
    Output JSON kontrol edildi
    Platform durumu
    Edge konumu varsayım
    Yerel runtime
    servedBy=edge-demo
    Kalıcı note
    Tea source korundu
  5. Kaynak korundu

    Original input aynı kalır. Bu sonuç latency, location veya autoscaling ölçümü sağlamaz.

    Dispatcher
    Source değişmedi
    Platform durumu
    Edge konumu varsayım
    Yerel runtime
    servedBy=edge-demo
    Kalıcı note
    Tea source korundu

ROLLER · STATE · VERİ AKIŞI

Image, çalışan instance ve kalıcı veri ayrı ömür taşır

Container, uygulama process’ini bağımlılıkları ve seçilen isolation mekanizmalarıyla çalıştırır. Image, bu image’dan başlayan instance ve uygulamanın kalıcı verisi ayrı nesnelerdir. Linux container’ları tipik olarak host kernel’i paylaşır; Docker Desktop gibi ortamlarda container host bir VM içinde olabilir. Isolation’ın kapsamı runtime, privilege ve mount kararlarına bağlıdır. Container kullanmak uygulamanın authorization kararını çözmez.

Container’ın writable layer’ındaki dosya ile ayrı yönetilen volume aynı ömrü taşımaz. Docker’da container silindiğinde writable layer’daki veri kalıcı sayılmaz; volume bağımsız yaşayabilir. Process restart, container replacement ve volume deletion farklı olaylardır. Atlas’ta runtime-a’nın memory cache’i kaybolur, runtime-b boş cache ile başlar. Ayrı SQLite dosyasındaki committed Tea note ise yeni connection’dan okunabilir. Bu örnek memory ile kalıcı veri ayrımını gösterir.

Kubernetes route, replica ve lifecycle yönetimine yardımcı olur; uygulamanın business logic veya DB transaction sonucunu kendiliğinden doğrulamaz. Service, değişen Pod setinin önünde bir endpoint sunabilir. Pod’un Running olması HTTP request kabul etmeye hazır olduğu anlamına gelmez. Readiness trafik alıp alamayacağını, liveness ise tanımlı arıza koşullarında restart gerekip gerekmediğini değerlendirmek için kullanılır.

Serverless ve edge’de de verinin sorumlusu vardır

Serverless, server bulunmadığı anlamına gelmez; execution environment’ın sağlanması ve ömrü platform tarafından yönetilir. AWS Lambda’nın default environment örneğinde Init, Invoke ve Shutdown aşamaları vardır. Platform aynı environment’ı tekrar kullanabilir, fakat memory’nin her zaman korunacağına güvenemeyiz. Farklı function ürünlerinin concurrency ve persistence sözleşmeleri farklı olabilir.

Warm environment’da module-level object veya geçici cache önceki invocation’dan kalabilir. Yeni environment aynı nesneyi bulmak zorunda değildir. Atlas’ın invocationCounter alanı aynı environment’da 1, sonra 2 olur; yeni instance’da yeniden 1’e döner. Bu bir memory sayacıdır, bütün sistemdeki request sayısı değildir. Request’e ait identity veya private veriyi paylaşılmış public cache’e taşımamak da ayrı bir sorumluluktur.

Edge computing, bazı işlemleri kullanıcıya daha yakın platform konumlarında yürütebilir. CDN cache hit tek başına kod çalıştığını göstermez. Lambda@Edge, CloudFront request/response akışındaki function triggers için bir ürün örneğidir; başka edge ürünlerinin runtime ve API’si farklı olabilir. Sahnedeki yerel dönüşüm response’a sabit served-by etiketi ekler. Bu etiket gerçek konum, latency kazancı veya automatic scaling ölçümü değildir.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Boş bellek

  1. Eski belleğin kapsamı

    Runtime-a publicCache içinde Tea note, invocations içinde 2 tutuyordu. Bu alanlar o runtime’ın yerel belleğidir; notun kalıcı kaydı oldukları söylenmez.

    Runtime değişimi
    runtime-a: publicCache=Tea note
    State / routing owner
    invocations=2
    Güven sınırı
    Storage henüz incelenmedi
  2. Yeni runtime boş başlar

    Runtime-b için publicCache=null ve invocations=0 verilmiş. Aynı imageAlias kullanılması runtime-a’nın belleğinin yeni process’e taşındığı anlamına gelmez.

    Runtime değişimi
    imageAlias=notes-image-v1
    State / routing owner
    runtime-b: publicCache=null / invocations=0
    Güven sınırı
    Image ile bellek farklıdır
  3. Notun owner’ı ayrı

    PersistentNote id=tea, title=Tea note ve revision=1 taşır. Cache boşluğu bu storage kaydının silindiğini göstermez.

    Runtime değişimi
    newMemory.publicCache=null
    State / routing owner
    persistentNote.revision=1
    Güven sınırı
    Kalıcı kayıt ayrıca gözlendi
  4. Yeniden açılan kayıt

    TitleAfterReopen=Tea note, bu örnekte kaydın tekrar okunabildiğini gösterir. Memory cache’in dolması veya crash durability bu tek okumanın sonucu değildir.

    Runtime değişimi
    titleAfterReopen=Tea note
    State / routing owner
    newMemory.publicCache=null
    Güven sınırı
    Reread ile crash testi farklıdır
  5. Boş cache erişim kararı vermez

    Cache miss, saklanan notun yokluğu ya da kullanıcıya erişim izni anlamına gelmez. Her sonuç için ilgili storage veya authorization owner’ın kararı gerekir.

    Runtime değişimi
    persistentNote.id=tea
    State / routing owner
    cache=null
    Güven sınırı
    Object permission bu kayıtta yok
  6. Ömürleri ayrı raporla

    Runtime belleği sıfırlanmış, public note tekrar okunmuş. Bu iki gözlem birbirini iptal etmez; yeni runtime’ın eski memory state’ini kullandığını da göstermez.

    Runtime değişimi
    runtime-b: invocations=0
    State / routing owner
    reopened title=Tea note
    Güven sınırı
    İki ayrı state owner

Hazır mı?

  1. Running bilgisini oku

    Running=true, yeni runtime’ın çalıştığını belirtir. Request için seçilebilirliği henüz bu tek alandan bilinmez.

    Runtime değişimi
    running=true
    State / routing owner
    Readiness henüz incelenmedi
    Güven sınırı
    Seçim kararı bekliyor
  2. İlk readiness false

    ReadyBefore=false ve eligibleBefore=[] birlikte verilmiş. Bu snapshot’ta runtime-b routing için aday değildir.

    Runtime değişimi
    readyBefore=false
    State / routing owner
    eligibleBefore=[]
    Güven sınırı
    Çalışıyor olması yeterli değil
  3. Boş kümeden instance seçilmez

    EligibleBefore boşken seçilebilir bir runtime adı üretmek kaydı aşar. Running=true bilgisi bu eksik eligibility koşulunu doldurmaz.

    Runtime değişimi
    running=true
    State / routing owner
    eligibleBefore=[]
    Güven sınırı
    Önce readiness koşulu gerekir
  4. Sonraki snapshot değişir

    ReadyAfter=true ve eligibleAfter=[runtime-b]. Bu, önceki snapshot’ta zaten hazır olduğu anlamına gelmez; karar artık farklı bir gözleme dayanır.

    Runtime değişimi
    readyAfter=true
    State / routing owner
    eligibleAfter=[runtime-b]
    Güven sınırı
    Önceki state korunur
  5. Eligibility işlem yetkisi değildir

    Routing’in runtime-b’yi seçebilmesi uygulamanın belirli kullanıcı ve object için izin verdiğini söylemez. Request kabulü ile resource kararı farklı sınırlardır.

    Runtime değişimi
    eligibleAfter=[runtime-b]
    State / routing owner
    persistentNote.id=tea
    Güven sınırı
    Authorization ayrıca gerekir
  6. Platform etiketinden sonuç türetme

    Bu ledger readiness ilişkisinin anlamını öğretir. Kubernetes veya Docker adını görmek, gerçek cluster policy’sinin doğru uygulandığına dair gözlem değildir.

    Runtime değişimi
    running=true / readyAfter=true
    State / routing owner
    eligibleAfter=[runtime-b]
    Güven sınırı
    Öğretim kaydı, cluster gözlemi değil

VARSAYIM · SINIR · KONTROL

Running, ready ve tamamlanmış sonuç farklıdır

Replica’nın process’i başlamış ama ilk veri yüklemesi bitmemiş olabilir. Running’i ready saymak, henüz kullanılamayan instance’a trafik göndermeye yol açar. Örnekte runtime-b vardır ve çalışıyordur, fakat ready=false iken seçilmez. ready=true olduktan sonra public read yapılır. Sahnenin kararı bu hazır olma koşuluna bağlıdır; gerçek kubelet probe sonucu gösterilmez.

Restart, önceki işlemin business effect’i hakkında tek başına bilgi vermez. Memory counter’ın sıfırlanması committed note’un silindiği anlamına gelmez. Process’in ayakta olması da önceki write’ın commit edildiğini kanıtlamaz. Runtime identity, bekleyen iş ve kalıcı veri sonucu ayrı incelenir. WEB-19.S01’deki retry/idempotency ayrımı container veya function kullanınca ortadan kalkmaz.

Geçici memory’yi kalıcı kaynak sanma

Her invocation’ın temiz memory ile başladığını varsaymak, yeniden kullanılan environment’da request verilerini karıştırabilir. Memory cache’i kalıcı kaynak saymak ise replacement sonrası veri kaybı veya replica’lar arasında farklı sonuçlar üretir. Public Tea note ve counter örneğinde cache’in amacı görünürdür; kalıcı note için ayrı data owner’a dönülür.

Edge veya managed platform etiketi response’un güncelliğini ya da authorization’ını kanıtlamaz. served-by etiketi yalnız bu örnekteki dönüşüm noktasını adlandırır; kriptografik attestation değildir. Platformun infrastructure sorumluluğu, uygulamanın input validation ve access control kararlarını üstlenmez. Sonucu hangi verinin ve hangi kararın ürettiğini izlemek gerekir.

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

Hareket olmadan bütün senaryoları oku

Yerel sayaç

  1. Environment kimliğini belirle

    Warm örneğinde environmentAlias=env-a. Sayaçların hangi ortamdan geldiği bilinmeden global sequence sonucuna atlanmaz.

    Runtime gözlemi
    environmentAlias=env-a
    State kapsamı
    Sayaçlar henüz incelenmedi
    Kanıt sınırı
    Kapsam environment’a bağlı
  2. Aynı ortamda 1 ve 2

    ObservedCounters=[1,2], env-a içindeki iki gözlemdir. Bu artış bir execution environment’ın yerel state tutabildiğini gösterir; bütün ortamları saydığını göstermez.

    Runtime gözlemi
    env-a: [1,2]
    State kapsamı
    environment-local state
    Kanıt sınırı
    Dağıtık sıra gözlenmedi
  3. Başka ortam yeniden 1

    NewEnvironmentAlias=env-b ve newCounter=1. Env-a’daki 2 ile env-b’deki 1 aynı counter owner’dan gelmez.

    Runtime gözlemi
    env-a last counter=2
    State kapsamı
    env-b counter=1
    Kanıt sınırı
    Owner değişti
  4. Toplamı kendin üretme

    Bu kayıt toplam invocation sayısını bir durable shared owner’da birleştirmiyor. Yerel 1 ve 2 değerlerinden dağıtık, benzersiz bir sequence üretilemez.

    Runtime gözlemi
    observedCounters=[1,2]
    State kapsamı
    newCounter=1
    Kanıt sınırı
    globalDurableCounter=false
  5. Warm reuse garanti değildir

    Bu örnekte env-a yeniden kullanılmıştır. Sonraki request’in aynı environment’a gideceği veya state’in korunacağı hakkında ayrı bir garanti verilmemiştir.

    Runtime gözlemi
    env-a reuse observed
    State kapsamı
    env-b separate state
    Kanıt sınırı
    Sonraki ortam bilinmiyor
  6. Global ihtiyaç ayrı owner ister

    Benzersiz global sıra gerekiyorsa bunu yerel memory counter’a yüklemek yerine o invariant’ı sağlayan shared state tasarımı incelenir. Burada yalnız iki ortamın sayaçları biliniyor.

    Runtime gözlemi
    globalDurableCounter=false
    State kapsamı
    env-a != env-b
    Kanıt sınırı
    Yerel gözlem kendi sınırında kalır

Etiket ve konum

  1. Public input’u ayır

    Edge input, id=tea ve title=Tea note taşır. İncelenen dönüşüm bu public representation üzerindedir.

    Runtime gözlemi
    input.id=tea / title=Tea note
    State kapsamı
    Output henüz incelenmedi
    Kanıt sınırı
    Public representation
  2. Output etiketi eklendi

    Output aynı id ve title’a servedBy=edge-demo ekler. Yeni alan bir dönüşüm metadata’sıdır; location ölçümünün adı değildir.

    Runtime gözlemi
    output.title=Tea note
    State kapsamı
    servedBy=edge-demo
    Kanıt sınırı
    Metadata gözlendi
  3. Input değişmedi

    InputMutated=false, output’a alan eklenmesinin input object’i yerinde değiştirmediğini kaydeder. Output eşitliği bütün execution path’in eşitliği değildir.

    Runtime gözlemi
    inputMutated=false
    State kapsamı
    output.servedBy=edge-demo
    Kanıt sınırı
    Input ve output ayrı kayıtlar
  4. Konum ölçülmedi

    LocationMeasured=false açıkça verilmiş. Edge-demo metninden coğrafi yakınlık, region veya latency sonucu çıkmaz.

    Runtime gözlemi
    servedBy=edge-demo
    State kapsamı
    locationMeasured=false
    Kanıt sınırı
    Konum sonucu yok
  5. Etiketi attestation sayma

    Bir uygulama alanı provider tarafından imzalanmış execution attestation yerine geçmez. Böyle bir kanıt bu artifact içinde bulunmuyor.

    Runtime gözlemi
    public transform metadata
    State kapsamı
    locationMeasured=false
    Kanıt sınırı
    Attestation gözlenmedi
  6. Dönüşümü doğru kapsamla anlat

    Bilinen sonuç public output’a servedBy eklenmesi ve input’un değişmemesidir. Gerçek edge deployment, placement veya network süresi için başka gözlemler gerekir.

    Runtime gözlemi
    inputMutated=false
    State kapsamı
    servedBy=edge-demo
    Kanıt sınırı
    Yalnız public dönüşüm gözlendi

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

Replacement sırasında ne değişiyor?

Image version, runtime identity, readiness ve kalıcı veri referansını ayrı kaydet. Replacement sırasında yenilenen instance ile korunan veriyi bu şekilde ayırabilirsin. Volume seçimi yalnız bir storage location tercihi değildir; retention, backup, access control ve silme sorumluluğu da belirlenmelidir. SQLite dosyasını düzgün kapatıp yeniden okumak, host crash veya replication dayanıklılığını ölçmez.

Readiness koşulunu uygulamanın kabul edebileceği trafik ve gerekli bağımlılıklarla ilişkilendir. Örnekte tek ready alanı seçilebilir instance listesini belirler. Runtime-b boş memory cache ile başlar; bağımsız SQLite connection title’ı okur ve response hazırlanır. Böylece instance memory’si, kalıcı veri ve sunulan sonuç birbirine karışmadan izlenir.

Request sonucunu platform isminden çıkarma

Function veya edge handler için invocation girdisini, response status/body’yi ve kalıcı effect’in sorumlusunu ayrı tut. Yeniden kullanılan connection ve cache’in hâlâ geçerli olup olmadığını değerlendir. Timeout, concurrency ve disk limitleri seçilen ürünün sözleşmesine bağlıdır. Atlas’ın memory counter artışı bu limitleri veya production performansını ölçmez.

Edge dönüşümü kaynak title’ı korur ve output’a ek metadata koyar; original input object değişmez. Bu yerel function davranışı gerçek AWS execution veya coğrafi placement ölçümü değildir. ServedBy alanının varlığıyla location ölçümünü karıştırma. Runtime memory, persistent data ve public output için hangi owner’ın hangi gözlemi verdiğini ayrı raporla.

ŞİMDİ VAKAYA UYGULA

Bir process’in belleği, persistent note ve routing readiness aynı ömre mi sahiptir?

Atlas public tea notunu bir storage owner’da saklar. Runtime-a değiştiğinde runtime-b boş bellekle başlar; notun varlığı ve request kabulü ayrı ayrı incelenir.

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

Runtime değişimi ve kalıcı not

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

Ham kaydı ve alan açıklamalarını oku
{
  "replacement": {
    "imageAlias": "notes-image-v1",
    "oldInstance": "runtime-a",
    "newInstance": "runtime-b",
    "oldMemory": {
      "publicCache": "Tea note",
      "invocations": 2
    },
    "newMemory": {
      "publicCache": null,
      "invocations": 0
    },
    "running": true,
    "readyBefore": false,
    "eligibleBefore": [],
    "readyAfter": true,
    "eligibleAfter": [
      "runtime-b"
    ],
    "persistentNote": {
      "id": "tea",
      "title": "Tea note",
      "revision": 1
    },
    "titleAfterReopen": "Tea note"
  },
  "warm": {
    "environmentAlias": "env-a",
    "observedCounters": [
      1,
      2
    ],
    "newEnvironmentAlias": "env-b",
    "newCounter": 1,
    "globalDurableCounter": false
  },
  "edge": {
    "input": {
      "id": "tea",
      "title": "Tea note"
    },
    "output": {
      "id": "tea",
      "title": "Tea note",
      "servedBy": "edge-demo"
    },
    "inputMutated": false,
    "locationMeasured": false
  },
  "limits": {
    "containerRuntimeExecuted": false,
    "kubernetesExecuted": false,
    "lambdaExecuted": false,
    "edgeProviderExecuted": false,
    "realNetworkExecuted": false,
    "crashDurabilityTested": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<audit><instance ready=\"false\" selected=\"false\"/></audit>",
    "xpath": "count(/audit/instance[@ready='false' and @selected='true'])",
    "expected": 0,
    "positiveFixtureXml": "<audit><instance ready=\"false\" selected=\"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."
  }
}
replacement
Yeni runtime boş memory cache ile başlar; ayrı storage owner’daki committed not yeniden okunabilir.
warm
Sayaç aynı execution environment’da artar, başka environment’da yeniden başlar. Global durable sequence değildir.
edge
Output’a eklenen servedBy metadata’sı coğrafi location veya signed attestation kanıtı değildir.
selector/limits
Readiness kararı ile routing seçimi incelenir. Bu ledger gerçek container veya Kubernetes çalıştırması değildir.

Actual own Python environment/readiness adapters + SQLite orderly reopen. Docker, Kubernetes, Lambda, edge placement ve crash durability çalıştırılmadı.

İki yanlış kanı

Pod Running veya container started request’e hazır demektir.

Process/phase ile application readiness farklı kararlar; selected traffic eligibility ayrıca türetilir.

Serverless her request’te temiz memory verir, edge her zaman daha hızlıdır.

Environment reuse product-qualified; transient state kalabilir. Edge performance gerçek ölçüm ve dependency placement ister.

SIRA SENDE

Bu hikâyeyi sen çöz.

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

runtime-a değiştirildi. runtime-b çalışıyor, fakat readyBefore=false. Traffic alabilir mi?

  1. Hayır. eligibleBefore boş; readyAfter sonrasında listeye girer.
  2. Evet. Çalışan her container bütün request’leri almalıdır.
Gerekçeli cevabı oku

Hayır. eligibleBefore boş; readyAfter sonrasında listeye girer. — Process’in çalışması, application’ın request kabul etmeye hazır olduğunu göstermez. Instance seçimi readiness kontrolünden ayrıca geçer.

Runtime değiştirildiğinde hangi state sıfırlanır, hangi state ayrı owner’da korunur?

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

replacement.oldMemory
{"publicCache":"Tea note","invocations":2}
replacement.newMemory
{"publicCache":null,"invocations":0}
replacement.persistentNote
{"id":"tea","title":"Tea note","revision":1}
  1. Image alias aynıysa eski heap bütün yeni instance’lara taşınır.
  2. Yeni memory boş ve counter=0; persistent Tea note revision=1 kalır.
Gerekçeli cevabı oku

Yeni memory boş ve counter=0; persistent Tea note revision=1 kalır. — Runtime’a ait heap’in yenilenmesi, ayrı persistent store’daki kaydı kendiliğinden silmez. İki state’in ömrü farklıdır.

Warm environment için counter değerleri 1 ve 2, yeni environment için 1. Neden bunu kalıcı global counter sayamayız?

Gerekçeli cevabı oku

Warm reuse, aynı environment memory’sini bir süre koruyabilir. Yeni environment yeni local counter ile başlar; globalDurableCounter=false. Bu örnekte gerçek container, Kubernetes, Lambda veya edge provider çalıştırılmaz. edge-demo gibi bir servedBy etiketi, gerçek coğrafi konum veya crash durability kanıtı değildir.

□ Warm reuse sonucundan global durability garantisi çıkarmadım.

□ Provider etiketinden gerçek konum veya runtime testi sonucu çıkarmadım.

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

Kaynaklar ve kapsam