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

node.js ile serverless mimaride geliştirme yapmak

Eser Ozvataf
November 18, 2017

node.js ile serverless mimaride geliştirme yapmak

Eser Ozvataf

November 18, 2017
Tweet

More Decks by Eser Ozvataf

Other Decks in Technology

Transcript

  1. node.js ile
    serverless mimaride
    geliştirme yapmak

    View Slide

  2. Tanışalım
    Eser Özvataf
    @eserozvataf
    2

    View Slide

  3. Cloud
    Ne vaad etti? Bizi nereye sürükledi?
    1

    View Slide


  4. Cloud computing, often referred to as
    simply “the cloud,” is the delivery of
    on-demand computing resources over
    the internet on a pay-for-use basis.
    IBM
    4

    View Slide

  5. Cloud’un iki iddiası
    ● Pay-as-you-go
    Gerçekleşen: Önceden planlamak
    «Önümüzdeki ay 4 çekirdekli, 16 GB RAM, 4 cihaz’a ihtiyacım var»
    ● Scalability
    Gerçekleşen: Sistemin mevcut durumunu izleyerek, kaynak
    ihtiyacının artıp/azalacağına karar vermek (programlanabiliyor)
    5

    View Slide

  6. Cloud ile
    hayatımızda
    neler daha
    önemli hale
    geldi?
    6
    DevOps
    Vendor
    Specific
    KnowHow
    Virtualization
    and
    Orchestration
    Virtual
    Private
    Cloud
    Yatay
    Ölçeklenme

    View Slide

  7. Cloud ürünleri
    7
    IaaS
    Interface
    Fiziksel makine/altyapı
    ihtiyaçlarını bize bırak,
    OS ve yazılımları kur.
    Platform
    Uygulamanın
    çalışacağı OS ve
    yazılımların
    kurulumunu bize bırak.
    Uygulamanı kodla.
    PaaS
    Software
    Spesifik bir işi
    tamamlamayı/hizmeti
    sunmayı bize bırak.
    Kullanıcı ol.
    SaaS

    View Slide

  8. Cloud ürünleri
    8
    IaaS
    Interface
    Fiziksel makine/altyapı
    ihtiyaçlarını bize bırak,
    OS ve yazılımları kur.
    Platform
    Uygulamanın
    çalışacağı OS ve
    yazılımların
    kurulumunu bize bırak.
    Uygulamanı kodla.
    PaaS
    Functions
    Uygulama mimarisi
    oluşturmayı bize bırak.
    Spesifik bir işlevi kodla.
    FaaS
    Software
    Spesifik bir işi
    tamamlamayı/hizmeti
    sunmayı bize bırak.
    Kullanıcı ol.
    SaaS

    View Slide

  9. Serverless
    Nedir? Nasıl? Ve neden?
    2

    View Slide


  10. Tasarladığınız yazılımın fiziksel olarak bir
    sunucu tarafından çalıştırıldığı gerçeğini
    unutmak.
    Ve bu yeni gerçeklik doğrultusunda
    yazılım geliştirmek...
    ?
    10

    View Slide

  11. Serverless gerçekliğinde nasıl
    uygulama geliştirilir?
    ● Kod tabanı işlevler halinde tasarlanır,
    ● İşlevler stateless olur, (hafızasızlık)
    ● Sınırların farkında olunur, (örnek: 1 dakika limiti)
    ● Mümkün olduğunca cloud ürünleri kullanılır,
    11

    View Slide

  12. 12
    Domain
    Customer Product Order
    Repositories
    Business
    ICustomerRegistry IProductRegistry
    IPriceCalculator INotificationService IPaymentGateway IOrderProcessor
    Implementations
    ...
    ...
    ...
    ...
    ... PaypalPaymentGateway IyzicoPaymentGateway SmsNotificationService
    Client Request Web Server Controller
    Response
    View Model
    App Server Req. Router
    View
    APPLICATION
    Katmanlı mimari ile izole edilmiş uygulama
    IOrderRegistry

    View Slide

  13. 13
    Domain
    Customer Product Order
    Repository
    OrderRegistry
    Business &
    Implementation =
    Function PaypalPaymentGateway.placePayment
    Client Request API Gateway AWS Lambda
    Response
    APPLICATION
    Katmanlara sahip bir işlev

    View Slide

  14. İşlevlerle bir
    uygulama nasıl
    inşa edilecek?
    İnşaat örneği üzerinden problemi çözmeye
    çalışalım.
    14

    View Slide

  15. 15
    Problem
    ● 300m2 alan
    ● 1 aile barınacak
    Çözüm
    ● Müstakil ev inşaatı
    ● Garajı bulunuyor
    ● Bahçe bulunuyor
    ● Acil durumda tahliye kolay
    ● İnşaat kısa sürüyor/teknik kolaylık
    ● Planda değişiklik yapılabilir

    View Slide

  16. 16
    Problem
    ● 300m2 alan
    ● 12 aile barınacak
    Çözüm
    ● 6 kat, 12 daireli bina inşaatı
    ● Park sorunu
    ● Bahçe yok
    ● Asansör ihtiyacı
    ● Yangın merdiveni ihtiyacı
    ● Acil durumda tahliye zor
    ● İnşaat uzun sürüyor/teknik zorluk
    ● Planda değişiklik durumunda
    sıfırdan inşaat etmek daha mantıklı

    View Slide

  17. 17
    Problem
    ● Sınırsız alan
    ● 12 aile barınacak
    Çözüm
    ● 12x Müstakil ev inşaatı
    ● 12x Garaj olacak
    ● 12x Bahçe olacak
    ● Hepsinde acil durumda tahliye kolay
    ● İnşaatlar kısa sürüyor/teknik kolaylık
    ● Hepsinin planında değişiklik yapılabilir
    Kodun yatay ölçeklenmesi

    View Slide

  18. Kod tabanını işlevlere bölmek yapısal
    olarak geliştiriciye ne kazandırıyor?
    ● Proje kodu içerisinde tek domain/kavram bulunuyor,
    anlamsal hafiflik ve konsantrasyon sağlıyor,
    ● Kolay debugging, temiz stacktrace çıktıları,
    ● Prototiplemek kolay, agile’a yatkın,
    ● Planda değişiklik yapmak ve refactor kolay,
    ● İşler daha net tanımlanabiliyor, teknik yeterlilik ihtiyacı
    azalıyor,
    18

    View Slide

  19. Serverless bir cloud çözümü olarak ne
    kazandırıyor?
    ● (1) İşlev bazında kaynak harcaması hesaplanabiliyor, size ayrılan
    kaynak üzerinden değil tüketim üzerinden ödeme yapıyorsunuz.
    ● (2) Ölçeklenebilirlik sınırsız ve servis tarafından sağlanıyor.
    ● (2) Hangi şartlarda ölçekleme yapılacağını düşünmüyorsunuz.
    ● Birçok provider’ın free tier’ları sayesinde ücretsiz başlangıç.
    ● Çoğu provider’ın size taahhüt edeceği %99.9 uptime.
    19

    View Slide

  20. Serverless mimari anlamda ne
    kazandırıyor?
    ● Her işlev farklı bir runtime, programlama dili ile geliştirilebilir.
    ● DDD yerine defansif programlama dahi yeterli.
    ● Loglamayı düşünmeye gerek yok, process çıktıları cloud provider
    tarafından toplanıyor.
    ● Darboğazların yaratılması çok zor. Her birim bağımsız, stateless
    yapı avantaj sağlıyor. Bu da geliştirme ve test aşamalarında
    maaliyet azaltıyor.
    20

    View Slide

  21. Serverless mimari anlamda ne
    kazandırıyor? (2)
    ● Maintenance maliyeti az, memory leak durumunda dahi worst
    case günü kurtarabiliyor. (worst case = kötü kod)
    ● Containerlarla çalışsanız dahi sorununuz olan; OS ve Runtimelar
    için güvenlik açığı ve güncelleme takibi yapılmıyor.
    21

    View Slide

  22. Serverless geliştiricilere ne
    kazandırıyor?
    ● Bir npm paketini indirip API olarak kullanabilen her geliştirici
    (frontend geliştiriciler dahil), backend konseptlerine hakim
    olmadan servis yazabiliyor. (örn: firebase kullanabilen FEdev)
    ● Geliştiricileri DevOps süreçlerinin içerisine çeken durumlar
    ortadan kalkıyor, tekrardan koda konsantrasyon sağlıyor.
    22

    View Slide

  23. node.js ile Serverless
    Geliştirmeye nasıl başlanılır?
    3

    View Slide

  24. 24

    View Slide

  25. 25
    İyi yere dükkan açmak: serverless.com

    View Slide

  26. 26
    Serverless framework kurulumu

    View Slide

  27. 27

    View Slide

  28. DEMO

    View Slide

  29. Serverless Framework’da
    neler deneyimledim?
    ● Vaad ettiği kadar vendor agnostik değil,
    ● CloudFormation kullanıyor, belirli limitleri var, (1MB)
    ● AWS için dahi bazı provider ürünleri kapsam dışında,
    ● Production’a çıkmadan önce API Gateway’i iyi bilmek gerekiyor.
    29

    View Slide

  30. İdrak sürecinde oluşabilecek
    ahkamlar
    ● Serverless diyorlar ama sonuçta sunucu var,
    ● Serverless yapınca mikroservis olmuyor mu?
    ● Serverless dün hype oldu, herkes konuşuyor. WebAssembly
    gelince tahtını sarsar mı?
    30

    View Slide

  31. 31
    Teşekkürler!
    Sorular?
    Bana twitter.com/eserozvataf & eser.ozvataf.com üzerinden ulaşabilirsiniz.

    View Slide