Share
Embed
Cloud Run ve Kubernetes üzerinde sunucusuz uygulamalar
Cloud and Serverless Turkey online meetup'ında sunulmuştur.
Ahmet Alp Balkan
April 16, 2020
Transcript
39 slides
-
Serverless & Containers Cloud Run ile istediğiniz yerde Ahmet Alp
Balkan Developer Advocate, Google Cloud -
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 -
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 -
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 -
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 -
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) -
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. -
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... -
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... -
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 -
VM'ler uygulamalar container'lar kod parçaları SERVERLESS SUNUCULAR Birim fiyatı ($/CPU
saniye) daha pahalı Birim fiyatı ($/CPU-saniye) daha ucuz -
VM'ler uygulamalar container'lar kod parçaları SERVERLESS SUNUCULAR Kullandığın kadar öde
Uygulama boştayken masraf yapabiliyor -
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 platformlar ile altyapıyla uğraşmadan milyonlarca kullanıcıya ekstra emek harcamadan
scale edebilirsiniz. Örnek: Snapchat + App Engine -
Serverless veritabanları Cloud SQL Cloud Firestore Cloud Spanner Cloud PubSub
Cloud Memcached Cloud Bigtable -
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) -
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 -
• 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? -
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. -
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 -
• 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? -
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. -
Çö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. -
• 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 -
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 -
Ö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. -
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