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

Serverless PHP

Serverless PHP

Eser Ozvataf

May 04, 2019
Tweet

More Decks by Eser Ozvataf

Other Decks in Programming

Transcript

  1. Eser Özvataf › Süreç Lideri @ Setur › Sektörde 18

    Yıl İş Deneyimi › Açık Kaynak Ekolünden › E. Bilgi ve İletişim Teknolojileri üzerine Yüksek lisans mezunu /eserozvataf /eserozvataf
  2. Bugün bahsedeceklerim › Cloud Ne vaad etti? Bizi nereye sürükledi?

    › Serverless Nedir? Nasıl? Ve neden? › Geliştirme PHP’de serverless geliştirmeye nasıl başlanılır? 4
  3. “ 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 6
  4. Cloud’un iki iddiası • Pay-as-you-go (Kullandığın kadar öde) • Scalability

    (Ölçeklenebilirlik) Gerçekleşen: Kullanılacak kaynağı hazırda bekletmek, daha fazla kaynağa ihtiyaç olduğunda bunu önceden planlamak. «Önümüzdeki hafta 4 çekirdekli, 16 GB RAM’e sahip 3 cihaz’a ihtiyacım var, Haftasonu kaynakları bir üst pakete yükseltmeliyim.» 7
  5. Geliştiricinin Cloud hizmetlerin den gerekli verimi alması için... 8 DevOps

    Vendor Specific KnowHow Virtualization and Orchestration Virtual Private Cloud Yatay Ölçeklenme
  6. Cloud ürün sınıfları 9 IaaS Infrastructure 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
  7. 10 IaaS Infrastructure 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 Cloud ürün sınıfları
  8. “ 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... 12
  9. Serverless uygulamaların farklılıkları nelerdir? • Kod tabanı işlevler halinde tasarlanmıştır,

    • İşlevler stateless olur, (hafızasızlık) • Belirli sınırlarda çalışırlar, (örnek: 1 dakika limiti) • Mümkün olduğunca diğer cloud ürünlerini kullanırlar, 13
  10. 14 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 CODE BASE Katmanlı mimari ile izole edilmiş, uygulama olarak paketlenip deploy edilen kod tabanının öyküsü IOrderRegistry
  11. 15 Domain Customer Product Order Repository OrderRegistry Business & Implementation

    = Function PaypalPaymentGateway.placePayment Client Request API Gateway Function Runtime Response CODE BASE İşlev olarak tasarlanmış ve deploy edilmiş kod tabanının öyküsü
  12. 17 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
  13. 18 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ı
  14. 19 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
  15. 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, error handling, temiz stacktrace çıktıları, • Prototiplemek kolay, • Planda değişiklik yapmak ve refactor kolay, • İşler daha net tanımlanabiliyor, teknik yeterlilik ihtiyacı azalıyor, 20
  16. Serverless bir cloud çözümü olarak ne kazandırıyor? • (1) İşlev

    bazında kaynak harcaması nedeniyle, 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. 21
  17. 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. 22
  18. Serverless bakım tarafında ne kazandırıyor? • 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. 23
  19. Serverless geliştiricilere ne kazandırıyor? • Kendi kompleksitesine sahip kod tabanları

    ile vedalaşılıyor, tekrardan prosedürel’e yakın işlev kodları oluşuyor. • Geliştiricileri DevOps süreçlerinin içerisine çeken durumlar ortadan kalkıyor, tekrardan koda konsantrasyon sağlıyor. 24
  20. PHP’de nasıl geliştiririm? • Birçok FaaS / Serverless çözümü var,

    • Platform olarak AWS, OpenWhisk v.b. kullanılabiliyor, • Ara katman olarak Serverless.js ve Bref kullanılabiliyor, • Örnek: https://github.com/eserozvataf/serverless-php 26
  21. 27

  22. 28

  23. 29

  24. Serverless ve PHP uyumu? • AWS’de şu anda binary dahil

    ederek bir destek sağlanabiliyor, • Azure desteğini maalesef kaldırdı, ama bazı yollar var... • Daha fazla vendor desteği şart... • Mevcut vendorların da olgunlaşması gerekiyor... 30