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.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Instance değişimi
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- İ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
- 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
- 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
- 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
- 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ü
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Ö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ı?
- 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
- İ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
- 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
- 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
- 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
- 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ç
- 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ı
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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?
- Hayır. eligibleBefore boş; readyAfter sonrasında listeye girer.
- 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}
- Image alias aynıysa eski heap bütün yeni instance’lara taşınır.
- 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
- Docker — What is a container?Explanation · Containers versus virtual machines (VMs)
- Docker — StorageContainer layer basics · Volume mounts · Bind mounts
- Kubernetes — ServiceServices in Kubernetes · Service type · Services without selectors
- Kubernetes — Pod LifecyclePod lifetime · Pod phase · Readiness probe · Liveness probe
- AWS Lambda — Execution environment lifecycleLambda execution environment lifecycle · Shutdown phase · Cold starts and latency
- Amazon CloudFront — Customize at the edge with Lambda@EdgeCustomize at the edge with Lambda@Edge
- AWS — Shared Responsibility ModelAWS responsibility “Security of the Cloud” · Customer responsibility “Security in the Cloud” · Shared Controls
- SQLite — Transaction2. Transactions · 2.3. Implicit versus explicit transactions
- SQLite — IsolationIsolation Between Database Connections