DevOps İçin Bir Ağıt
(matduggan.com)DevOps'un kavramı ve tarihi
- DevOps, yaklaşık 2007'de ortaya çıkan bir kavramdı ve donanımı yönetenlerle yazılım yazanlar arasındaki ayrımı ortadan kaldırmayı hedefliyordu
- Başlangıçta, kod dağıtımının güvenliğini artırmak için NASA'nın prosedürleri ve fikirleri örnek alınıyordu
- O dönemde yazılım dağıtım süreci şu şekildeydi:
- geliştirme ekibi sunucu yazılımı için bir sürüm hazırlıyor, QA ekibi bunu test ediyor ve ardından müşteriye dağıtıyordu
- operasyon ekibi, yazılım değişiklikleri ve sorun çıktığında nasıl müdahale edileceği dahil bir playbook alıyordu
- veri merkezi içinde güncellemeler kademeli olarak rollout ediliyor ve izleniyordu
- dağıtım günü belirleniyor ve dağıtımdan sonra izleme yapılıyordu
DevOps'un sorunları
- DevOps çok emek yoğun bir yaklaşımdı
- geliştirme ekibi, QA ekibi, teknik yazarlar ve operasyon ekibi arasında iş birliği gerekiyordu
- özellik dağıtımı yavaştı ve önemli güncellemeler önceliklendiriliyordu
- birçok kuruluşun DevOps'u benimsemesinin nedenleri şunlardı:
- teknik personelin kolayca ikame edilememesi
- işe alımın zor ve maliyetli olması
- SaaS sağlayıcılarının karmaşıklığı azaltması
- bulut platformlarının avantajlarının öne çıkarılması
- geliştiricilerin küçük değişikliklerin dağıtıma çıkmasının uzun sürmesinden rahatsız olması
DevOps'un gerçekte nasıl göründüğü
- DevOps, geliştirme ve operasyon ekiplerinin tek bir ekipte birleşmesini hedefliyordu
- QA ekibi işten çıkarıldı ve hızlı dağıtım ile geri bildirim sayesinde dahili test süresi kısaldı
- DevOps bazen Google'ın SRE yaklaşımıyla karıştırılsa da SRE daha yapısal ve daha katı bir yaklaşıma sahiptir
- DevOps'un pratikteki süreci genelde şöyleydi:
- geliştirici
gitüzerinde bir branch oluşturup özellik ekler - bir PR açılır, ekip arkadaşları inceleme yaptıktan sonra
main'e merge edilir - CI/CD sistemi build sürecini başlatır ve container'ı registry'ye push eder
- CD sistemi sunuculara yeni sürümü bildirir ve dağıtımın başarılı olup olmadığını izler
- release-aware metriklerle dağıtımdan sonraki değişiklikler izlenir
- geliştirici
DevOps'un başarısızlık nedenleri
- geliştiriciler yerel ortamda test yapıp Linux sunucularına dağıtım yaptığında küçük farklılıklar ortaya çıkıyordu
- operasyon ekibi dağıtımı izlemediğinde sorun çözmek zorlaşıyordu
- geliştiricilerin sistem işletimine dair bilgisi yetersizdi
- container'ların benimsenmesi bazı sorunları çözse de operasyonel karmaşıklık hâlâ sürüyordu
Container'ların gelişi ve sınırları
- Container'lar, "benim bilgisayarımda çalışıyordu" sorununu çözdü
- Linux sunucularının yapı bileşenlerini basitleştirdi
- Ancak hâlâ kalan sorunlar vardı
- Operate: altyapı bakımı, yükseltmeler vb. için uzmanlık gereksinimi
- Observe: karmaşık izleme sistemlerini kurma ve yönetme zorluğu
- Sürekli geri bildirim: dahili geri bildirimlerin işlenmesindeki yetersizlik
- Discover: ekipler arasında bilgi paylaşımının yetersizliği
- Plan: merkezi planlama yapmanın zorluğu
Platform Engineering'in ortaya çıkışı
- Platform Engineering, DevOps'un ardından gelen bir kavram olarak, geliştirme ekiplerinin platform işletimini anlayıp sorun çözmesi yerine bunun platform ekibi tarafından üstlenilmesini öngörür
- Bu yaklaşım, geliştirme ekipleri ile platform operasyonunun sorumluluklarını daha net ayırarak rol paylaşımını açıklığa kavuşturur, ancak yine de çok sayıda teknik beceri gerektirir
- Hem geliştiriciler hem de operasyon ekipleri daha fazla iş yapmak zorundadır
Sonuç
- Altyapı alanında basit ve platforma bağımlı olmayan araçlar arama eğilimi artıyor
- birçok kuruluş Kubernetes gibi karmaşık teknolojilerden vazgeçip daha basit iş akışlarına geri dönüyor
- Platform Engineering her derde deva bir çözüm değil; kuruluşların gerçekten neye ihtiyaç duyduğunu ve neyin gereksiz olduğunu ayırt etmesi gerekiyor
- DevOps yaklaşımının avantajlarını korurken sadeleşme ve kararlılığa odaklanmak gerekiyor
GN⁺ görüşü
-
DevOps'un evrimi ve bugünkü durumu, teknoloji sektöründeki trend değişimlerini iyi gösteren bir örnek. Başlangıçtaki ideal hedeflerle gerçeklik arasındaki farkın kabul edilip daha pratik yaklaşımların aranması ilgi çekici
-
Platform Engineering'e geçiş, DevOps'un sınırlarını kabul edip yeni çözümler arama girişimi gibi görünüyor. Ancak bu da kusursuz bir çözüm değil; kuruluşun ölçeğine ve özelliklerine uygun özelleştirilmiş bir yaklaşım gerekecek
-
Cloud-native teknolojiler ve mikroservis mimarisinin karmaşıklığı arttıkça sadelik ve kararlılık yeniden değerlendiriliyor. Bu da teknoloji seçimlerinde iş değeri ile operasyonel verimliliğin daha önemli dikkate alınması gerektiğini gösteriyor
-
DevOps ve platform engineering'deki değişim, yazılım geliştirme ve operasyon alanlarında sürekli öğrenme ve uyum sağlamanın önemini vurguluyor. Teknik uzmanların yalnızca yeni araç ve yöntemleri öğrenmesi değil, iş gereksinimleri ile teknik karmaşıklık arasında denge kurma becerisini de geliştirmesi gerekecek
-
Gelecekte yazılım geliştirme ve operasyon yöntemlerinin daha esnek ve bağlama uygun yaklaşımlar benimsemesi bekleniyor. Büyük ölçekli kuruluşlar ile küçük startup'ların aynı yöntemi izlemesi yerine, her birinin kendi durumuna uygun en iyi süreç ve araçları seçtiği eğilim güçlenecek
2 yorum
Oldukça sık
yöneticiler
sadece DevOps kavramını benimserlerse
çaba harcamadan büyük bir dönüşümün ortaya çıkacağını
bekleyen (büyük ya da küçük şirket fark etmeksizin)
eski kafalı şirketlerin yanlış düşüncesi
Hacker News görüşü
asıl mesele, "devops cycle" diyagramında "build, test, deploy" kısmına odaklanmak
bu, devops ekiplerinin yaşadığı sorunlara dayanan bir görüş
Kubernetes eleştirisi yanlış
devops, yazılım dağıtımını kolaylaştırmak için engelleri kaldırmakla ilgilidir
devops bir metodoloji değil, bir felsefedir
liderliğin "silo'ları yıkma" yaklaşımı neredeyse göstermelik
kullanıcılar testçi olabiliyorsa öyle olmalı
platform ekipleri yalnızca büyük şirketlerde mümkün
devops bir metodoloji değil, bir felsefedir
devops iyi niyetlerle ortaya çıktı