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. Serverless & Containers
    Cloud Run ile istediğiniz yerde
    Ahmet Alp Balkan
    Developer Advocate, Google Cloud

    View Slide

  2. 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

    View Slide

  3. youtube.com/ahmetb

    View Slide

  4. “Cloud, elinizdeki bir problemi
    başkasının problemi yapmaktır.”

    View Slide

  5. Geliştiricinin
    yazdığı kod
    Kod yayında

    View Slide

  6. 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

    View Slide

  7. VM'ler uygulamalar
    container'lar kod parçaları
    SERVERLESS
    SUNUCULAR

    View Slide

  8. 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

    View Slide

  9. 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

    View Slide

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

    View Slide

  11. 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.

    View Slide

  12. 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...

    View Slide

  13. 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...

    View Slide

  14. VM'ler uygulamalar
    container'lar kod parçaları
    SERVERLESS
    SUNUCULAR
    Kısıtlama ve kolaylık
    Kontrol ve esneklik

    View Slide

  15. 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

    View Slide

  16. VM'ler uygulamalar
    container'lar kod parçaları
    SERVERLESS
    SUNUCULAR
    Birim fiyatı ($/CPU saniye)
    daha pahalı
    Birim fiyatı ($/CPU-saniye)
    daha ucuz

    View Slide

  17. VM'ler uygulamalar
    container'lar kod parçaları
    SERVERLESS
    SUNUCULAR
    Kullandığın kadar öde
    Uygulama boştayken
    masraf yapabiliyor

    View Slide

  18. Serverless?

    View Slide

  19. 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

    View Slide

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

    View Slide

  21. Sadece compute platformları mı
    serverless?

    View Slide

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

    View Slide

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

    View Slide

  24. 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

    View Slide

  25. Demo 1:
    Container’lar + Serverless

    View Slide

  26. ● 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?

    View Slide

  27. Demo 2:
    Herhangi bir dil/binary
    serverless olabilir mi?

    View Slide

  28. View Slide

  29. 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.

    View Slide

  30. 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

    View Slide

  31. ● 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?

    View Slide

  32. 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.

    View Slide

  33. Çö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.

    View Slide

  34. ● 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

    View Slide

  35. Google'ın modern uygulama
    altyapısı, istediğiniz yerde.
    Google Cloud Other Clouds
    On-prem Edge

    View Slide

  36. 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

    View Slide

  37. Demo 3:
    Cloud Run for Anthos ile
    Kubernetes'te serverless uygulamalar

    View Slide

  38. Ö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.

    View Slide

  39. 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

    View Slide