YAZILIM MİMARİSİ
Teknolojik Gelişmenin Yazılım Mimarisine Etkileri
Peter Wagner ve Martin Giles 2016 Ocak ayındaki Microservices, Containers And The Digital Dialectic blog yazısından infrastructure ve uygulamalar arasında evrimsel gelişmeyi tetikleyen nasıl bir ilişki olduğunu anlatmış.
Bu yazıda Teknolojik gelişmelerin Yazılım Mimarisine ve diğer yazılım öğelerine etkilerinden bahsetmek istiyorum.
Uygulamada Kod Yapısı : Monolith → Client/Server → N Tier → Microservice → FAAS (Function As A Service)
Infrastructure(Computing) : MainFrame → PC → onPrem Sunucu → VirtualOS(EC2) → Paas (ElasticBeanstalk) → Fargate(Docker) → Lambda (Serverless)
Yazılım Geliştirme Süreçlerinde
Waterfall → Agile
Dillerde : Assembly → C/CPP → Java, .NET → Scale, Go, Python, Javascript
Konseptlerde : Multi Thread , Sync, → Single Thread, Non I/O Block, Async
Ekip Yapıları: Analiz, Tasarım, Geliştirme, Test → Self Managed Team (DevOps) kavramları çıktı
Canlıya Çıkma Süresi : Manual Deployment → CI/CD Otomatikleşmesi, ve sürelerin gün içerisinde yeni versiyonların deploy edilmesi
Infrastructure Kullanabilme: Manual → Infrastructure As A Code
Veri ve İşleme Gücü Üzerine Yeni Uygulama Alanları: Big Data, BlockChain , Machine/Deep Learning, Virtual Reality, Otonom Sistemler, iOT vb
Özetle
- daha küçük ekipler,
- API ve Servisler üzerinden iletişim
- daha küçük bileşenler, servisler,
- geliştirici , ürün yöneticisi , test, tasarımcı ve müşterinin daha çevik çalıştığı ortamlar
- manual yapılan işlemlerin → scripting dilleri ile kod ile yapılması
- bu servisleri ve bileşenleri yönetebilmek, izleyebilmek , güvenliğini sağlayabilmek , vb.. cross-cut işlemleri için birçok SaaS servisin kullanılması
- sistem paydaşları arasındaki iletişimin tek bir kanal yerine bir çok kanal üzerinden gerçekleşmesi (Slack, Zoom, Figma, Invision vb.. ortak çalışma araçlarının) kullanılması
- Canlıya çıkma süreçlerinin çok hızlı olması
- Sistemlerin 7/24 hizmet verecek şekilde hatalara karşı, yüksek performans ihtiyaçlarına karşı dayanıklı olacak şekilde bulut üzerinde çalışabilir olması
- Uygulama geliştirme hızının çok artması ve Veriyi analiz edip değerlendirme için bir çok araç ve altyapının mevcut olması.
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.