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
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
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
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
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
• 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, 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
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
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
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
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
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