DevOps bir IT ürününün üretilme ve ürünün hayatını sağlıklı bir şekilde sürdürmesi için bütün paydaşların optimum verimle birlikte efektif çalışabildiği felsefik köklere de sahip olan bir frameworktür.
Development ve Operations kelimelerinin birleştirilmesinden oluşan bir
terimdir.
Yazılımcılar (dev) ve sistem yöneticilerinin (ops); tasarım, geliştirme, test ve yayınlama aşamalarından oluşan yazılım yaşam döngüsünde ve daha sonrasındaki destek aşamasında ortaklaşa çalışmaları için gerekli faaliyetlerin bütününü temsil eder.
Dev : “Dev”, genelde yazılım geliştiricileri için kullanılır, ancak gerçekte daha geniş bir topluluğu temsil eder ve “yazılım geliştirme için çalışan herkes”i kapsar.
Ops : “Ops”, “Dev”e göre daha geniş bir kapsamı olup sistem mühendisleri, sistem yöneticileri, sürüm mühendisleri, veritabanı yöneticileri (DBAs), network mühendisleri, güvenlik uzmanları ve daha birçok değişik alt displinler için kullanılır.
DevOps’un Getirdiği Özellikler
1. Yazılım ile operasyon arasında köprü kurar.
2. Yazılımcı, kodunu yazdığında, yazılım tek tuş ile derlenir ve sunucuda çalışır hale gelir.
3. Üzerindeki testler otomatik olarak çalışır. Derleme veya testlerde problem
varsa, anında rapor edilir.
4. Yazılım, istenen periyodlarda, beta ortamına aktarılır ve kullanıcılar
tarafından testlerinin yapılması sağlanır. Sonraki adımda, üretim
sistemlerine yayılır.
5. Üretimde son yayınlamadan ötürü hata çıkarsa, otomasyon sayesinde
DevOps anında geri alınmasını sağlayabilir.
6. Sistem izleme sayesinde, sistem logları ve kaynak kullanımları monitor
edilir. Loglarda çıkan hatalar ya yerinde müdahaleyle çözülür, ya da
yazılımcılara rapor edilir.
7. Hata takip sistemiyle, kullanıcılardan gelen hatalar toplanır ve yazılım
ekibine rapor edilir.
DevOps’un Ortaya Çıkmasındaki İhtiyaçlar
• Yazılım ürünlerinin yeni sürüm çıkma hızı
• Ürünler arası rekabetin artması
• Müşteri memnuniyeti için kaliteli ürün elde etme zorunluluğu
• Şirketler kullanıcı deneyimini iyileştirmek, hataları düzeltmek veya yeni özellikler eklemek için bazen her gün yazılım değişikliği yapılan ve kullanıcılara gerçek zamanlı sunulan ortamda yazılım üretiminin, çeviklik (agility) ile yerine getirilmesi kaçınılmaz hale gelmiştir.
DevOps’un Temel Prensipleri
• Otomasyona Dayalı
• Sürekli Yayınlama Yapan
• Takip ve Uyarı Sistemlerine Sahip
• Güvenlik Sistemlerine Yatırım Yapan
• Test Odaklı Yazılım Geliştirme’yi (TDD) Benimsemiş
• Davranış Odaklı Yazılım Geliştirmeyi (BDD) Benimsemiş
DevOps Sürecine Dahil Ekipler
• Yazılım geliştiriciler
• Veritabanı Yöneticileri
• Sistem Yöneticileri
• Sistem Analistleri
• Güvenlik Uzmanları
• Destek Elemanları
DevOps Sürecinin Döngüsü
1. Kod, kaynak kontrol sistemine aktarılır (check in/push)
2. Kod, derlenmek için kaynak kontrol sisteminden çekilir (pull)
3. Testler çalıştırılır. Sürekli entegrasyon (continuous integration) sunucusu, yapıları (build) ve sürümleri (release) üretir.
4. Entegrasyon ve kullancı testleri yapılır.
5. Testleri geçen çıktılar (artifacts) ve yapılar (build) depolanarak saklanır.
6. Otomatik bir sürümleme (release) aracı kullanılarak dağıtım yapılır.
7. Ortam (environment) konfigüre edilir.
8. Veritabanları güncellenir.
9. Uygulamalar güncellenir.
10. Test edilmiş uygulamalar, kullanıcılara bir kesinti yaşamalarına gerek kalmadan aktarılır.
11. Uygulama ve ağ performansı izlenir (monitoring) ve sorunlar oluşmadan engellenmeye çalışılır.
12. Her adım biraz daha iyileştirilerek baştan alınır.
DevOps Uygulamaları
• Altyapı Otomasyonu
• Konfigürasyon Yönetimi
• Dağıtım Otomasyonu
• Altyapı İzleme
• Log Yönetimi
• Uygulama ve Performans Yönetimi
• Güvenlik Yönetimi
DevOps Yöntemleri
• Sürekli tümleştirme ve sürekli teslim (Continuous integration and continuous delivery - CI/CD)
• Sürüm Denetimi (Version Control)
• Çevik Yazılım Geliştirme (Agile Software Development)
• Kod olarak Altyapı (Infrastructure as Code)
• Yapılandırma Yönetimi (Configuration Management)
• Sürekli İzleme (Continuous Monitoring)
DevOps Pozisyon Mudur?
• DevOps tek bir role sığdırılabilecek bir kavram değildir.
• Uygulama yaşam döngüsündeki fazlara dahil olan herkes DevOps kültürünü sahiplenmelidir.
• Ancak aynı zamanda bir çok şirkette sadece bu konuya odaklanan kişiler de vardır.
• Bu roldeki kişilerin pozisyonları DevOps Mühendisi ya da DevOps Uzmanı olarak geçer.
DevOps'un Avantajları
Hız :Yüksek bir hızda hareket ederek müşterileriniz için daha hızlı yenilik yapabilir, değişen pazarlara daha iyi uyum sağlayabilir ve iş sonuçlarına ulaşmada daha verimli hale gelebilirsiniz. DevOps modeli, geliştiricilerinizin ve operasyon ekiplerinizin bu sonuçları elde etmesine imkan tanır. Örneğin mikro hizmetler ve sürekli teslim, ekiplerin hizmetleri sahiplenmesine ve ilgili güncellemeleri daha hızlı sağlamasına imkan tanır.
Hızlı Teslim:Yenilikler yapıp ürününüzü daha hızlı geliştirebilmek için yayın sıklığını ve hızını artırın. Yeni özellikleri ve hata düzeltmelerini ne kadar hızlı yayınlayabilirseniz, müşterilerinizin ihtiyaçlarına o kadar hızlı yanıt verebilir ve rakipleriniz karşısında avantaj sağlayabilirsiniz. Sürekli entegrasyon ve sürekli teslim, derlemeden dağıtıma kadar yazılım yayınlama sürecinin tamamını otomatikleştiren uygulamalardır.
Güvenilirlik:Uygulama güncellemelerinin ve altyapı değişikliklerinin kalitesinden emin olarak hem daha hızlı ve güvenilir şekilde teslim gerçekleştirebilir hem de son kullanıcı deneyiminin olumlu kalmasını sağlayabilirsiniz. Sürekli entegrasyon ve sürekli teslim gibi uygulamalar aracılığıyla her değişikliğin işlevsel ve güvenli olup olmadığını test edin. İzleme ve günlüğe kaydetme uygulamaları, performansı gerçek zamanlı olarak takip etmenize yardımcı olur.
Ölçek:Altyapınızı ve geliştirme süreçlerinizi gerekli ölçekte çalıştırın ve yönetin. Otomasyon ve tutarlılık, karmaşık ya da değişen sistemleri verimli bir şekilde ve daha az riskle yönetmenize yardımcı olur. Örneğin kod olarak altyapı modelini kullanmak geliştirme, test ve üretim ortamlarınızı daha verimli ve tekrarlanabilir şekilde yönetmenize yardımcı olur.
Geliştirilmiş İş Birliği:Sahiplenme ve sorumluluk gibi değerleri vurgulayan bir DevOps kültür modeli altında daha etkili ekipler kurun. Geliştiriciler ve operasyon ekipleri daha yakın bir şekilde iş birliği yapar, birçok sorumluluğu ortak olarak üstlenir ve iş akışlarını birleştirir. Bu sayede verimsizlikler azalır ve zaman tasarrufu sağlanır (örneğin geliştiriciler ile operasyon ekibi arasındaki devir sürelerinin kısalması ve kodun çalışacağı ortam göz önünde bulundurularak yazılması).
Güvenlik:Denetim ve uygunluktan ödün vermeden daha hızlı hareket edin. Otomatik uygunluk politikaları, ayrıntılı denetimler ve yapılandırma yönetim teknikleri sayesinde güvenlikten taviz vermeden bir DevOps modelini benimseyebilirsiniz. Örneğin, kod olarak altyapı ve kod olarak politika ile, uygunluğu gerekli ölçekte tanımlayabilir ve ardından izleyebilirsiniz.
Sizlere bu yazımda yazılım ekipleriyle operasyon ekiplerinin bir arada çalıştığı DevOps sürecinden bahsetmeye çalıştım. Karantina günlerinde hangi alana daha yakın olduğumu araştırırken DevOps kavramı içinde buldum kendimi kim bilir belki de DevOps Mühendisi olarak karşınıza çıkarım. Umarım faydalı bir içerik olmuştur. Diğer yazımda DevOps araçlarından detaylı bir şekilde bahsetmeye çalışacağım. Hoş kalın hoşçakalın ve en önemlisi de bu süreçten en az şekilde etkilenmek için evde kalın...
Yararlandığım Kaynaklar:
https://www.atlassian.com/devops
https://en.wikipedia.org/wiki/DevOps
https://newrelic.com/devops/what-is-devops
Yararlandığım Kaynaklar:
https://www.atlassian.com/devops
https://en.wikipedia.org/wiki/DevOps
https://newrelic.com/devops/what-is-devops
Yorumlar
Yorum Gönder