Devops&Cloud
Yaklaşık 5 sene once çalıştığım firmada digital transformasyon projelerinde yer almaya başlamıştım. Cloud dönüşüm ve devops bu transformasyonun ana başlıklarıydı. Bir taraftan cloud ve devops konularının birbiri ile ilişkilerini öğrenirken bir taraftan da bunu deneyimliyorduk. Bu 2 konu birbirinden farklı mıydı? Yoksa birisi diğerine hizmet mi ediyordu? Bazen bu ikili klasik yumurta tavuk problemine dönüşüyordu. Bir süre sonra bu 2 konu ile ilgili bir yazı yazmaya karar verdim.
2021 yılının başında Akbank’da işe başladığım zaman Cloudworks ekibi ile beraber yine bir dönüşüm projesi içinde yer aldım.Şu anda da dönüşümün devamı olan bir projede görev yapmaktayım. Aradan geçen yaklaşık 2 sene süresi boyunca cloud ve devops ile ilgili yeni şeyler öğrenmeye ve uygulamaya devam ediyoruz.&
Yaklaşık 3 sene önce yazdığım Devops&Cloud konulu yazımı tekrar yazmaya karar verdim.
Yazının bundan sonraki kısmında bahsedeceğim cloud ve devops konuları ile ilgili yorumlarım bu 5 sene içerisinde edindiğim bilgi ve tecrübelerden oluşmuştur.
Devops teriminin ilk akla getirdiği anlam geliştirme ve operasyon ekiplerinin yakın çalışmasıdır. Devops’un yaygın bilinen diğer bir içeriği ise yapılan işlerin otomasyonudur.
Şimdi gelin beraber bu 2 konuya göz atalım.
Geliştirme ve operasyon ekiplerinin beraber çalışması ne demek? Zaten biz geliştiriciler eskiden beri operasyon işlerine yardım ediyoruz. Kurulum prosedürlerini operasyon ekibi ile beraber hazırlıyoruz. Ürünün fonksiyonlarını operasyona anlatıyoruz. Canlıda problem çıkınca “workaround” çözümler sunuyoruz. Log vs inceleyip problemi bulmaya çalışıyoruz. Daha ne yapalım J Operasyoncular da bu bahsedilen işlerin parçası olup developerlar ile beraber çalışıyorlar. E onlar da daha ne yapsın?
İki ekibin beraber çalışması bunlardan daha fazlasını ifade etmektedir. Şöyle ki devops yaklaşımına göre şirketlerde “multi disipliner” yapılar kurulmalı ve bu ekiplerde geliştirme, operasyon ve diğer gerekli disiplinlerden elemanlar bir arada çalışmalıdır. Bu ekipler kısa süreli oluşturulan ekipler olabildiği gibi daha uzun süreli ekiplerin örneğin scrum ekibinin bünyesinde olabilirler. Bu şekilde operasyon elemanı geliştirme elemanı ile beraber ürün geliştirme safhasında yer alarak üründe operasyoncu bakış açısı ile gereksinimlerin gerçekleştirilmesini sağlar. Bu ortak çalışma modeli ile geliştirme elemanı operasyoncu bakış açısını öğrenip özümserken operasyoncu da geliştirme bakış açısını öğrenip özümser.
Biraz da otomasyon konusuna göz atalım. CI (Continuous Integration) kapsamında geliştiriciler tarafından yazılan unit testler, entegrasyon testleri, testçiler tarafından yazılan fonksiyonel testler belirli stratejilere göre örneğin her “code commit”te veya periyodik olarak geceleri çalışması şeklinde çalıştırılmalı ve tüm testlerin başarılı olarak geçmesi garanti altına alınmalıdır. Bu testler kullanılan CI tool’ları ile otomatik olarak çalıştırılmalıdır. CD (Continuous Delivery yada Continuous Deployment); çıkartılacak her release in canlıya çıkacak şekilde hazır olmasını yada otomatik olarak canlıya deploy edilmesini ifade etmektedir. Birçok şirket CD’i Continuous Delivery olarak yani canlıya çıkacak şekilde hazır olması şeklinde uygulamaktadır. Continuous Deployment daha çok olgunlaşmış bir yazılım geliştirme ve product deployment organizasyonu ve pratiklerini ifade etmektedir. Tam bu noktada cloudification’ın otomasyona nasıl hizmet ettiğini düşünecek olursak CI ve CD için gerekli ortamlar ihtiyaç duyulduğu anda geçici olarak cloud üzerinde yaratılabilir. Böylelikle kaynak yönetimi verimli olarak sağlandığı gibi ayrıca test ortamlarının canlı ortamlara benzer şekilde oluşturulması sağlanarak gerçeğe yakın testler yapılması sağlanabilir. CI ve CD, kullanılan devops araçları tarafından pipeline denilen yapılar yaratılarak ve run edilerek sağlanır. Yine bu noktada cloudification söz konusu pipeline’ların yaratılmasına hizmet eder ve kullanılan cloud sistemin elemanları/parçaları bu pipeline’lar içerisinde yer alır.
DEVOPS, IT dünyasında genel olarak kabul gören CAMS modeli ile açıklanabilir.
C: Culture
A: Automation
M: Measurement
S: Sharing
Şu ana kadar dikkat ettiyseniz C ve A kavramlarını açıkladık.
“Measurement” kavramı; sistem metriklerinin ve iş metriklerinin tanımlanması ve bu metriklerin sürekli olarak gözlenmesini ifade etmektedir. Sistem metrikleri ölçülüp izlenerek sistem ile ilgili olası problemler proaktif olarak gözlemlenir ve gerekli önleyici aksiyonlar alınır. Aynı zamanda problem anlarında sistemde probleme sebep olan kaynaklar bulunur. İş metrikleri tasarlanan ürünle ilgili çıktıların belirlenmesi, sürekli olarak izlenmesi ve gerekli taraflar ile (business domain gibi) paylaşılmasını ifade etmektedir. Bu tarz iş metrikleri sistemin performansı, sistemden elde edilen çıktılar vb. gibi verilerin değerlendirilmesi açısından önem arz etmektedir.
Sharing kavramı da 2 alt başlık altında incelenebilir.
Visibility
Knowledge sharing
“Visibility”; ekibin yaptığı tüm işlerin tüm paydaşlar ile düzenli olarak paylaşılmasını ifade eder. Örnek verecek olursak geliştirme grubunun yaptığı işler product owner tarafından görünebilir olmalı, PO düzenli olarak yapılan işleri görmelidir. Bu sayede geliştirme tamamen bittiğinde PO’nun, istemediği bir ürünle karşılaşma olasılığı olmaz yada azalır. PO süreç içerisinde yapılan işlerle ilgili bilgilendirildiği için ortaya çıkacak olası yanlışlıklar çok erken zamanlarda fark edilerek düzeltilmesi sağlanır.
“Knowledge sharing” ise ekip içerisinden bilginin bir kişi üzerinde toplanılmasını engelleyip bilginin ekip üyelerine dağılmasını sağlar. Knowledge sharing kapsamında yapılan aktiviteleri daily standuplar, retrospectiveler, dokümantasyon hazırlama ve paylaşma , brown bag, teck talks, konferans gibi toplantılar düzenlemek olarak sıralayabiliriz.
Devops konusunu bu kadar ayrıntılı açıkladıktan sonra cloud konusuna da bir göz atalım. Cloud yada cloud dönüşümü, Devops’a hizmet eden bir teknoloji olarak konumlanmaktadır.
Devops’da bahsedilen kültürel dönüşüm cloud sayesinde sağlanmaktadır. Yeni kültürde beraber çalışan farklı disiplindeki insanların farklı bakış açıları cloud’da hayat bulmaktadır. Geliştirme yapan çalışanın hızlı bir şekilde talep ettiği çalışma ortamı operasyon çalışanı tarafından cloud üzerinde hızlı ve canlıya yakınsamış bir şekilde sağlanmaktadır.
Automation konusuna cloud un nasıl hizmet ettiğini, Devops’un otomasyon başlığını anlatırken bahsetmiştim. Bu sebeple bunu tekrar etmeyeceğim.
Measurement konusuna gelecek olursak IT piyasasında kullanılan cloud platformları gerek sistem parametreleri gerekse iş parametrelerini kullanıcılara yansıtacak şekilde dashboardlar sunmaktadır.
Sayın okuyucular. Sizlerin de yazıdan anlayacağınız üzere ben cloud’un Devops’a hizmet ettiğini düşünüyorum. DEVOPS bir mind set değişikliği, cloud ise bu değişikliğe hizmet eden teknolojiler bütünlüğüdür. Bazı kaynaklarda şirketlerin devops maturity analizlerinde de bu bakış açısı yansıtılmaktadır.
Ama halen bir parça “tavuk-yumurta” denklemini düşünmeden edemiyorum.