DevOps Üzerine…

   Siz de kabul edersiniz ki günümüzde yazılım trendlerinden Agile (Çevik) yazılım geliştirme, üniversite sıralarında kulaklarımızda yer etmiş Waterfall’u silip süpürdü. Artık öyle bir noktaya geldik ki; yazılım dünyasında hangi taşın altına baksanız karşınıza çıkar oldu Agile yazılım geliştirme. Agile manifestosunu hatırlayın, temelinde müşteri geri dönüşleri karşısında yazılımın hızlı refleks verebilmesini anlatır. Yazılımın değişime hızlı cevap verebilmesi en önemli kazanımdır. Gerçekten de günümüz teknolojisinin geldiği noktaya bakıldığında bunun ne kadar doğru olduğunu görebiliyoruz. Artık evinizde hobi olarak geliştirdiğiniz bir projenin dünya çapında yüzlerce/binlerce kişinin kullandığı bir uygulama haline gelmesi an meselesi. Dolayısıyla da dünyanın herhangi bir yerinde yazılım geliştirmekte olan onlarca, yüzlerce kişi ile farkında olmasanız da bir rekabet içerisindesiniz.

Paketler

   İyi bir fikir buldunuz, ürün geliştirdiniz; fakat ürünün tam olarak bitirdikten sonra sahaya çıkmasını istiyorsunuz. Kaybettiniz! Rekabetin bu kadar çok olduğu bir ortamda kazanmak için iyi fikir tek başına yeterli değil; çabuk olmalısınız, hızlı davranmalısınız… İyi fikri, iyi bir ürün olarak kısa sürede çıkartmak başarınızın anahtarı olacaktır. Bu bakış açısı ile, Agile yazılım geliştirme sizin için biçilmez kaftan… Öte yandan gözünüzden kaçan bir nokta var; Agile sürekli yazılım geliştirme üzerine kuruludur, geliştirilen yazılımın dağıtılması birincil öncelik değildir.

   Yazılım evlerinin yaşadıkları problemlere bakıldığında her ne kadar Agile yazılım geliştirme ile önemli sorunlar çözülse de, yazılımın dağıtılması hala dokunulmamış önemli bir sorun olarak durmaktadır. Bu noktadaki en önemli sıkıntı ise yazılımı geliştiren ekipler ile operasyonu sürdüren ekipler arasındaki bağın kopuk olmasıdır. Daha çok büyük yazılım evlerinde görülen bu kopukluk nedeniyle yazılım süreçlerinde kazandığınız çeviklik, sıra bu yazılımın dağıtımına geldiğinde yerini hantallığa bırakmaktadır. Kabul edelim; yeni sürümlerin sunuculara atılması biz proje yöneticileri için her zaman riskli bir iş kalemi olarak görülmüştür. Bu yüzden en az kullanıcının sistemde olduğu saatleri yeni sürüm için seçmiyor muyuz!!? Yine kabul edelim; sıkıntısız bir sürüme çıktığımızda kendimizi şanslı sayıyoruz.

   Bir yazılımın geliştirilmesi kadar sahaya çıkması, hatta çıktıktan sonraki destek süreci de önemlidir. Hatta pek çok müşteri için ürün tercihinde bu geliştirme sonrası süreçler önemlidir. Büyük çaplı yazılımlarda bu operasyon oldukça önemlidir. Keskin çizgilerle sorumlulukları belirlenmiş ekipler vardır. Yazılım destek ekibi, veritabanı ekibi, iş analistleri, ağ ekibi, sistem yöneticileri, QA ekipleri… Pek çok örnekte bu ekipler ofisin ayrı bölümlerinde, ayrı katlarda, hatta ayrı şehirlerde bile olabilir. Böylesi büyük bir yapılanmaya Makinemde çalışıyor sertifika programı :)gidildiğinde kaçınılmaz olarak ekipler arasında biz-siz ayrışması başlayacaktır. Emin olun, iş hayatımda bu gibi durumlarda defalarca kez karşılaştım, karşılaşmaya da devam edeceğim. İyi zamanlarda sıkı sıkıya kenetlenmiş bu “ekipler”, ilk problemle birlikte rakibinizde daha tehlikeli hale gelebilirler. Bahsettiğim bu tehlikenin adı “Benim makinemde çalışıyor”. Konunun detayına inmeden, sırf sorumluluğu omuzlarından atabilmek adına yüzeysel kontrollerle problemi sahiplenmeyen, sorumluluğu bir diğer ekibe yıkan organizasyonlar başarısızlığa mahkum olacaklardır.

  Bu durumlardan başarıyla çıkabilen ekipleri incelerseniz pek çoğunda bir ya da (şanslıysanız) iki “kahraman” tüm yükü sırtlayarak, ekipler arasında mekik dokuyarak üretim ortamındaki problemi tespit eder ve sorunu çözer. Bu kahramanlar yazılım geliştirme kadar veritabanı, ağ ve hatta sistem yönetimi konularında bilgili (ya da en azından fikir, deneyim sahibi) kişilerdir. Bu kahramanlar gittiğinde tüm organizyon çökmeye mahkumdur.

Bulutlar

   Resme bir de bulut teknolojileri ile birlikte saniyeler içerisinde onlarca, yüzlerce sunucuya yazılımımızı dağıtabileceğimizi de katarsak konunun önemini ve olası problemin büyüklüğünü daha iyi kavrayabiliriz. İşte tam da bu noktada sahneye DevOps kavramı çıkmakta. DevOps’ta hedef, Agile yazılım geliştirme ile birlikte kazandığımız sürekli entegrasyon/sürekli yazılım geliştirme yeteneğinin yazılımın dağıtımında da kazanılmasıdır. Yazılım geliştiriciler ile IT birimleri arasında yeni bir kültür oluşturulmasını, aradaki iletişimin güçlendirilmesini hedeflemektedir. Yazılımdan anlayan ve IT süreçlerine hâkim bir kadro, bize değişen donanımlar üzerinde daha hızlı ve sorunsuz yazılım dağıtabilme yeteneğini sunacaktır. Her iki uç hakkında da bilgi ve deneyim sahibi kişilerden oluşturulan DevOps ekipleri sayesinde sahiplenilen problemler nokta atış çözümlerle ortadan kaldırılabilir. Aslına bakarsanız, az önce bahsettiğim “kahraman”lar DevOps ekipleri için en iyi adaylardır.

   Yukarıda örneklediğim bulut teknolojilerine geri dönelim; Saniyeler içinde onlarca, yüzlerce sunucuda yazılımınızı koşabilme şansınız var. Muazzam bir kabiliyet… Diğer yandan, yazılımınızı tüm gereksinimleriyle birlikte ve hatasız bir şekilde sunuculara dağıtamadıktan, problemlere hızla müdahale edemedikten sonra bu kabiliyetin hiçbir önemi olmayacaktır. Aynı yarış atını sütçü beygiri olarak kullanmak gibi…

   Tabi ki yazılımınızın saniyeler içerisinde onlarca sunucu üzerinde koşması hedefi bir otomasyona sahip olmadan imkansız olacaktır. Dolayısıyla, yazılım dağıtım süreçlerinin otomatize edilmesi DevOps’un olmazsa olmazları arasındadır. Otomasyonun ise ekip çalışması ile tamamlanmadığı noktada, ortaya çıkan operasyonel problemlere hızlı tepki verilemeyeceği ise açıktır.

   Bir adım geri çekilip yukarıda paylaştığım bakış açısı ile yazılım geliştirme ve dağıtımı süreçlerini incelediğimizde sürüm kontrolü, kalite kontrolü, otomatik yapılandırma, otomatik yazılım dağıtımı ve ekipler arası iletişim DevOps’un çözmesi gereken problemlerin başında olduğunu görebiliriz.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir