node.js ile serverless mimaride geliştirme yapmak

D518bd56413643cbed1c8a02c25898cc?s=47 Eser Ozvataf
November 18, 2017

node.js ile serverless mimaride geliştirme yapmak

D518bd56413643cbed1c8a02c25898cc?s=128

Eser Ozvataf

November 18, 2017
Tweet

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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ı
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 24.

    24

  19. 27.

    27

  20. 28.
  21. 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
  22. 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