Devops ifadesini seneler önce gittiğim bir eğitimde görmüştüm. Development ve Operation ifadelerini anlatarak devam ediyordu. Bu blog yazısını bilgilerimi tazelemek için izlediğim eğitim kapsamında bulunan konu başlıklarını araştırarak yazıyorum. Devops ekibi görse göz yaşlarını tutamazdı 😀
Teknoloji dünyasında her zaman geliştiriciler ve operasyon mühendisleri arasında belirgin bir ayrım olmuştur. Geliştiriciler, yeni uygulamalar ve özellikler oluştururken, operasyon mühendisleri bu uygulamaların çalışacağı altyapıyı kurar ve yönetir. Ancak, bu iki ayrı rol arasında yeterli iş birliği olmadığında, ortaya çıkan sonuç genellikle karmaşa, zaman kaybı ve düşük performanstır. Bu iki rol arasındaki iş birliğini sağlamak ve olumsuzlukları gidermek için ortaya Devops kavramı oluşturuldu.
Patrick Debois “DevOps bir insan sorunudur.” der. Bu sözüyle DevOps’un özünde bir teknoloji veya araç probleminden çok, insanlar ve kültürle ilgili bir mesele olduğunu vurgular.
DevOps, bu iki farklı rolü bir araya getirerek bir sinerji yaratmayı amaçlar. Bu, uygulama ve sistemleri birlikte ele almayı gerektiren bir yaklaşım. Geliştirme ve operasyon ekipleri, fikir aşamasından üretim sürecine kadar her adımı iş birliği içinde yürütür. DevOps sadece bir süreç veya araç değil; aynı zamanda bir kültür değişikliğidir. Bir teknoloji problemi gibi görünse de özünde bir insan ve iş birliği sorunudur.
DevOps’un Temel Değerleri: CAMS
DevOps, dört temel değere dayanır: Kültür-Culture, Otomasyon-Automation, Ölçüm-Measurement ve Paylaşım-Sharing (CAMS). Bu değerler, organizasyonlarda DevOps kültürünü hayata geçirmek için bir rehber görevi görür.
- Kültür (C): Ekipler arasında iş birliği ve şeffaflığı teşvik eden bir ortam yaratmak, DevOps’un temelidir. Kültür, yalnızca ekiplerin bir arada çalışmasını sağlamakla kalmaz, aynı zamanda karşılıklı anlayışı ve ortak bir vizyonu güçlendirir.
- Otomasyon (A): Tekrarlayan görevlerin otomasyonu, ekiplerin stratejik işlere odaklanmasını sağlar. Ayrıca hız ve verimliliği artırarak kaliteyi yükseltir.
- Ölçüm (M): Doğru metrikleri belirlemek ve ölçmek, sistemin mevcut durumunu anlamak ve yapılan değişikliklerin etkisini değerlendirmek için gereklidir.
- Paylaşım (S): Bilgi paylaşımı, DevOps kültürünün kalbinde yer alır. Ekiplerin dokümantasyon, eşli çalışma veya mentorluk yoluyla bilgi alışverişinde bulunması, organizasyonel büyümeyi destekler.
DevOps’un Rehber İlkeleri: Üç Yol
DevOps’un felsefesini anlamak için Gene Kim tarafından geliştirilen 3 Yol ilkesini inceleyebiliriz. Bu ilkeler, DevOps değerlerini günlük hayata taşımanın stratejik yollarını sunar.
- Sistem Düşüncesi ve Akış İyileştirme: Tüm sistemi optimize etmeye odaklanmak gerekir. Bir departmanın performansını artırmak, eğer genel sistemi olumsuz etkiliyorsa faydasızdır.
- Geri Bildirim Döngüleri: Kısa ve etkili geri bildirim döngüleri, sorunların erken tespit edilmesini sağlar. Bu, zaman ve maliyet açısından büyük kazançlar sunar.
- Sürekli Deney ve Öğrenme: Deneme yanılma yoluyla öğrenme kültürünü teşvik etmek, yenilik ve gelişimin önünü açar. Ekipler, hatalardan ders çıkararak daha iyi bir iş akışı yaratabilir.
Hangi DevOps Araçlarını Kullanılıyor?
DevOps araçları, süreçleri destekleyen birer yardımcıdır; ancak insanlar ve süreçlerden sonra gelir. Araç seçerken şu temel yaklaşımları benimsemek önemlidir. Araç seçimleri bu doğrultuda yapılmalıdır.
Doğru Yaklaşım: İnsanlar ve Süreçler Araçlardan Önce gelmelidir.
Alex Honor’un meşhur sözü bunu çok iyi açıklar: “İnsanlar, süreçlerden çok araçlardan önemlidir.”
Başarılı bir DevOps uygulaması için aşağıdaki sıralamanın uygulanması gerektiği ifade ediliyor.
- İnsanları ve sorumluluklarını belirleyin.
- İş akışını tanımlayın.
- Süreci desteklemek için doğru araçları seçin.
Araçlar, insanları bir araya getirmeli ve iş birliğini teşvik etmelidir. Unutmayın, “en iyi araç” diye bir şey yoktur; yalnızca sizin ihtiyaçlarınıza en uygun araç vardır.
Kullanılması Planlanan Araçların Seçiminde Temel İlkeler
- Basit Tutun (KISS): Daha fazla araç, daha fazla karmaşıklık demektir. Sadece ihtiyacınız olan araçları kullanın.
- Araç Zinciri: Araçlar birbiriyle entegre çalışmalı ve değer akışını desteklemelidir.
- Dinamik Uyumluluk: Araçlar, değişen altyapılara adapte olabilmelidir.
Popüler DevOps Araçları
İhtiyacınıza göre kullanabileceğiniz araçlardan bazıları:
- Kubernetes: Konteyner düzenleme.
- Terraform: Altyapıyı kod olarak yönetme.
- Ansible, Puppet, Chef: Yapılandırma yönetimi. (Bunları hiç duymamış olmakla birlikte izlediğim eğitimde adı geçti)
- Jenkins: Sürekli entegrasyon ve teslimat.
- Docker: Konteynerleştirme.
- GitHub: Kaynak kod yönetimi ve iş birliği.
DevOps’un Temel Uygulama Alanları
DevOps’u uygulamaya geçirmek için belirli alanlara odaklanmak gerekir. Bu alanlar, DevOps’un hem teorik hem de pratik boyutlarını kapsar.
- Kültür: Ekipler arasında güven ve iş birliğini teşvik eden bir ortam yaratmak. İnsanların öğrenebileceği, başarısız olabileceği ve deneyimlerini paylaşabileceği bir ortam oluşturmak şarttır.
- Süreç: Agile ve Lean metodolojilerinin entegrasyonu, DevOps süreçlerinin temelidir. Geri bildirim döngüleriyle sürekli iyileştirme sağlanır.
- Kod Olarak Altyapı: Sistemleri manuel yerine programlanabilir hale getirerek yeniden üretilebilirlik ve hız kazanılır. Bu, altyapının bir yazılım gibi ele alınmasını sağlar.
- Sürekli Teslimat: Yazılım değişikliklerini hızlı, güvenli ve sürekli bir şekilde teslim etmek. Bu, müşterilere daha hızlı değer sunmayı mümkün kılar.
- Site Güvenilirlik Mühendisliği: Yüksek düzeyde gözlemlenebilirlik ve otomasyonla sistemleri yönetmek, sistemlerin güvenilirliğini artırır.
DevOps ile İş Performansını Nasıl Artırabilirsiniz?
DORA (DevOps Araştırma ve Değerlendirme) raporlarına göre, DevOps uygulamalarını benimseyen şirketler, yazılım teslimat performansında ciddi bir artış gösteriyor. Özellikle sürekli teslimat ve site güvenilirlik mühendisliği gibi uygulamalar, yalnızca operasyonel mükemmeliyeti değil, aynı zamanda iş performansını da iyileştiriyor.
Yüksek performans gösteren ekiplerin ortak noktası, kısa teslimat süreleri ve hızlı geri dönüşlerdir. DevOps, sadece teknolojik değil, aynı zamanda stratejik bir avantaj sağlar.
DevOps Yolculuğuna Nereden Başlamalı?
DevOps, bir gecede uygulanabilecek bir süreç değildir. Başlangıçta küçük ve ölçülebilir adımlarla ilerlemek gerekir:
- Kültürel Değişim: Siloları yıkmak ve ekipler arasında iş birliğini artırmak.
- Otomasyona Geçiş: Tekrarlayan görevleri otomatikleştirerek verimliliği artırmak.
- Doğru Metrikleri Belirlemek: Başarıyı ölçmek için somut verilere odaklanmak.
- Bilgi Paylaşımı: Ekiplerin deneyim ve bilgilerini paylaşmasını teşvik etmek.
DevOps, bir organizasyonun sadece teknolojisini değil, aynı zamanda kültürünü de dönüştürür. İnsanları, süreçleri ve araçları bir araya getirerek daha hızlı, güvenilir ve etkili bir iş modeli sunar. Eğer organizasyonunuzda DevOps’a yer vermek istiyorsanız, ilk adımı atmak için hiçbir zaman geç değildir. Başlangıç noktanız, kültürünüzü değerlendirmek ve ekiplerinizi birleştirmek olabilir. Unutmayın, DevOps yolculuğu bir maraton, bir sprint değildir.