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
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)
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?
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.