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 full-size 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 full-size slide

  3. youtube.com/ahmetb

    View full-size slide

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

    View full-size slide

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

    View full-size 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 full-size slide

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

    View full-size 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 full-size 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 full-size 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 full-size 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 full-size 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 full-size 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 full-size slide

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

    View full-size 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 full-size 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 full-size slide

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

    View full-size slide

  18. 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 full-size slide

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

    View full-size slide

  20. Sadece compute platformları mı
    serverless?

    View full-size slide

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

    View full-size slide

  22. 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 full-size slide

  23. 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 full-size slide

  24. Demo 1:
    Container’lar + Serverless

    View full-size slide

  25. ● 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 full-size slide

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

    View full-size slide

  27. 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 full-size slide

  28. 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 full-size slide

  29. ● 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 full-size slide

  30. 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 full-size slide

  31. Çö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 full-size slide

  32. ● 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 full-size slide

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

    View full-size slide

  34. 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 full-size slide

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

    View full-size slide

  36. Ö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 full-size slide

  37. 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 full-size slide