Yazılım Geliştirme Trendleri 2017/11: Microservices

Mustafa Ekim
2 min readAug 14, 2017

--

Eskiden hedef bir uygulamayı, birbirinden bağımsız birçok katmana bölümlendirmekti (loosely coupled, high cohesion). Modüler (multi layered architecture — çok katmanlı mimari) dev uygulamalar geliştirildi.

2010'ların ortasında bu uygulamalara Monolithic (yekpare!) denmeye başlandı. Vurgulanmak istenen, koca, dev bir uygulamanın getirdiği hantallık ve bu hantallığın neden olduğu sorunlardı.

  • Problemin büyüğü ölçeklendirmede yaşandı. Temel problem, monolithic yapıda, sorunlu alanlara özel çözümler sağlanamamasıydı. Örneğin sadece satış işlemlerini ölçeklendiremiyordunuz. Tek yapabildiğiniz tüm yapıyı ölçeklendirmeye çalışmaktı, o da hem yönetetimi zor, hem de maliyeti yüksek bir çözümdü. Yine de çoğu durumda problemi çözemedi.
  • Bir diğer problem, continous deployment süreçlerinde baş gösterdi. Yekpare dev bir uygulamanın bir köşesinde yapılan değişiklik için, tüm uygulama yeniden deploy ediliyordu. Bu, takımların birbirinden bağımsız çalışabilmesini engelledi. Merkezi bir koordinasyona ihtiyaç vardı.
  • Monolithic yapıda, kararların da merkezi alınması gerekiyordu. Hangi dil kullanılacak, runtime ne olacak, sunucu ne olacak, veriler hangi veritabanında tutulacak, load balancer ne kullanılacak … Merkezi planlamanın olumsuz sonuçlarını biliyoruz. Üstelik alınan kararlardan geri dönmek de mümkün değildi.

Buna karşılık, bu sorunların üstesinden gelmek için 2010'ların ortalarına doğru Microservices mimarisi önerilmeye başlandı.

Artık hedeflenen bir uygulama değil, birbiriyle konuşan, bir uygulamaymış görünümü veren, birçok uygulama.

Bu uygulamalar birbirleriyle ortak bir dil ile (json) konuşuyor ancak hepsinin runtime’ı şahsına münhasır olabiliyor. Kimi MongoDB, kimi PostgreSQL, kimi Neo4J ile kendi verisini tutabiliyor. Her bir uygulama kendi deployment sürecini yönetiyor; ölçeklendirilmesi gerekiyor ise, kendi aldığı trafiğe göre kapasitesini yönetiyor. Üstelik microservices mimarisi, her bir uygulamanın kendi teknik seçimlerini özgürce yapabilmesini sağladığı için, ihtiyaca uygun teknolojilerin seçimi de mümkün oldu. Örneğin bir e-ticaret sitesindeki “recommendation” (tavsiye) uygulaması, verilerini GraphDB’de tutabilir, bu veri yapısının avantajlarından faydalanabilir.

Microservices mimarisi, eş zamanlı birçok farklı uygulamayı, runtime’ı ve sunucuyu ayakta tutabilmeyi gerektiriyor. Bu yüzden ufak bir proje için mantıklı bir yöntem değil. Ancak büyüme potansiyeli olan tüm projeler, bu yapı akılda tutularak tasarlanmalı.

**

Eğer sıfırdan yazılım kariyerine başlamak istiyorsanız, 3 aylık yoğun programlar düzenliyorum. Bilgi için: https://www.yenikodyazilimkursu.com/

Test Invite online sınav sistemi ile tanışın: İşe alım sınavları, Genel Yetenek Testleri ve İngilizce Seviye Tespit Testleri

Video kayıtlı ve zorunlu tam ekran ile güvenli online sınavlar yapmak için: https://www.testinvite.com/lang/tr/online-sinav-sistemi.html

--

--

Mustafa Ekim

Software Developer & Trainer. Entrepreneur & Founder of TestInvite Exam Software — https://www.testinvite.com