(Ö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
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
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ı
• İş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
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
= Function PaypalPaymentGateway.placePayment Client Request API Gateway Function Runtime Response CODE BASE İşlev olarak tasarlanmış ve deploy edilmiş kod tabanının öyküsü
• 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
• 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ı
• 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
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
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
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
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
• 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
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