Software Development Lifecycle ve DevOps’a Giden Süreç

Burak Tufan
Turk Telekom Bulut Teknolojileri
3 min readApr 30, 2022

--

Bu yazıda yazılım geliştirme döngüsünden ve bu döngüde kullanılan geleneksel yöntemlerin yerine DevOps olgusunun nasıl yer edindiğinden bahsedeceğim.

Çoğu yazılımın, bu döngü ve bu döngüye çok benzer süreçlerle geliştirildiğini belirterek başlamak isterim.

1)Gereksinim Analizi: Bu adımda yazılımla ne amaçladığımızı belirlememiz gerekir. Gereksinimleri müşterilerin ihtiyaçlarına göre belirleriz. Muhasebe programı yapacağımızı varsayalım. Sadece kayıt mı tutacak? Kayıtları nasıl saklayacak? Fatura kesme modülü eklememize gerek var mı? vb. Bu aşama sonunda genel hatlarıyla bir şablon çıkarmış oluyoruz.

2)Dizayn: Elimizdeki şablonun bir uygulamaya dönüşmesi için yapılması gerekenlere bakıyoruz. Muhasebe kayıtları hangi formatta tutulacak, kayıtlar arasında ilişki nasıl olacak, bu kayıtları kullanıcı nasıl görecek, menüler nasıl olacak vb.

3)Kodlama: Analiz aşamasında tespit ettiğimiz, dizayn aşamasında ise belirlediğimiz özelliklere sahip bir uygulama ortaya koymaya çalışıyoruz. Alpha denilen, bir çok gereksinimin henüz tamamlandığı; Beta denilen, işin içine müşterilerin de girdiği, son aşamaya yakın ama üstünde çalışılması gereken pre-release versiyonları hazırlıyoruz.

4)Test: Pre-release noktasında test dediğimiz yeni bir aşama ortaya çıkıyor. Yazılımla ilgili sorunlar ve istenilen yeni iyileştirmeler bu adımda belirlenir. Bu aşamada kabaca iki konu üzerinde duruyoruz:

· Yazılımın, en başta belirlenen gereksinimleri karşılayıp karşılamadığı üzerinde durulur. Fatura basma modülü düzgün bir şekilde çalışıyor mu ya da iyileştirmeye ihtiyaç var mı vb.

· Yazılımın performansı üzerinde durulur. Yazılım düzgün çalışıyor ama fatura basma modülü 3ms’de açılması gerekirken 3 saniyede açılıyorsa performans sıkıntısı var demektir.

İyileştirmelerin ardından Gereksinim Analizi aşamasına geri dönülür. Amaçlanan özellikler dizayn edilir, kodlamaya başlanılır ve tekrar test aşamasına gelinir. İstenilen iş ortaya çıkana kadar bu döngüye devam edilir. Test aşamasının ardından nihayet son adıma geçilir:

5) Release yani uygulamayı yayınlama — canlıya alma aşaması.

Sektördeki büyüklerimizin tecrübelerinden edindiğimiz bilgilere göre, 2000'li yıllarında başında bir yazılımın release’inden sonra nelerle karşılaşıldığına bakalım.

Yazılımla ilgili bir sorunla karşılaşıldığında, müşteriler uygulamayı satın aldıklara firmaya ulaşıyorlardı. Eğer sorun müşterinin sistemi ile değil de kod sebepliyse, bu soruna çözüm bulmak adına “Hotfix” denilen küçük düzeltici programlar yazılıp müşteriye gönderiliyordu. Bunun dışındaki genel sıkıntılar ve istenilen ek özellikler, bir sonraki versiyon güncellemesi için toplanıyordu. Ve tekrar yeni bir yol haritası belirlenerek yazılım geliştirme sürecine giriliyordu.

Bu süreçte yazılım firması adına olan sıkıntılar şunlardı;

· Geri bildirim toplanmasının zor olması

· Yazılımın kurulu olduğu sistemin kontrolüne sahip olamamak

· Yüzlerce değişik sistem konfigürasyonu için uyumluluk yaratmak zor.

Müşteri adına olan sıkıntılar ise şunlardı;

· Problem çözümü zahmetli ve yavaş

· Yeni özelliklerin geldiği sürümlere erişmek aylar sürüyor

· Altyapı oluşturma ve yönetme işlemleri zahmetli ve pahalı

Hal böyleyken yazılım firmaları çeşitli yollar aradı. Bu yollardan en etkili olanı SaaS (Software as a Service) yani “bir hizmet olarak yazılım” konseptiydi. Müşteri artık yazılıma binlerce dolar ödeyip onu demirbaş olarak satın almak zorunda kalmıyordu. Dönemlik ödemeler yaparak, hizmeti kiralıyordu. Şirketlerin kendi arabalarını alıp onların satın alımı, bakımı, kaskosu, vizesi gibi şeyleriyle uğraşmak yerine araç kiralamaları gibi yani.

Fakat bu modelin getirdiği esas değişiklik yazılım firmaları tarafında oldu. Özellikle geri bildirim ve sorunları çözme konusunda artık müşteriye pek ihtiyaçları kalmamıştı çünkü tüm sorunları anlık olarak kendi sistemleri üzerinde görebiliyorlardı.

Bu da sektörü başka bir yol ayrımına itiyordu. Şöyle ki, eskiden geri bildirim almak aylar içinde gerçekleşiyordu ama bu geri bildirimin üzerinde çalışıp optimizasyon yapmak da zaman alıyordu ve firmaların bir acelesi yoktu.

Şimdi ise müşteri komple bir hizmet aldığı için, sorunlarının en kısa zamanda çözülmesini bekliyor, bunun yanında da müşteriye 6 ayda bir yeni sürüm gönderme lüksü ortadan kalkıyordu. Müşteriler yeni özellikleri anında talep ediyor ve firmalardan da bu yeni özellikleri hızlıca sistemlerine eklemelerini bekliyorlar.

Bu durum, yazılım yaratma döngüsünde ve o yazılımı yönetme döngüsünde köklü bir değişime gidilmesini tetikledi ve bu yeni olgunun adı DevOps’tu.

--

--