DevOps, daha iyi yazılım üretmek için geliştirilmiş işbirliği hedeflerini ileri taşıma amacıyla ortaya çıkan disiplinler bütünü ve kültürüdür. Bu kültürün bir kaçınılmazı olan DevOps dönüşümü için işinize yarayacak veya yazılım geliştirme kalitenizi arttıracak birkaç yöntemi bu yazıda inceleyeceğiz. Konuya sadece geliştiriciler açısından bakmayacağız.

2010’lu yılların başlarında Cloud Computing yani Bulut Bilişim’in yaygınlaşmasıyla sektörümüze bir kavram daha girdi: DevOps. Development ve Operations kelimelerinin birleştirilmesiyle oluşturulan bu kavramın IT profesyonelleri ve şirketler için birbirinden farklı tanımları mevcut.

Örneğin AWS, DevOps’u: DevOps, kurumların ürünlerini geleneksel yazılım geliştirme ve altyapı yönetim süreçlerini kullanan kurumlara göre daha hızlı geliştirmesini ve iyileştirmesini sağlayarak, uygulama ve hizmetleri yüksek hızda sunma becerisini artıran kültürel felsefelerin, yöntemlerin ve araçların birleşimidir.” şeklinde tanımlarken, Microsoft Azure’un DevOps kavramına yaklaşımı; “Geliştirme (Dev) ve işlemlerin (Ops) bir bileşeni olan DevOps, müşterilere sürekli olarak değer sunmak için bir araya gelen kişiler, süreçler ve teknolojiler bütünüdür.” şeklindedir.

DevOps, farklı kurumlar için farklı anlam ifade etse de, daha iyi yazılım üretmek için geliştirilmiş işbirliği hedeflerini ileriye taşıyan süreç ve kültürler bütünüdür diyebiliriz. Yukarıdaki tanımlara ithafen, şirketinizde başlattığınız ya da başlatmayı düşündüğünüz DevOps dönüşüm süreçlerini başarıyla gerçekleştirebilmeniz için, sektörde hemen hemen standart haline gelmiş 10 yöntemden bahsedeceğiz.

1. DevOps kültürünü tanımak

Son zamanlarda DevOps’a muazzam bir ilgi olsa da, çok fazla organizasyon DevOps pratiklerini yanlış uyguluyor. Başarılı bir DevOps dönüşümü, bir dizi sürecin ve ekiplerin bu kültüre adapte olup, birlikte çalışması ile ortaya çıkıyor. Hem şirketin, hem çalışanların kendini tanıması, doğru araçların seçilmesi, Agile/Scrum yöntemi, problemlere doğru yaklaşımların bulunması gibi pek çok süreci içinde barındırıyor.

devops-dönüşümü-kültürü

2. Testleri Otomatikleştirmek

Agile yazılım geliştiricilerinin, kaliteli kod yazmaya odaklanmaları ve mümkün olduğunca sık ve erken test etme istekleri nedeniyle “kaliteye bulanmış” oldukları söylenir. Sonuç olarak test süreçlerini otomatikleştirmek, otomatik regresyon testi, test odaklı geliştirme (TDD) ve davranış odaklı geliştirme (BDD) gibi test yaklaşımlarını benimseyen çevik ekipler tarafından ilke edinilen yaygın bir uygulamadır. 

Test ortamlarınızın ve testlerinizin otomatikleştirilmesi, hızlı versiyon çıkmanıza ve kaliteli kod geliştirmenize olanak sağlar, ayrıca bu yaklaşım bir ürünün piyasaya sürülmesini onaylamadan önce bir çözümün yeterli kalitede olması gerektiğinde ısrar eden operasyon ekiplerinin tercih edeceği bir yöntemdir.

3. Konfigürasyon Yönetimi ile Büyük Resmi Görmek

Konfigürasyon Yönetimi, ürün ihtiyaçlarını en kısa zamanda, tam ve doğru olarak yerine getirebilmek için ürünü gerçekleştirme süreci içinde kaynakların planlanmasını, zamanlamayı ve maliyeti yönetir.

devops-dönüşümü-konfigürasyon-2

4. Sürekli Entegrasyon

Sürekli entegrasyon, geliştiricilerin kod değişikliklerini düzenli olarak merkezi bir havuzda birleştirdikleri, derleme ve testlerin yapıldığı bir DevOps yazılım geliştirme uygulamasıdır.

Sürekli entegrasyon(CI, Continuous Integration) çoğunlukla yazılım yayınlama sürecinin derleme veya entegrasyon aşamalarının otomatikleştirme işlemini ifade eder ve hem bir otomasyon bileşeni, hem de kültürel bir bileşen gerektirir. Sürekli entegrasyonun temel hedefleri, hataları daha hızlı bulmak ve ele almak, yazılım kalitesini artırmak ve yeni yazılım güncellemelerini doğrulamak ve yayınlamak için gereken süreyi azaltmaktır.

5. Sürekli Dağıtım

Sürekli entegrasyon(CI) süreçlerinden geçen kodun test, production, development gibi ortamlara otomatize şekilde alınmasını sağlayan süreçtir. Bu iki madde genel olarak birbirlerini tamamlayan süreçlerdir. 

6. Yüksek Erişilebilirlik

Yüksek erişilebilirlik(high availability) kavramı, IT sektöründe hemen hemen bütün sistemler için kullanılan bir terimdir. Amaç, sunucularınızdan storage’lara, database sistemlerine, network cihazlarına ve hatta elektrik sisteminize kadar sistemin sürekliliğini sağlamaktır.

7. Monitörleme

Adından da anlaşılacağı üzere monitörleme uygulamalarınızı, uygulamalarınızın çalıştığı sunucuları, test ortamlarınızı izlemeye verilen genel kavramdır. DevOps dönüşümlerinin en kritik adımı olan monitörleme, yaşadığınız problemlere nokta atışı çözümler bulmanıza olanak sağlamakla kalmayıp, uygulamanız için ihtiyaçları analiz edebilmenizi sağlar.

8. Felaket Kurtarma Çözümleri ve Kaos Mühendisliği

Felaket Kurtarma Çözümleri (Disaster Recovery) herhangi bir felaket durumunda, uygulamanın hacklenmesi, sunucuların fiziksel anlamda kullanılamaz hale gelmesi ve aklınıza gelecek herhangi bir durum için, verilerinizin başka bir lokasyonda tutulması anlamına gelir. 

Genel bulut sağlayıcılarının verdiği monitoring hizmetlerin yanında, open source uygulamalarla (Datadog, Zabbix, Elk Stack, vb.) da monitoring sürecini uçtan uca yönetebilirsiniz.

devops-dönüşümü-izlenebilecek-yontemler

9. Bilgi Paylaşımı ve Şeffaflık

Sürekli entegrasyon(CI) süreçlerinden geçen kodun test, production, development gibi ortamlara otomatize şekilde alınmasını sağlayan süreçtir. Bu iki madde genel olarak birbirlerini tamamlayan kavramlardır. 

devops-dönüşümü-şeffaflık

10. Danışmanlık

Yukarıda saydığımız maddeleri gerçekleştirmek kolay gibi gözükse de şirket içi DevOps ekibi kurmanın hem zor hem de maliyetli olacağını söylemek çok da yanlış olmaz.  Yine planlı bir şekilde danışmanlık alarak yukarıdaki süreçleri adım adım outsource edebilirsiniz. Böylelikle, DevOps dönüşümlerinizi tamamlarken, şirket içi adaptasyonu kolaylaştırmış olursunuz.