Kaliteli Yazılım için Scrum ve Microservices
Yazılım geliştirme dünyasında 1946 yılında öne sürülen Parçala ve Fethet (Divide and Conquer) algoritması ile bakış açısı büyük oranda değişmiş ve birçok yönteme ilham kaynağı olmuştur. Bu algoritma ile bir problemi küçük parçalara ayırarak bunlardan elde edilen sonuçlarla problemin temel(asıl) çözümüne ulaşmak hedeflenmiştir.
Parçala ve Fethet(Divide and Conquer) algoritması varsayım olarak; “optimal bir çözümü oluşturan parçalar da optimaldir.” yaklaşımı ile parçalar için optimal çözümü bulduktan sonra bu parçaların birleştirilmesi mantığına dayalıdır. Bu yaklaşımdaki en önemli nokta ise bölme işleminin en küçük birime kadar devam etmesidir. Yani, bir problemi doğrudan çözebilecek kadar basit hale gelene dek küçük alt birimlere bölerek, operasyonu küçük alt birimler içinde gerçekleştirip, en sonunda alt birimlerin sonuçlarının bir araya getirilerek başlangıçtaki karmaşık problemin sonucunu veren yaklaşımdır.
Tüm bunlar bir yerden tanıdık geldi mi? Nereden? Microservice? Ya da Scrum?
2005 yılında bir sunumda tanımlanan ve sonrasında da yazılım mimarisi olarak kabul edilen Microservices mimarisi, büyük ölçekli projelerde büyük tek bir uygulama(monolithic) yerine, uygulamayı olabildiğince en mantıklı ve küçük parçalara bölüp yaymaya dayalıdır. Buradaki en önemli amaçlardan birisi, olası bir değişiklikte yükü uygulamanın hepsine değil de ilgili parçaya indirgemektir. Böylece hem yazılım geliştirme maliyetinden kazanç sağlayıp, hem de hata riskinin minimize edilmesi hedeflenmektedir.
2010 yılında çerçevesi çizilen bir Agile iş modeli olan Scrum ise, karmaşık yazılım süreçlerinin yönetilmesi için kullanılır. Bunu yaparken bütünü parçalayan; tekrara dayalı bir yöntem izler. Temelde ürünü ufak parçalara bölerek, düzenli aralıklarla çalışan bir çözüm çıkartmayı ve bunu müşteriye sunmayı önerir. Bu kapsamda yapılan iyi bir Grooming ve Sizing toplantısı, bir işin beklenen ve gerçekleşen süreleri arasındaki farkı azaltacaktır.
Temelde aynı mantığa dayanan Microservice mimarisi ve Scrum Çerçevesi küçük parçalar üzerindeki hakimiyetin artması, hata riskinin azaltılması ve değişen isteklere hızlı cevap verebilme yeteneğinin daha efektif olmasını sağlar. Bir işin iyi bir şekilde bölünmesiyle, mümkün olduğunca kısa zaman aralıklarıyla çalışan kaliteli yazılım teslimatı yapılabilir. Böylelikle risk ve bilinmezlikler de minimum seviyede tutulmuş olacaktır.
Yazılım geliştirme yaşam döngüsü boyunca gereksinimler güncellenebilir veya ek gereksinim ihtiyacı doğabilir. Çevik olmayan yaklaşım ile çalışılan bir projede küçük bir güncelleme dahi tüm döngünün tekrarlanmasına sebebiyet verebilir. Güncellemenin özellikle projenin geliştirme ya da test gibi safhalarında ortaya çıkması halinde tüm proje etkilenebilir ve hatta planlama safhasına dönülmesi bile söz konusu olabilir. Çevik yaklaşım uygulanmayan projelerde tüm gereksinimlerin tek aşamada belirlenmeye çalışılması, süreç boyunca talep sahibi ile iletişimin az olması, talep sahibinin ancak son aşamalarda dahil edilmesi; projede teknik kısıtların ortaya geç çıkmasına, kapsam değişikliğine ve hatta talep sahibi ihtiyacının karşılanamamasına bile neden olabilir.
Parçala ve Fethet(Divide and Conquer) algoritması baz alınarak, Scrum çerçevesi kullanılarak parçalanmış ve Microservices mimarisi yaklaşımı ile kodlanmış işler; projelerinizin daha sağlam, bakım yapılabilir, bağımsız olarak devreye alınabilir, daha basit test edilebilir, gevşek bağlaşımlı(Loose Coupling) ve zaman kazançlı olmasını sağlayacaktır. Parçalanan işlerin, değişikliklere uyum sağlaması ve başa çıkması çok daha kolay olacaktır. Çıkan problemleri kolayca çözebilmek için aktif bir şekilde geribildirim sağlanabilir, yürütülen bu şeffaflık ve esneklik ile kaliteli bir yazılım üretebilirsiniz.
Umarım faydalı bir içerik olmuştur. Okuduğunuz için teşekkürler.
Sağlıcakla..