DEVOPS VE BULUT
İçerisinde bulunduğumuz BT sektöründe Bulut Bilişim ile birlikte en çok popüler olan ve hemen her gün duyduğumuz yaklaşımlardan biridir DevOps. Peki nedir bu DevOps? DevOps, yüksek hızlı BT organizasyonlarını inşaa etmeye ve işletmeye odaklanan kültürel ve teknik bir yaklaşımdır. DevOps’un sektörümüzde hızla ilerlemesi bulut teknolojisinden maksimum faydayı almak isteyen kullanıcılar ile başladı ve kaynakların hızlı, ucuz bir şekilde tahsis edilmesine imkan verdi. Geleneksel BT uygulamaları, bulutun sunduğu esneklik ve hız için tasarlanmamıştır.
DevOps, iletişim ve işbirliğini teşvik eden kültürel değerleri savunmaktadır. “Devops” kelimesi “Geliştirme (Development)” ve “İşlemler (Operations) ” kelimelerinin bir kombinasyonudur. Bu iki uzmanlık alanı arasında yakın bir ilişki anlamına gelmektedir. Birçok geleneksel işletmede bu gruplar birbirinden ayrılmıştır. Geliştiriciler (Developers) uygulamaları oluştururken, operasyon ekipleri bu uygulamaların yönetildiği altyapıları kurar ve yönetir. Çoğu zaman gruplar arasındaki iletişim yalnızca ticket sistemi gibi resmi bir mekanizma yoluyla gerçekleşir. Her biri iyi tanımlanmış özelliklere sahip birbirinden farklı gruplara sahip olmak daha verimli gözükse de bir gruptan diğerine geçişler gerekmektedir. Örneğin şirketlerde çoğu zaman full stack yapılandırmak için birden çok grup oluşturmak gerekmektedir. Bir grup uygulamayı geliştirirken, ikinci bir grup altyapı için VM yapılandırır, üçüncü bir grup ise VM kurulduktan sonra veritanını yapılandırmaktadır ve bu süreç böyle devam eder. Her diğer gruba gönderme işlemi gecikmelere neden olmaktadır.
Diğer bir problem de her grubun kendi prosedürlerine ve araçlarına sahip olması gereksinimdir. Ortak bir yaklaşım eksikliği, uzun inşa süreleri ve hataları da beraberinde getirmektedir. Buna karşın, DevOps’u benimseyen şirketler genellikle uygulamaları oluşturmak ve bu uygulamaların kullandığı altyapıları hazırlamak ve yönetmek için birlikte çalışan küçük ekipler kullanmaktadırlar. Bir özelliği gelişitmek için birlikte çalışmak, iletişim ve gruplar arası sıkıntılardan kaynaklanan sorunları ortadan kaldırmaktadır. Birlikte çalışan ekiplerden oluşan hızlı kararlar beraberinde hızlı hareket eden şirketlere dönüşür.
DevOps Teknik Değerleri
DevOps yaklaşımını uygulayan şirketler, yüksek hız için tasarlanmış iş akışlarına sahiptir. Yazılımları geliştirme, test etme, staging ve ardından prod ortamlara aktarma işlemleri hızla ilerlemektedir. Genellikle bulut üzerinde bulanan ortamlar hızlı bir şekilde hazırlanır, yapılandırılır ve birbirleriyle tutarlı olur. Yazılımlar, pipeline üzerinde bir aşamadan diğerine ya otomatik olarak ya da basit bir manuel adımla yükseltilir.
Uzun süren geliştirme süreleri ve zorlu sürümlerden kaçınmak için şirketler yazılımlarını tekrar tekrar release etmektedirler. Asgari uygulanabilir bir ürünle başlanır, müşteri geribildirimleri alınır, ürün iyileştirilir ve yazılım tekrar release edilir. Ürünün her yeni sürümünde yalnızca birkaç değişiklik olduğu için, her release ardından hata ayıklaması daha kolaydır.
Bu iş akışlarını sağlayan DevOps yaklaşımı içerisinde çeşitli teknolojiler vardır. Bunların önde geleni ise otomasyondur.
Automation (Otomasyon)
Otomasyon, DevOps’u oluşturan tüm kalıp ve uygulamalrın temelini oluşturmaktadır. Bir otomasyon platformu altyapınızı kod olarak tanımlama olanağı verir. Altyapınız kod olarak tanımlandığında şunları yapabilirsiniz :
- Hataya eğilimli, zaman alan manuel görevleri ortadan kaldırırsınız.
- Geliştirme, test ve production ortamlarını standartlaştırırsınız.
- Otomatik release pipeline’lar oluştrabilirsiniz.
- Geliştirme ve operasyon ekipleri arasında işbirliğini geliştirebilirsiniz.
Altyapı kodunuza, uygulama kodunuzda olduğu gibi davranabilirsiniz. Kod güncellenebilir, test edilebilir, tekrarlanabilir. Uygulamalarınız için oluşturduğunuz pipeline’ı altyapı kodlarınız içinde kullanabilirsiniz. Otomasyon altyapınızı koda dönüştürdüğünden, otomatik testler kullanabilirsiniz. Uyumluluk ve güvenlik testlerinin dağıtım pipeline’ı içerisinde inşa edebilir, böylece sorunları daha sonra değil daha erken yakalayabilirsiniz. Böylece yeni yapılandırmaların güvenli ve istikrarlı olmasını sağlayabilirsiniz.
Bulutun tüm avantajlarından yararlanmak için, kaynakları hızla döndürmek ve yığının tamamını yapılandırmak için otomasyon kullanılmalıdır. Otomasyon ile altyapınızı dakikalar içerisinde yapılandırıp, uygulamalarınızın çalışacağı ortamları dilediğiniz modelde ölçeklendirebilirsiniz. (Scale up, down yada horizontally) İşlemler otomatik olduğu için sonuçlar bir çalışmadan diğerine uyumlu olacaktır.
Otomasyonun diğer bir avantajı altyapı kodunun insan tarafından okunabilir metin dosyaları olarak ifade edilmesidir. DevOps, şeffaflığı teşvik eder. Altyapınızı kod olarak tanımlamak, ekipteki herkes için erişilebilir ve okunabilir anlamına gelmektedir. Ek olarak bu kodları sürümlendirilmiş ve güvende tutulan bir kaynak kontrol sisteminde saklayabilirsiniz. Uygulama kodunuzla bir kaynak kontrol sistemi kullanmanın tüm avantajlarını, altyapı kodunuza eşit derecede uygulayabilirsiniz. Yapılandırma sürümleri arasındaki farklılıkların incelenmesi, önceki bilinen sistem kararlı durumundan bu yana tam olarak neyin değiştiğini gösterir. Böyle görünürlük kritik olarak önemlidir.
Aşağıdaki resim, otomasyon ile DevOps arasındaki ilişkiyi özetlemektedir.
*** Kaynak Chef.
Resim DevOps ve otomasyon arasındaki ilişkiyi vurguluyor. Her şey kod olarak altyapıya bağlı. (Infrastructure as a Code)
DevOps Çözümleri
Büyük işletmelerin DevOps ile çözülebilecek birçok zorluğu vardır. Aşağıdaki şekilde, geleneksel BT uygulamalarının yol açtığı en yaygın sorunlar gösterilmektedir.
*** Kaynak Chef.
Bir sonraki şekil DevOps ile sunulan alternatifleri göstermektedir.
*** Kaynak Chef.
Geleneksel süreçlerden DevOps iş akışına geçmek, bir işletmede büyük etkilere sahiptir.
Daha Fazla Çeviklik
DevOps yaklaşımını uygulayan şirketler, diğer şirketlere göre daha hızlı dağıtım yapabilmektedir. Daha hızlı çevikliğin sebeplerinden ikisi şunlardır:
- Altyapı, çalışma zamanı ortamları ve uygulamalar birleşik bir süreç kullanarak teslim edilir.
- Gruplar arası yönlendirmeler ve servis ticketları büyük ölçüde azaltılır.
Daha Fazla Güvenilirlik
DevOps yaklaşımını uygulayan şirketler, diğer şirketlere göre değişim başarı oranlar daha iyi ve iyileşme süreleri daha hızlıdır.
- Uyum ve güvenliğin geliştirme sürecine entegrasyonu, bloke edicileri ortadan kaldırır.
- Test, dağıtmadan önce sorunları yakalar.
- Shipping sıklığı ve daha küçük batch boyutları.
- Geliştirme ortamları, üretim ortamlarına çok yakındır.
Daha İyi Büyüme ve Kârlılık
DevOps yaklaşımını uygulayan şirketler, diğer şirketlere göre karlılık, pazar payı ve ürün hedeflerini ulaşmak konularında daha güçlü olacaktır.