Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Run ve Kubernetes üzerinde sunucusuz uygulamalar

Cloud Run ve Kubernetes üzerinde sunucusuz uygulamalar

Ahmet Alp Balkan

April 16, 2020
Tweet

More Decks by Ahmet Alp Balkan

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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)
  6. 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.
  7. 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...
  8. 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...
  9. VM'ler uygulamalar container'lar kod parçaları SERVERLESS SUNUCULAR Birim fiyatı ($/CPU

    saniye) daha pahalı Birim fiyatı ($/CPU-saniye) daha ucuz
  10. 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
  11. 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)
  12. 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
  13. • 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?
  14. 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.
  15. 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
  16. • 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?
  17. 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.
  18. Çö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.
  19. • 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
  20. 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
  21. Ö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.
  22. 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