Search:

DevOps Nedir?

Continuous Integration vs Continuous Delivery vs Continuous Deployment

Category: DevOps
Category: DevOps

DevOps Nedir, Ne Değildir? - kloia Blog

DevOps, yazılımın geliştirilmesinden sorumlu takım(Dev) ile yazılımın işletmesinden sorumlu takım(Ops) arasındaki işbirliğini arttırmak amaçlı ortaya çıkan bir akımdır.

DevOps yaklaşımı ile “Yazılım Yaşam Döngüsü” otomasyona bağlanarak, yazılım ve sistem takımları arasındaki anlık bağımlılıkları yok etmek ve yazılımcıları operasyonel işlerden arındırarak, üstüne mühendislik pratiklerinin de uygulanması ile yüksek kalitede, daha sık ve daha sorunsuz canlı ortam çıkışlarının sağlaması mümkündür.

DevOps sayesinde şirketlerin mevcuttaki, hataya açık olan manuel “Yazılım Yaşam Döngüsü” süreçlerini otomasyona bağlayarak marketteki değişimlere daha hızlı yanıt vermeleri mümkündür. Bunun yanında şirketlerin kendi bünyelerindeki veya Cloud (bulut) üzerindeki mevcut altyapılarını daha verimli yönetmelerine olanak sağlayarak tasarruf etmelerini sağlar. Diğer bir değişle, bir şirketin günümüz rekabet koşullarında ayakta kalabilmesi için DevOps pratiklerinin uygulaması kaçınılmazdır.

Bu değişimi destekleyecek doğru araçlar ile riskler minimize edilerek, kaynakların “self-service” yaklaşımı ile yönetilmesi mümkündür. Bunların yanında, doğru mühendislik pratiklerinin de uygulanması ile artan kalite sayesinde, hata (bug) tespiti en erken zamanda yapılarak, yazılımcılara bu hataların sıcağı sıcağına düzeltilmesine olanak sağlar.

DevOps nedir, ne değildir?

  • DevOps bir hedef değildir, bir yolculuktur. 
  • DevOps bir araç (tool) veya paket program değildir.
  • DevOps bir anda organizasyona uygulanamaz, her organizasyona uygun adımların belirlenmesi gerekir. 
  • DevOps bir kişiye verilen bir sorumluluk değildir, tüm takımların benimsemesi gereken bir “mindset” yani yaklaşımdır.

DevOps sayesinde:

  • Daha kaliteli, daha hızlı ve daha sık canlıya çıkışlar yapılabilir.
  • “Sürekli Gelişim” (Continuous Improvement) daha erken ve ekonomik uygulanabilir.
  • “Dev” ve “Ops” takımları arasında şeffaflık ve işbirliği sağlanır.
  • Altyapı kaynaklarının efektif kullanılması ile tasarruf sağlanır.

Scrum ve Kanban gibi Agile (çevik) Yazılım Geliştirme yaklaşımlarını benimseyen takımların DevOps pratiklerini uygulayarak, uçtan uca çeviklik sağlamaları mümkündür. Bu pratikleri uygulamayan takımlarda alttaki semptomlar gözlemlenebilir:

  • “Dev” ve “Ops” takımları arasında “Pull” yerine “Push” yaklaşımı hakimdir.
  • Yazılımın canlı ortama alınması süreci uzundur.
  • Yazılımcı uzun süre önce geliştirmesini yapmış olduğu bir fonksiyonalite için, geç geri bildirim alır.
  • Performans testi koşmak için talep edilen ortam, uzun süreler sonrası sağlanır.
  • Test ortamında gözlemlenmeyen hatalar, canlı ortamda oluşur.
  • Altyapı ölçeklendirilmesi en kötü senaryo için yapılmış olur ve bu da israfa neden olur.

Günümüzdeki Cloud (Bulut) teknolojilerinde gelinen son noktadaki, PaaS-SaaS, avantajlar kullanılarak, bir yazılım takımının, sorumlusu olduğu yazılımın uçtan uca tüm sorumluluğunu alması da başarılı bir pratiktir. Özellikle Micro-Services mimarisi ile yazılımın non-monolithic şekillendirilmesi ile, uçtan uca sorumluluğun da önü açılmaktadır.

 “Yazılım Yaşam Döngüsü” birçok disiplini içinde barındırarak, bir fikrin yazılıma dönüşümü sürecini tanımlar. 

Continuous Integration: Farklı kişilerin aynı yazılım üzerinde yaptıkları geliştirmelerin yüksek sıklıkta, tercihen günlük, entegre edilmesidir. Yapılan değişikliklerin entegre olması demek, birim testlerden geçmesi ve “build” sürecinin işletilmesi ile olası hataların en erken şekilde tespit edilmesi anlamına gelmektedir.

Continuous Delivery: Continuous Integration sürecini başarılı tamamlamış her değişikliğin, gerçek bir “release” olduğunun doğrulanmasıdır. Bunu yapmak için “Continuous Integration” ın çıktısı olan “artifact” ın, tercihen otomatik, kabul ve performans testlerinden geçirilmesi ve test veya “prod-like” bir ortama “release” edilmesidir.

DevOps is the organizational mindset that enables Continuous Delivery.
–Jez Humble

Continuous Deployment: Continuous Delivery sürecini başarı ile tamamlamış her değişikliğin canlı ortama otomatik olarak “deploy” edilmesidir.

 

Derya (Dorian) Sezen

Derya, a.k.a. Dorian, ex-CTO of an amazon.com subsidiary, is currently working as Cloud and DevOps Consultant at kloia.