DevOps Hakkında 8 Soru-Cevap

Ahmet Soğuksu
4 min readJun 17, 2022

Merhaba, DevOps Nedir sorusunun cevabı için bu makaleyi okuyabilirsiniz.

https://plusclouds.com.tr/blog/devops-ve-uygulama-coezuemleri-nelerdir

S1. Neden DevOps’a ihtiyaç duyuyoruz?

Kullanıcılarımıza sunduğumuz yazılımda büyük değişikler yapıp daha sonra yayınlamak yerine küçük değişiklikleri anında yayınlayarak müşterilerimize ulaştırmak istiyoruz. Bu sayede müşterilerden daha hızlı geri bilidirim alabiliriz ve ürünümüzü daha kaliteli hale getirebiliriz. Bunu yapabilmek için:

  • Deployment sıklığını arttırma,
  • Yeni sürümlerde daha az hata,
  • Sorunları daha kısa sürede çözme,
  • Yeni sürümün çökmesi durumunda daha kısa sürede kurtarma (recovery) gibi iyileştirmeler yapmamız gerekiyor.

DevOps tüm bu gereksinimleri karşılıyor ve yazılım geliştirme sürecinin başından son kullanıcıya ulaşmasına kadar olan süreci daha sorunsuz geçirmemize yardımcı oluyor. Etsy, Google ve Amazon gibi milyonlarca insana hizmet sunan şirketler de DevOps sürecini benimseyerek performans seviyelerini arttırmıştır. Günde onlarca, yüzlerce hatta binlerce teslimat (delivery) yaparken kararlılık, güvenilirlik ve güvenlik sunmaya da devam edebiliyorlar.

S2. DevOps ile Agile/SDLC arasındaki farklar nelerdir?

https://unsplash.com/photos/SYTO3xs06fU

Agile, üretime (yazılım geliştirmeye) yönelik değerler ve ilkeler bütünüdür. Örneğin bir yazılım geliştirmek istediğimizde bunu Agile prensipleri ile yapabiliriz. Geliştirdiğimiz yazılım sadece geliştiricinin ortamında ya da test ortamında çalışıyor olacaktır. Bu yazılımı ürün ortamına taşımak ve orada çalıştırmak da istediğimizde; bu sürecin hızlı, kolay ve tekrarlanabilir olması için DevOps tekniklerimi ve araçlarını (tool) kullanıyoruz.

Özet olarak Agile metodolojisi Yazılım Geliştirme Süreci (SDLC)’ne odaklanır, DevOps ise geliştirilen yazılımın daha hızlı ve daha sorunsuz bir şekilde son kullanıcıya ulaşmasına odaklanır.

S3. En yaygın DevOps araçları (tool) nelerdir?

https://www.serdarbayram.net/devops-nedir.html
  • Git : Version Control System tool
  • Jenkins : Continuous Integration tool
  • Selenium : Continuous Testing tool
  • Puppet, Chef, Ansible : Configuration Management and Deployment tools
  • Nagios : Continuous Monitoring tool
  • Docker : Container tool

S4. Bütün bu araçlar birlikte nasıl çalışıyor?

https://www.serdarbayram.net/devops-nedir.html

Organizasyondan organizasyona, hatta projeden projeye değişse bile; genelde aşağıdaki gibi her şeyin otomatikleştiği bir mantıksal akış vardır.

  1. Geliştiriciler yazdıkları kodu Git gibi versiyon kontrol araçlarıyla yönetirler.
  2. Geliştiriciler kaynak kodlarda yaptıkları her değişiklikleri Git reposuna işlerler (commit).
  3. Jenkins gibi araçlar bu kodu repodan çekerler ve Ant ya da Maven gibi araçlar ile build ederler.
  4. Build edilen kod Puppet, Chef gibi konfigürasyon yönetim araçları ile hazırlanan test ortamına Jenkins tarafından gönderilir ve Selenium gibi araçlar ile test edilir.
  5. Test işlemi tamamlandıktan sonra Jenkins bu kodu yine Puppet gibi araçlar ile hazırlanan sunucuya göndererek de dağıtımını sağlamış olur.
  6. Dağıtım sonrası Nagios gibi araçlar ile durum izlenir (continous monitoring).
  7. Docker gibi araçlar da container yapıları ile, build edilen sürümümüzün özelliklerini test etmek için test ortamı sağlar.
  8. Kubernetes, Docker Swarm gibi araçlar oluşturulan container yapılarını yönetmeye yardımcı olur.

S5. DevOps’un avantajları nelerdir?

https://www.serdarbayram.net/devops-nedir.html
  • Sürekli yazılım dağıtımı,
  • Düzeltilmesi gereken daha az karmaşık sorunlar,
  • Sorunların daha hızlı çözülmesi,
  • Sorun çözmek yerine değer katmaya daha fazla zaman kalması,
  • Yeniliklerin daha hızlı dağıtılabilmesi,
  • Daha stabil operasyon ortamları.

S6. DevOps’un başarmamıza yardımcı olduğu en önemli şey nedir?

Bana göre DevOps’un başarmamıza yardımcı olduğu en önemli şey, yazılım kalite güvencesi ve uyumluluğundaki riskleri en aza indirirken değişiklikleri mümkün olduğunca çabuk üretime geçirmektir. Ancak, DevOps’un başka birçok olumlu etkisini de ekleyebiliriz. Örneğin, ekipler arasında daha net iletişim ve daha iyi çalışma ilişkileri, yani hem Operasyon ekibi hem de Geliştirme ekibi, kaliteli yazılım sunmak için birlikte işbirliği yapar ve bu da daha yüksek müşteri memnuniyeti sağlar.

S7. DevOps’un kullanıldığı bir gerçek hayat örneği verebilir misiniz?

https://unsplash.com/photos/jbzNp079OS4

Etsy, el yapımı veya sarf malzemelerinin yanı sıra benzersiz fabrikada üretilmiş öğelere odaklanan peer-to-peer bir e-ticaret sitesidir. Etsy, sitenin sık sık kapanmasına neden olan yavaş, sancılı site güncellemeleriyle mücadele etti. Çevrimiçi pazar yeri aracılığıyla mal satan ve onları rakibe götürme riskini alan milyonlarca Etsy kullanıcısının satışlarını etkiledi.

Yeni bir teknik yönetim ekibinin yardımıyla Etsy, haftada iki kez dört saatlik tam site dağıtımları üreten şelale (Waterfall) modelinden daha çevik bir yaklaşıma geçti. Bugün, tam otomatik bir dağıtım hattına sahip ve sürekli teslimat (Continous Deployment) uygulamalarının daha az kesintiyle günde 50'den fazla dağıtımla sonuçlandığı bildiriliyor.

S8. DevOps hakkında yanlış bilinen efsaneler nelerdir?

  • DevOps bir süreçtir.
  • Agile eşittir DevOps.
  • Ayrı bir DevOps takımına ihtiyacımız var.
  • DevOps bizim bütün problemlerimizi çözer.
  • DevOps “production’ı yöneten geliştiriciler” anlamına gelir.
  • DevOps geliştirmeye dayalı sürüm yönetimidir.
  • DevOps IT operasyonları tarafından yönlendirilir.
  • Biz farklıyız, DevOps uygulayamayız.
  • Elimizde yanlış kişiler var, DevOps uygulayamayız.

--

--