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

Uygulama Mimarisinde Fonksiyonların Yükselişi

Uygulama Mimarisinde Fonksiyonların Yükselişi

Developer Summit İzmir 2018

Eser Ozvataf

March 17, 2018
Tweet

More Decks by Eser Ozvataf

Other Decks in Programming

Transcript

  1. “Architecture has become a very slippery word in the software

    business. It's hard to come up with any solid definition of what it means. I see it as a fundamentally subjective term.
 
 When people describe their software architecture they select the important parts of their systems, how these parts fit together, and the key decisions they made in designing their systems. Martin Fowler
  2. Uygulama Mimarisi Nasıl Tarifleyebiliriz? •Tanımı muğlaktır*. •Uygulamanın kuşbakışı* haritasıdır. •Uygulamaya

    ait parçaları soyut ele alıp, sistem içerisindeki davranışlarını belirler. •Uygulama için kilit noktadaki kararları etkiler. Örneğin uygulamanın kullanacağı veritabanı tipi.
  3. Ne kadar kuşbakışı? • Bölgeler • Komşular • Sınırlar •

    İçerikten bahsetmiyor • Tüm fiziksel yapılar Coğrafi Bölgeler Haritası Fiziki Harita
  4. Restoranlar Yemekler Siparişler Kullanıcılar Domain (Kavramlar, Nesneler) Application (İş akışları)

    Restoran’dan Sipariş Verme Kullanıcı Olarak Kaydolma Geçmiş Siparişi Yorumlama Infrastructure (Altyapı bağlantıları) Veritabanı -> MongoDB Arama -> ElasticSearch Presentation (Kullanıcı Arabirimi) iOS Mobil Client Android Mobil Client React Web Client Örnek Uygulama YemekSipariş Projesi Uygulama Mimarisi
  5. Örnek Uygulama Presentation Katmanı iOS Mobil Client Android Mobil Client

    React Web Client Kullanıcı Web Server Sunucu (Server) İstemci (Client) Uygulama Front-End Kodu YemekSipariş Projesi Client/Server Mimari Uyarlaması - 1 Uygulama Prosesi* Uygulama Back-End Kodu
  6. Örnek Uygulama Web Server Sunucudaki Uygulama Prosesi Application Katmanı* Restoran’dan

    Sipariş Verme Kullanıcı Olarak Kaydolma Geçmiş Siparişi Yorumlama Request Router Restoranlar Yemekler Siparişler Kullanıcılar Domain Katmanı MongoDB Bağlantısı Infrastructure Katmanı YemekSipariş Projesi Client/Server Mimari Uyarlaması - 2
  7. Kontrol Listemiz • Uygulama gereksinimleri nelerdir, nasıl bir sunucuda çalışacak?

    • Uygulama hangi platformda, hangi işletim sistemiyle çalışacak, nasıl bir kurulum gerekecek? • Sunucudaki uygulama çalışmayı sonlandırır veya bir problem yaşarsa ne olacak? • Sunucudaki uygulamaya karşılayabileceğinden fazla istek gelirse ne olacak? • Uygulamanın kapasitesini arttırmak istersek nasıl hareket edeceğiz? • Uygulamanın canlı ortama aktarımı ve güncellemeler nasıl olacak?
  8. Cloud Computing Vendor Specific KnowHow Virtualization and Orchestration Virtual Private

    Cloud Scalability FaaS da çoğumuzun hayatına cloud ile birlikte girdi
  9. Cloud ürünleri IaaS PaaS SaaS Interface Fiziksel makine/altyapı
 ihtiyaçlarını bize

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

    bize bırak.
 
 OS ve yazılımı kur. Platform Uygulamanın çalışacağı OS ve yazılımların kurulumunu bize bırak.
 
 Uygulamanı kodla. Software Spesifik bir işi tamamlamayı/hizmeti sunmayı bize bırak.
 
 Kullanıcı ol. Functions Uygulama mimarisi odaklı kaygıların çözümünü bize bırak.
 
 Spesifik bir işlevi kodla.
  11. Nasıl tasarlanmalı? •Kod tabanı işlevler halinde hazırlanır. •Hangi olay sonucu

    tetikleneceği seçilir. •HTTP Request •Timer •Diğer eventler (kuyruğa bir şey eklendi) •Stateless olmalıdır. •Sınırların farkında olunmalı (örneğin 1 dakika limiti)
  12. Örnek Uygulama Presentation Katmanı iOS Mobil Client Android Mobil Client

    React Web Client API Gateway Uygulama Front-End Kodu YemekSipariş Projesi FaaS Mimari Uyarlaması - 1 İşlev Uygulama Back-End Kodu Kullanıcı İşlev Listesi Restoran’dan Sipariş Verme Kullanıcı Olarak Kaydolma Geçmiş Siparişi Yorumlama İşlevin yüklü olduğu bir hedef
  13. Örnek Uygulama İşlevin yüklü olduğu hedef “Restoran’dan Sipariş Verme” İşlevi

    Application Katmanı İşlev Kodu Restoranlar Yemekler Siparişler Kullanıcılar Domain Katmanı MongoDB Bağlantısı Infrastructure Katmanı YemekSipariş Projesi FaaS Mimari Uyarlaması - 2
  14. Client / Server FaaS Kod Tabanı Monolitik İzole Hata Tespiti

    Geniş kod tabanı nedeniyle daha zor Daha kolay, temiz stacktraceler Refactoring Göz korkutucu Sorun değil, parça parça gerçekleşebiliyor Memory Leak Uzun çalışma süresi nedeniyle sorun oluşturuyor Daha az zarar veriyor Bottleneck Çözülmesi gereken bir problem Stateless olduğu için oluşmuyor Birden fazla dil kullanımı Çok çok zor Mümkün Prototipleme Taban kurmak gerekiyor Hemen başlanılabilir Geliştirme anlamında karşılaştırmalar
  15. Client / Server FaaS Loglama Merkezleştirmek için Logstash benzeri çözümler

    gerekiyor Birçok platformda stdout yeterli Uygulama Sağlığı Sürekli kontrol edilmek zorunda Güvenilir Ölçeklenebilirlik Zor olabiliyor, mühendislik problemleriyle dolu Doğası gereği Maliyet Açık kaldığı sürece Çalıştığı kadar Bakım İşletim sistemi, bağımlılık güncellemeleri yapılmalı Yok Ücret Fiziksel sunucu şart Free tier kapsamında bedava,
 Yine de dikkatli olunmalı Operasyon anlamında karşılaştırmalar