Serverless & Containers
Cloud Run ile istediğiniz yerde
Ahmet Alp Balkan
Developer Advocate, Google Cloud
Slide 2
Slide 2 text
Hakkımda
● Linux containers ve Kubernetes üzerine 6 yıldır çalışıyorum.
● 3 yıldır Google Cloud'da Kubernetes ve Cloud Run gibi
container teknolojileri üzerine projelerde çalışıyorum.
● Yüz binlerce geliştiricinin günlük olarak kullandığı açık
kaynaklı araçlar geliştiriyorum.
twitter.com/ahmetb
github.com/ahmetb
youtube.com/ahmetb
Slide 3
Slide 3 text
youtube.com/ahmetb
Slide 4
Slide 4 text
“Cloud, elinizdeki bir problemi
başkasının problemi yapmaktır.”
Slide 5
Slide 5 text
Geliştiricinin
yazdığı kod
Kod yayında
Slide 6
Slide 6 text
Geliştiricinin
yazdığı kod
Kod yayında
IT/Ops takımına
gereksinimleri ilet
Datacenter takımı
makineler yaratsın
Makinelere gereken
paketler kurulsun
Kodu build & test et
Ops takımı yeni
versiyonu çalıştırsın
Hata varsa:rollback,
Yoksa: rollout
Kapasite planı yap
Eski versiyona
trafiği zamanla
azaltarak durdur
Slide 7
Slide 7 text
VM'ler uygulamalar
container'lar kod parçaları
SERVERLESS
SUNUCULAR
Slide 8
Slide 8 text
Fiziksel makineler
(Datacenter)
Sanal makineler
(Infrastructure as a Service)
Sanal makine grupları
(Kubernetes cluster'ları)
Container platformları
(Containers as a Service)
Uygulama platformları
(Platform as a Service)
Kod parçacığı
platformları
(Functions as a Service)
SİZ
SİZ CLOUD
SİZ CLOUD
SİZ CLOUD
SİZ CLOUD
SİZ CLOUD
Slide 9
Slide 9 text
Sanal makineler
Infrastructure as a service (IaaS)
● "Bana 4 çekirdekli, 16 GB RAM'li bir Ubuntu makinesi ver"
○ "... bu makine imajını çalıştır"
● "Bu makineyi, disklerini ve network'ünü çalışır halde tut."
● "Networking ve storage ayarlarını ben yapacağım."
● "Makinenin güvenliğini sağlamak benim sorumluluğum."
Deployment birimi
VM/disk imajı
Örnek:
● Google Compute Engine
Slide 10
Slide 10 text
Makine kümeleri
(Kubernetes clusters)
● "Bana şu boyutta 10 tane makine ver, ve üzerine Kubernetes kur"
○ Otomatik olarak makinelerimi yönet ve Kubernetes versiyonumu güncelle.
○ Ben Kubernetes kullanarak uygulamalarımı bu makinelerde çalıştıracağım.
Deployment ünitesi:
container image + Kubernetes konfigürasyonları
Örnek:
● Google Kubernetes Engine (GKE)
Slide 11
Slide 11 text
Container platformları
(Containers as a Service)
● "Bu container'ı çalıştır"
○ Kullanıcı sayısına göre kaç tane instance çalıştıracağına karar ver.
○ Makinaları görmek veya yönetmek istemiyorum.
Sınırlama
sadece server uygulamaları (request/response)
Deployment ünitesi:
container image
Örnek:
● Google Cloud Run
● AWS Fargate 1
● Azure Container Instances 1
1 Bu platformlar tam Cloud Run gibi
request/response tabanlı autoscaling ile
çalışmıyor, fakat batch container’ları (yani HTTP
serversız containlerlar) çalıştırabiliyorlar.
Slide 12
Slide 12 text
Uygulama platformları
(Platform as a Service)
● "Bu uygulamayı benim için çalıştır"
○ Kullanıcı sayısına göre kaç tane instance çalıştıracağına karar ver.
○ Makinaları görmek veya yönetmek istemiyorum.
Sınırlama
sadece desteklenen diller (Node.js, Python, Go, Java…)
Deployment ünitesi:
uygulama kodu
Örnek:
● Google App Engine
● Heroku...
Slide 13
Slide 13 text
Kod parçacığı platformları
(Functions as a Service)
● "Bu fonksiyonu benim için çalıştır"
○ Kullanıcı sayısına göre kaç tane instance çalıştıracağına karar ver.
○ Makinaları görmek veya yönetmek istemiyorum.
Sınırlama
sadece desteklenen dillerde, kodun belli şekilde yazılması gerek
Deployment ünitesi:
fonksiyon/metod kodu
Örnek:
● Google Cloud Functions
● AWS Lambda...
Slide 14
Slide 14 text
VM'ler uygulamalar
container'lar kod parçaları
SERVERLESS
SUNUCULAR
Kısıtlama ve kolaylık
Kontrol ve esneklik
Slide 15
Slide 15 text
VM'ler uygulamalar
container'lar kod parçaları
SERVERLESS
SUNUCULAR
Geliştiriciler sadece
uygulamasıyla uğraşıyor
Geliştiriciler altyapı
ile de uğraşıyor
Slide 16
Slide 16 text
VM'ler uygulamalar
container'lar kod parçaları
SERVERLESS
SUNUCULAR
Birim fiyatı ($/CPU saniye)
daha pahalı
Birim fiyatı ($/CPU-saniye)
daha ucuz
Slide 17
Slide 17 text
VM'ler uygulamalar
container'lar kod parçaları
SERVERLESS
SUNUCULAR
Kullandığın kadar öde
Uygulama boştayken
masraf yapabiliyor
Slide 18
Slide 18 text
Serverless?
Slide 19
Slide 19 text
Otomatik
ölçeklenen
Serverless
Operasyon modeli
Altyapı
yönetimi yok
Kullandığın
kadar öde
Programlama modeli
Veri tutmayan
(stateless)
Hızlı başlayan,
kolay ölçeklenen
Request
Response modeli
Serverless karakteristikleri
1. Altyapı yönetimi ve ops yok
2. Kullandığın kadar öde
3. Talep miktarına göre otomatik ölçekleme
Halk arasında serverless karakteristikleri
1. Functions as a service/Lambda
2. Node.js (ya da sadece bazı diller)
Slide 24
Slide 24 text
Cloud Run
Her dilde serverless uygulamalar
1. Uygulamayı container olarak paketle
2. Google'ın altyapısında sınırsız ölçekle
3. Kullandığın kadar öde (request başına, her 100 ms)
Birkaç saniyede:
container image → fully autoscaling TLS-secured endpoint
Slide 25
Slide 25 text
Demo 1:
Container’lar + Serverless
Slide 26
Slide 26 text
● Sadece HTTP request’e cevap verirken ücretli
○ 100 milisaniyelik dilimlerde ödemeli
○ container arkada boş dururken ücretsiz
● Free tier, her ay:
○ ilk 2 milyon request, ilk 50 CPU core-saati, ilk 100 GB RAM-saati
● Düşük trafikli uygulamalar neredeyse ücretsiz çalışıyor.
Cloud Run ne kadar ucuz?
Slide 27
Slide 27 text
Demo 2:
Herhangi bir dil/binary
serverless olabilir mi?
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
Cloud Run
Container Contract
1. Linux x86_64 binary’ler.
2. $PORT numarası üzerinde dinle.
3. Request’lere cevap ver, background’da işlem yapma.
Slide 30
Slide 30 text
Serverless geliştirici deneyimi
● Makine yönetimi yok
● Güvenlik yönetimi yok
● Network ayarları yok
● İstediğiniz dil, framework ya da binary/DLL
● Talebe göre otomatik ve hızlı scale eden uygulamalar
Slide 31
Slide 31 text
● Bankalar ve finans
● Sağlık kurumları
● Devlet kurumları
● Savunma endüstrisi
● ...
Peki ya bu deneyime kendi datacenter'ınızda sahip olsaydınız?
Herkes cloud ve serverless
kullanabilir mi?
Slide 32
Slide 32 text
1. Açık kaynaklı Cloud Run
implementasyonu
Çözüm
2. Cloud ⇔ On-Premises
Arasındaki taşınmayı kolaylaştır
3. Aynı deneyimi Google Cloud
dışında (on-prem, Azure, AWS)
sağla.
Slide 33
Slide 33 text
Çözüm
Knative Kubernetes GKE
On-Prem
Cloud Run
for Anthos
1. Açık kaynaklı Cloud Run
implementasyonu
2. Cloud ⇔ On-Premises
Arasındaki taşınmayı kolaylaştır
3. Aynı deneyimi Google Cloud
dışında (on-prem, Azure, AWS)
sağla.
Slide 34
Slide 34 text
● Serverless deneyimi, istediğiniz yerde
Google Cloud, on-prem, AWS, Azure…
● Aynı geliştirici/operator araçları
● Aynı uygulama geliştirme paradigması
(container'lar: istediğiniz dil, framework, binary…)
Cloud Run for Anthos
Slide 35
Slide 35 text
Google'ın modern uygulama
altyapısı, istediğiniz yerde.
Google Cloud Other Clouds
On-prem Edge
Slide 36
Slide 36 text
Cluster'lar arası
config'leri yönetmek:
Anthos Con g
Management
Uygulama geliştirme:
Cloud Run for Anthos
Servisler ve cluster'lar arası trafiği yönetmek:
Anthos Service Mesh
Cluster yönetimi:
Anthos GKE
Monitoring ve
operasyonel araçlar
Stackdriver
Anthos'un içinde ne var
Slide 37
Slide 37 text
Demo 3:
Cloud Run for Anthos ile
Kubernetes'te serverless uygulamalar
Slide 38
Slide 38 text
Özetle...
● Her şeyi kendiniz yapmaya çalışmayın.
Serverless çoğu probleminizi çözebilir.
● Serverless sadece bir compute türü değil.
Bir çok alanda serverless çözümler var.
● Cloud Run ile herhangi bir dilde uygulamayı
altyapıyla uğraşmadan çalıştırabilirsiniz.
● Anthos, özel ihtiyaçları olan ve altyapılarını
modernize etmek isteyenler için bir çözüm.
Slide 39
Slide 39 text
Teşekkürler!
● Soru/cevap
● Dokümantasyon:
https://cloud.run
https://knative.dev
https://knative.tips
● Sıkça sorulan sorular:
github.com/ahmetb/cloud-run-faq
Bana ulaşın:
twitter.com/ahmetb
github.com/ahmetb
youtube.com/ahmetb