Gelişen teknoloji ve özellikle Container mimarisi ile hayatımıza giren “DevOps” kavramı nedir ve neden gereklidir? DevOps kavramı, Developer (Yazılım geliştirme ve bağlı birimleri) ve Operations (Sistem Mühendisleri, Network Mühendisleri ve bağlı birimleri) takımlarının arasında konumlanarak koordinasyonu sağlayan çözüm ya da birim olarak değerlendirebiliriz. Ancak elbette bu kısa açıklama DevOps için çok zayıf kalacaktır. Bu nedenle, yazımızın devamında konuyu biraz daha detaylandıralım.
Yayına çıkmaya hazır bir yazılımı neler bekliyor?
Development (Yazılım) ortamında tüm temelleri atılmış, kısmen testleri yapılmış bir yazılımın hayata geçebilmesi için kabaca aşağıda ki süreçlerden geçmesi gerekiyor. Farklı departmanlar olduğu değerlendirilerek görevler parantez ile belirtilmiştir.
- Yazılımın yayınlanacağı ortam hazır mı? (Sistem Departmanı)
- Yazılım için gerekli olan bileşenler ortam üzerinde kuruldu mu? (Sistem Departmanı)
- Proje dış dünyaya açılacaksa Public IP adresi tahsis edildi mi? (Network Departmanı)
- İç ortamda haberleşme için yapımız hazır mı? (Network Departmanı)
- Bir Load Balancer (Yük Dengeleyici) ihtiyacı varsa, gerekli konfigürasyon yapıldı mı? (Network Departmanı)
- Yazılım doğru yayınlandı mı? (Yazılım Departmanı)
…
Bu işlemler sürerken ve proje boyutuna göre adımlar artarken, aynı zamanda Sistem, Network ve Yazılım departmanlarının sürekli koordine ilerlemeleri gerekiyor. Dolayısıyla, komplike bir projenin yayına geçme süresi günler alabiliyor.
DevOps’u özetle, bu süreçlerin arasında konumlanan ve güncel teknolojiler ile bu koordinasyon ve diyalog süreçlerini proje kapsamına bağlı olarak, günler kavramından saatler kavramına indirgeyen bir yaklaşım olarak değerlendirebiliriz.
DevOps Departmanı ya da bu alanda firma içinde bir çalışan gerekli mi?
DevOps için tam anlamıyla gereklilik demek yanlış olur. Projeye bağlı olarak gerekli olabilir, hizmet olarak out source edilebilir (dış kaynaklardan alınabilir) ya da tamamen anlamsız olabilir. Bir projede, yazılım geliştirme ekibi kadar gerekli değil ancak yazılımın yayına (test, canlı ve diğer ortamlarda) alınması aşamasında belirgin ihtiyaç ya da problemler varsa kesinlikle gerekli diyebiliriz.
Sistem ve Network Ekibi olmadan DevOps mümkün mü?
Evet. Microsoft Azure, Google Cloud, AWS gibi Cloud sağlayıcılar DevOps gerekliliklerine uygun ortamlara tam anlamıyla cevap veriyor. Ancak, projenin On-Premise (Ofiste, Fabrikamızda v.b.) olarak barındırılmasını istiyorsak, gerekli kurulumların sağlanması için Sistem ve Network ekiplerine (ya da danışmanlığına) ihtiyaç duyulur.
DevOps Gereklilikleri
Bir DevOps’tan yazılımcı (developer) kadar bilgi sahibi olması beklenmemekle birlikte, geliştirme yapılan dil ile kod yorumlayacak kadar bilgiye sahip olması beklenir. Bu durum proaktif çalışma açısından ciddi avantaj sağlar.