Slide 1

Slide 1 text

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

Slide 20

Slide 20 text

Serverless platformlar ile altyapıyla uğraşmadan milyonlarca kullanıcıya ekstra emek harcamadan scale edebilirsiniz. Örnek: Snapchat + App Engine

Slide 21

Slide 21 text

Sadece compute platformları mı serverless?

Slide 22

Slide 22 text

Serverless veritabanları Cloud SQL Cloud Firestore Cloud Spanner Cloud PubSub Cloud Memcached Cloud Bigtable

Slide 23

Slide 23 text

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