Skip to content

Day04

DevOps & Agile

DevOps ve Agile arasındaki farkı biliyor musunuz? İkisi bağımsız kavramlar olarak ortaya çıktı. Ancak şimdi bu iki terim birleşiyor.

Bu yazıda, Agile ve DevOps arasındaki temel farkları inceleyecek ve neden bu ikisinin birbirine sıkı bir şekilde bağlı olduğunu keşfedeceğiz.

Başlamadan önce, Agile vs DevOps öğrenme arasındaki ortak bir açıyı biraz daha anlamamız gerekiyor, çünkü benzer hedeflere ve süreçlere sahipler. Tanımlamalarla başlayalım.

Agile Geliştirme

Agile, uzun süreler alan büyük ürün etkileşimlerini yayınlamaktansa, daha sık küçük sonuçlar sunmaya odaklanan bir yaklaşımdır; yazılım iterasyonlar halinde geliştirilir: Ekip, yeni bir sürümü her ay, her hafta veya bazı durumlarda günlük olarak yayınlar ve artan güncellemelerle. Agile'ın nihai amacı, ilk teslimat olan minimum işlevsel üründen başlayarak kullanıcılara en iyi deneyimi sunmaktır.

DevOps

Bununla ilgili önceki günlerde bahsetmiştik, DevOps'un nihai hedeflerini tanımlama şeklinde bazı farklılıklar olabilir. DevOps genellikle geliştiriciler ve operasyon uzmanları arasındaki işbirliği temelinde yazılım geliştirme ve teslimatını tanımlar. DevOps'un temel avantajları, geliştirme süreçlerini basitleştirmek ve iletişim eksikliğini en aza indirmektir.

Agile ve DevOps Arasındaki Fark Nedir?

Ana fark, endişeleridir. Agile ve DevOps farklı endişelere sahip olsalar da birbirlerine yardımcı olurlar. Agile kısa bir iterasyon istiyor ve bu sadece DevOps tarafından sağlanan otomasyonla mümkün oluyor. Agile, müşterinin belirli bir sürümü test etmesini ve hızlı geri bildirim vermesini istiyor, bu da DevOps'un bu amaç için gerekli ortamların oluşturulmasını kolaylaştırmasıyla mümkün oluyor.

Farklı Katılımcılar

Agile, son kullanıcılar ve geliştiriciler arasındaki iletişimi optimize etmeye odaklanırken, DevOps geliştiricilere ve operasyon ekibi üyelerine yöneliktir. Agile, müşterilere yönelik dışa dönükken, DevOps iç işleyişleri olan bir dizi uygulamadır.

Ekip

Agile genellikle yazılım geliştiricilere ve proje yöneticilerine uygulanır. DevOps mühendislerinin yetkinlikleri, yazılımın yaşam döngüsünün tüm aşamalarında yer aldıkları için, geliştirme, kalite kontrol (QA) ve operasyonların kesişiminde bulunur ve Agile ekibinin bir parçası olarak da yer alırlar.

Frameworkler

Agile, esneklik ve şeffaflık sağlamak için birçok yönetim çerçevesine sahiptir:

  • Scrum
  • Kanban
  • Lean
  • Extreme Programming (XP)
  • Crystal
  • Dynamic Systems Development Method (DSDM)
  • Feature-Driven Development (FDD)

Bu çerçeveler, Agile prensiplerini uygulama ve projeleri yönetme konusunda farklı yaklaşımlar sunar. Her biri, farklı bir odak noktasıyla ekiplere esneklik ve işbirliği sağlama amacını taşır. Seçilecek çerçeve, projenin ihtiyaçlarına, ekibin yapısına ve iş süreçlerine bağlı olarak değişebilir.

DevOps, dediğiniz gibi, geliştirme sürecinin işbirliğine dayalı bir yaklaşıma odaklanır, ancak belirli metodolojiler sunmaz. DevOps, İnfrastrüktürü Kod (IaC), Kod olarak Mimari, izleme, Kendini İyileştirme ve uçtan uca otomatik test gibi uygulamaları teşvik eder. Ancak, DevOps kendisi bir çerçeve değildir, daha çok bir uygulamadır.

DevOps, yazılımın sürekli bir şekilde teslim edilmesini ve daha verimli bir yazılım yaşam döngüsü elde etmeyi hedefleyen geliştirme ve operasyon ekiplerini birleştirme fikrine dayanır. Otomasyon ve işbirliğini teşvik eden uygulamaları benimseyerek, DevOps ekipleri yazılımın verimliliğini, kalitesini ve teslim hızını artırabilir.

Özetlemek gerekirse, Agile belirli metodolojiler olan Scrum, Kanban ve diğerlerini sağlarken, DevOps yazılım geliştirme ve operasyonlarında işbirliği ve otomasyonu teşvik eden uygulamalar ve *prensipler üzerinde odaklanır.

Geri Bildirim

Agile'de başlıca geri bildirim kaynağı son kullanıcı iken, DevOps'ta paydaşların ve takımın geri bildirimi önceliklidir, çünkü onlar olası darboğazları ve iyi uygulamaları bilmektedir.

Hedef Alanlar

Agile daha çok yazılım geliştirmeye odaklanırken, DevOps yazılım geliştirme yanı sıra dağıtım, bakım, izleme, yüksek kullanılabilirlik, güvenlik ve veri koruması gibi aşamaları da kapsar.

Dokumantasyon

Agile, esnekliği ve devam eden görevleri belgelendirmeye ve denetlemeye göre önceliklendirirken, DevOps proje belgelerini projenin temel bileşenlerinden biri olarak kabul eder. Docs-as-code

Riskler

Agile'nin riskleri metodolojinin esnekliğinden kaynaklanır. Agile projeleri tahmin etmek veya değerlendirmek zordur, çünkü öncelikler ve gereksinimler sürekli değişir.

DevOps'un riskleri ise terimlerin yanlış anlaşılmasından veya uygun araçların eksikliğinden kaynaklanır. Bazı insanlar DevOps'u dağıtım ve sürekli entegrasyon için bir yazılım koleksiyonu olarak görür, ancak yazılım, geliştirme süreçlerinin temel yapısal yapısına göre değişir.

Kullanılan Araclar

Agile ve DevOps'in birleştirilmesi, esnek yönetim ve güçlü teknoloji gibi birçok fayda sağlayabilir. Bazı önemli noktalar şunlardır:

Agile araçları ile iletişim, işbirliği, metrikler ve bilgi işleme gibi konulara odaklanır. En popüler araçlar arasında Jira, Trello, Slack, Zoom ve SurveyMonkey gibi örnekler bulunur.

DevOps, ekip iletişimi, yazılım geliştirme, dağıtım ve entegrasyon gibi konularda araçlar kullanır. Jenkins, GitHub Actions, BitBucket gibi araçlar yaygın olarak kullanılır. Agile ve DevOps farklı yaklaşımlara ve kapsamlara sahip olsa da, temel değerleri neredeyse aynıdır, bu yüzden ikisi bir araya getirilebilir.

Unirlo todo... ¿buena idea? ¿Quizá no?

Agile ve DevOps'in birleştirilmesi aşağıdaki faydaları sağlar:

  • Esnek yönetim ve güçlü teknoloji.
  • Agile uygulamaları, DevOps ekiplerinin önceliklerini daha verimli bir şekilde iletişim kurmasına yardımcı olur.
  • DevOps uygulamalarının otomasyon maliyeti, hızlı ve sık bir şekilde dağıtım gereksinimine dayalı Agile gereklilikleriyle açıklanır.
  • Güçlendirme sağlar: Agile uygulamalarını benimseyen ekip, işbirliğini geliştirir, ekip motivasyonunu artırır ve çalışan devir oranını azaltır.
  • Sonuç olarak, daha iyi bir yazılım kalitesi elde edilir ve müşteri ihtiyaçlarına daha iyi uyum sağlanır.

Agile, hataları düzeltmek ve teknik borç biriktirmekten kaçınmak için ürün geliştirme sürecinde önceki aşamalara geri dönme imkanı sunar. Agile ve DevOps'u aynı anda benimsemek için yalnızca aşağıdaki 7 adımı takip etmeniz yeterlidir:

  1. Geliştirme ve işletme ekiplerini sürekli iletişim halinde birleştirin.
  2. Yapı ve yürütme ekipleri oluşturun, geliştirme ve işletme ile ilgili tüm endişeleri DevOps ekibiyle tartışın.
  3. Sprint'lerin odak noktasını değiştirin ve geliştirme görevleriyle aynı değere sahip DevOps görevlerini önceliklendirin. Geliştirme ve işletme ekiplerini diğer ekiplerin çalışma akışı ve olası sorunlar/iyileştirmeler hakkında fikir alışverişine teşvik edin.
  4. Kalite kontrolünü geliştirme sürecinin tüm aşamalarına dahil edin.
  5. Uygun araçları seçin.
  6. Mümkün olan her şeyi otomatikleştirin.
  7. Somut sonuçlar kullanarak ölçün ve kontrol edin.

Ne düşünüyorsunuz? Başka bir bakış açınız var mı? Agile ve DevOps konularında daha iyi bir anlayışa sahip olan geliştiriciler, işletme ve QA ekiplerinden veya bu konuda geri bildirimde bulunabilecek herhangi bir kişiden görüşlerinizi dinlemek isterim.

Kaynaklar

Görüşmek üzere. Gun 5.