Devops, yazılım firmalarının kendi öz sistemlerinin çalışabilmesi amacıyla kullanmış olduğu yöntemlerin, sistemi yönetenlerin aracılığıyla kullanılması olarak tanımlanabilir. Bahsedilen bu araçlar, kaynak kodu denetiminden teste olsun, o noktadan diğer gelişim süreçlerine olsun geniş bir açıda yer alıyor. Bu bütünün faaliyetler birliğini de temsil ediyor denebilir Devops için. “Dev” kelimesi çoğunlukla yazılımları geliştirenler için kullanılıyor fakat pratikte daha da geniş bir bünyeyi temsil ediyor. Yazılım geliştirme görevinde yer alan herkesi kapsayan bir anlama karşılık geliyor. “Ops”ise “Dev”e kıyasla kapsamını daha da geniş bir yelpazede tutuyor. Bu mecrada yer alan sistem mühendisleri ya da sistem yöneticileri olsun sürüm mühendisleri, güvenlik uzmanları, veritabanı yöneticileri, bilişim ağı mühendisleri olsun örnekleri arttırılabilecek birçok değişik alt disiplinler için kullanılabilir.
Devops’un Ortaya Çıkışı
Şu anın dünyasında yazılım uygulamalarının sürümlerini adapte etme hızı, ürünler arası çekişmenin artış göstermesiyle beraber arttığı söylenebilir ve bu artış hala gözlemleniyor. Firmalar ve firmaların ürünleri, bu rekabet ortamına benzer ortam içerisinde müşterilerini tatmin etmek amacıyla başarılı ve seçkin sonuçlara ulaşmak mecburiyetindeler fakat bazı şirketler kullanıcı performansını daha iyi yapabilip bu hataları da düzeltebilmek adına ya da yepyeni özelliklerin eklemesinin yapılabilmesi amacıyla bazı zamanlarda belki de günde onlarca hatta yüzlerce yazılım değişikliği yapılıyor. Bahsi geçen bu firmalara ya da şirketlere, Google, Twitter, Amazon ve Etsy gibi büyük firmalar örnek olarak verilebilir ki bu sebepten ötürü de yazılım dünyasında üretimin aynı derece hızlı ve hatasız bir şekilde gerçekleşmesi kaçınılmaz bir hal almış oluyor.
Eski dönemlerde Ops ve Dev arasında bir bağlantı olmadan birbirlerinden kopuk bir şekilde çalışırken istenen atikliği sağlayamıyorlardı. Bu yüzden de yazılım geliştiren mühendisler buna çözüm bulmak istedi. Şirketlerin yaşadığı bu soruna kendi içlerinde yaşadıkları verimsizliğin yanı sıra müşterilerin de bu durumdan memnun olmadığı hesaba katıldığı zaman bu çözüm son derece elzemdi. Buna en iyi örnekler zamanında bitmeyen projeler, hatalı ürünler, başarılı olmayan sürekli hata veren sürüm denemeleri sonucu boşa tüketilen para ve zamanın yanı sıra itibar kaybı da örnek verilebilir. Devops, tam bu durumu ortadan kaldırıp dur diyebilmek adına bir hareketle sahneye çıktı. Sistem yöneticileri ve yazılım geliştiricileri arasındaki enerji bağı, iş birliği ve iletişim bir olmayı ana ilkesi haline getirdi. Bunun sonucu olarak da şirketlerin IT sunumlarının yanı sıra yazılım ürünlerinin de daha atik ve hızlı bir biçimde üreticiden tüketiciye ulaşması sağlanmış oldu.
Devops’un Yararları
Devops vasıtasıyla uygulamalarını gerçekleştiren şirketler Devops kullanmayan şirketlere kıyasla çok daha verimli bir şekilde işlerini hallediyor. Bunu sayısal bir veriye bağlamak gerekiyorsa bu yaklaşımı ile çalışmayanlara kıyasla 30 kata kadar çıkabilen daha fazla dağıtım yapabiliyorlar. Devops aracılığıyla ulaşılan en büyük değişim ise eskiden kopuk bir şekilde çalışan ve daha farklı yeteneklere sahip takım elemanlarının geliştirici mühendisler tarafından bu geliştirici veritabanı yöneticileri, sistem yöneticileri, sistem analistleri ile birlikte bir araya gelerek sadece bir takım oluşturmasıyla mümkün. Farklı rollerde bulunan bahsi geçen bu iş birliğinin birden çok da avantajı bulunuyor. Bu faydalar işletmeye sağlamış olduğu faydalar ve teknik faydalar olarak iki farklı açıdan incelenebilir. Ürün niteliklerinin daha hızlı teslim edilmesi, normal haline göre daha tutarlı ve sabit çalışan sistemler başta olmak üzere sorun gidermekten çıkarak odağını değiştirip mevcut durumda iyileştirme yaparak buna zaman ayırma olanağından ötürü işletmeye fayda sağladığını söylenebilir.
Teknik faydalara geçecek olunursa teknik faydalar da son derece fazla ve önemli. Sürekli olarak teslimat yapılması, düzeltilmesi gerekli sorunların karmaşık olmaması ve sorunlara normalden daha hızlı bir şekilde çözüm bulunması teknik faydalara örnek olarak verilebilir. Bu faydalar ilk başta çok basit gözükse de aslında bu işleyişin temel halkasını oluşturuyor.
Devops’un İşleyişi
İlk olarak kodun kaynak kontrol sistemine aktarımı sağlanıyor ve düzeltilmek amacıyla kaynak denetleme sisteminden çekiliyor. Yapılan testler aktif hale getiriliyor ve devamlı kombine edilme durumu sunucusunun, sürümlerinin ve yapılarının üretimi yapılıyor. Entegrasyon testlerinin yanı sıra kullanıcı testleri de yapılıyor. Testleri başarıyla geçen üretimler bu yapıların depolanmasıyla saklanıyor. Otomatik bir şekilde bir düzenleme aracı vasıtasıyla dağıtım yapılıyor ve çevre yapılandırılıyor. Daha veritabanlarının ve uygulamaların güncellenmesi yapılarak son veriler elde ediliyor. Testi tamamlanmış uygulamalar da kullanıcılara bir aksaklık yaşamalarına gerek olmadan bir aktarım yapılıyor. Uygulama ve ağ verileri takip ediliyor ve karşılaşılan sorunlar oluşmadan engellenmeye çalışılarak verimlilik seviyesi arttırılıyor. Bunların hepsinin geneline bakıldığı vakit her aşamanın iyileştirilmesi biraz daha yapılarak baştan yapılıyor. Buradaki temel nokta bu işleyişin sıralamasının doğru bir şekilde yapılması. Bu sıralamanın düzgünlüğü demek verimliliğin ve çevikliğin de artması olarak ifade edilebilir.
Ürünlerin sürekli olarak dağıtımının yürütülmesi de bazı aşamalara bağlı. Konfigürasyon yönetim sistemi, dağıtım otomasyonu, altyapı otomasyonu, altyapı izleme, log yönetimi, uygulama ve performans yönetimi adı altında 6 başlık altında bu aşamalar sıralanabilir.
Agile ve Devops
Devops ve Agile arasında güçlü bir bağ bulunuyor. Agile yazılım geliştirme, ürün yöneticileri ile müşteri arasında bazı vakitler de kalite kontrolü yapanlar arasında yapılan iş birliği ile bir zenginliği kendilerine hedef yapıyor ve bu sayede kalitesi daha yüksek daha yoğun ve sorunsuz mal çıktısı elde edilmiş oluyor. Bu vesileyle de müşteri için ortaya çıkartılan değer ve sunulan hizmet de benzeri bir şekilde yüksek oluyor. Devops, aslında yazılım geliştiricilerin sonucu olan bu ürünlerin diğer sistemler ile ilişkisinin de müşteriye gösterilen değerin ana bir parçası olarak değerlendiriyor ve bu sayede ürün geliştiricisi olanlar, sistemlerin etkileşimini de hesaplarına katarak daha sağlıklı sonuçlara ulaşacağından bahsediyor. Özet ile, DevOps kolay anlatım ile Agile ilkelerini daha da büyülterek yalnızca üretilen kodu değil yapılan hizmetin de tamamını göz önünde bulundurduğundan söz edilebilir.
Devops’un Araçları
Devops’un araçları sonuca ulaşıp başarı sağlamak için kullandığı argümanlar olarak ifade edilebilir. Bu araçlara veritabanı, konfigürasyon yönetimi, uygulama dağıtımı, izleme, kaynak kodu versiyon kontrolü, yapılandırma ve test, zengin kaynak yönetimi, sürekli entegrasyon, bulut ve middleware örnek olarak verilebilir. Bu araçlar daha da arttırılabilir olsa da başlıca Devops araçları olarak yukarıda sayılan araçlar örnek olarak gösteriliyor.