Büyük ve web tabanlı kuruluşlarda DevOps’un benimsenmesi hızlanırken DevOps terimin tam olarak ne anlama geldiği konusunda kafa karışıklıkları devam ediyor. DevOps bir yaklaşım mı, kültür mü yoksa farklı kişiler için farklı anlamlar mı ifade ediyor?

DevOps başarısına giden yol, kuşkusuz bir yolculuk gerektirir. DevOps yolculuğunuzun neresinde olursanız olun, aşağıdaki temel soruları yanıtlamanız gereklidir.

  • DevOps nedir?
  • DevOps’un tarihi
  • DevOps’a hangi sorunlar yol açtı?
  • DevOps nasıl “çalışır”?
  • DevOps bugün ne kadar yaygın olarak kullanılıyor?
  • İnsanlar neden DevOps’u benimsiyor?
  • Faydaları nelerdir?

Bu blog yazımızda bu soruların cevaplarını arayarak DevOps süreçleri ile ilgili merak ettiklerinizi yanıtlayacağız 🚀

👉DevOps nedir?

DevOps, daha iyi geliştirme yapmak için geliştirilmiş disiplinler bütünü ve kültürüdür. Aynı zamanda kurumların ürünlerini hızlı geliştirmesini ve iyileştirmesini sağlayarak, uygulama ve hizmetleri yüksek hızda sunma becerisini artıran kültürel felsefelerin, yöntemlerin ve araçların birleşimi olarak da tanımlanabilir.

DevOps aslında bir felsefe, yaklaşım olarak düşünülebilir.
Yazılım geliştiricilerin kullandığı Scrum, Agile, Kanban ve diğer yöntemler gibidir.

Dev takımının görevleri:
Oluşturulacak uygulamaya ait planları yapmak,
Uygulamayı geliştirmek,
Uygulama release ve publish durumlarını kontrol etmek,
Uygulama iyileştirme yapmak ve test süreçlerini yönetmek olarak tanımlanır.

Ops takımının görevleri:
Oluşan uygulamaların kullanılacağı ortamı tasarlamak,
Uygulamaların çalışması için ağ ve güvenlik yapılandırmalarının yapılmasını sağlamak,
Uygulamanın kaynak kullanım seviyesini belirlemek,
Uygulamanın takibini sağlamak,
Uygulamanın kaynak arttırımını sağlamak olarak tanımlanır.

DevOps

👉DevOps Nasıl Çalışır?

DevOps modelinde geliştirme ve operasyon ekipleri birlikte çalışır, bazen bu iki ekip tek bir ekip haline getirilir.

Bazı DevOps modellerinde güvenlik ekipleri de uygulama yaşam döngüsü sırasında geliştirme ve diğer ekiplerle daha yakın bir iletişim içinde olur.

👉DevOps’un Tarihi

Bazı teknolojilerin kökenleri efsanelere dayanırken buradaki süreç, tamamen belirli öncülere dayanmaktadır.

  • Kurumsal sistem yönetimi (ESM): DevOps’un ilk dönemlerine dahil olan kişilerin çoğunluğu sistem yöneticileriydi. Yapılandırma yönetimi, sistem izleme ve araç zinciri yaklaşımı dahil olmak üzere en iyi ESM uygulamaları DevOps’a getirilmiştir.
  • Agile geliştirme: Agile yazılım geliştirme, daha iyi bir ürün oluşturmak için müşterilerin, ürün yönetiminin, geliştiricilerin birlikteliğini gerektirir. Aslına bakacak olursak; Agile, kendi ilkelerini sunulan hizmetin tamamına yayıyor.

Ülkemizde henüz yeni uygulanmaya başlasa bile ortaya çıkış tarihi 2009 yılı olarak bilinir. Belçika’da başlayan “Devops Days” (DevOps Günleri) etkinlikleri başlangıç tarihi olarak kabul edilir.
Fakat DevOps’u, birden bire ortaya çıkıp hayatımıza giren bir kavram olarak değerlendirmek doğru değildir. DevOps’un temelinde Çevik Sistem Yönetimi (Agile System Administration), Kurumsal Sistem Yönetimi (Enterprise Systems Management) ve Çevik Altyapı (Agile Infrastructure) gibi önemli yaklaşımlar bulunmaktadır.

👉DevSecOps Nedir?

DevSecOps, uygulama geliştirme yaşam döngüsüne güvenliği daha erken dahil etmeyi, bu doğrultuda güvenlik açıklarını en aza indirmeyi hedefler.
DevSecOps, güvenlik uygulamalarının DevOps sürecine dahil edilmesi durumudur. DevSecOps kültürünün amacı, yazılım ekipleri ve güvenlik ekipleri arasındaki sorunları çözmeye çalışırken, kodun hızlı ve güvenli bir şekilde teslim edilmesini de sağlar

👉DevOps’un Avantajları

Hız

DevOps uygulamaları, daha hızlı inovasyon yapmak ve değişen pazarlara daha iyi uyum sağlamak amacıyla geliştiricilerinizin ve operasyon ekiplerinizin verimli sonuçlar elde etmesine imkan tanır. Örnek verecek olursak; mikro hizmetler ve sürekli teslim durumları ilgili güncellemelerin hızlı gerçekleşmesine imkan tanır.

Hızlı Teslim

Projelerinizi daha hızlı geliştirebilmek için yayın sıklığını ve hızını artırmalısız.
Sürümlerinizin hızı arttığında, ürününüzü daha hızlı geliştirebilirsiniz.
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.
CI/CD süreçleri hakkında mutlaka bilmeniz gereken noktalara değindiğimiz blog yazımıza göz atın.

Güvenilirlik

CI/CD gibi DevOps uygulamaları, güncellemelerin ve altyapı değişikliklerinin kalitesini garanti edebilir, böylece güvenilir bir şekilde teslimat yapabilirsiniz. İzleme ve günlüğe kaydetme gibi uygulamalar, performansı anlık olarak takip etmenizi sağlar.

Geliştirilmiş İş Birliği

Sahiplenme ve sorumluluk gibi değerleri vurgulayan bir DevOps kültür modeli altında daha etkili ekipler kurulmalıdır. Geliştiriciler ve operasyon ekipleri daha yakın bir şekilde iş birliği yaptığı durumda verimsizlikler azalır ve zaman tasarrufu sağlanır.

Güvenlik

Otomatikleştirilmiş, entegre güvenlik testi araçlarını kullanarak denetim ve uygunluktan ödün vermeden bir DevOps modelini oluşturabilirsiniz.

👉Doğru DevOps araçları nasıl bulunur?

DevOps uygulamaları, etkili araçlara dayanır. Bu araçlar, manuel görevleri otomatikleştirmeli ve ekiplerin karmaşık ortamları uygun ölçekte yönetmesine yardımcı olmalıdır.

DevOps iş akışı aşamalardan oluşur:

  • Ürün geliştirmenin bir sonraki yinelemesini planlama
  • Building kodu
  • Üretim ortamını test etme ve dağıtma
  • Ürün güncellemelerini sunma
  • Yazılım performansını izleme ve kaydetme
  • Müşteri geri bildirimlerini toplama

Planlama: DevOps ekibinin hangi görevlerin yapıldığını ve programın gerisine düşme riski olup olmadığını sağlamak için planlama araçlarına ihtiyaç duyar. Confluence ve Jira gibi araçlar, verimli bir proje yönetimi elde edilmesine yardımcı olur.

Building ve teslimat: Geliştiriciler, geliştirme ve test ortamlarının hızlı dağıtımına ihtiyaç duyar. Sorun oluşması durumunda uzun süre bekleyemezler. Docker, birden çok geliştirme ve yayın döngüsü boyunca tutarlılık sağlar ve tekrarlanabilir geliştirme, derleme, test ve üretim ortamları sağlar.Diğer popüler araçlar ise; Kubernetes, Terraform, Chef, Ansible ve Puppet’dır.

Test: Kod kalitesinden veya kullanıcı deneyiminden ödün vermeden test etmeye ayrılan zamanı en aza indirmeye yardımcı olan Jenkins , CircleCI ve GitLab CI gibi araçlar kullanılır.

Yazılım izleme ve günlük kayıtlar: Yazılım süreçleri üretim aşamasına taşındığında, istikrarlı performans ve artan müşteri memnuniyeti sağlamak için yazılımlar izlenmelidir. Bu görevleri gerçekleştirmek için en sık kullanılan araçlar ise; Prometheus, Grafana, Elastic (ELK) Stack, Splunk ve Sumo Logic’dir.

👉DevOps İçin Kullanılan Metodoloji ve Araçlar Nelerdir?

Dünyada en çok kullanılan DevOps yöntemleri arasında Scrum, Kanban ve Agile yer alır.

  • Scrum: Scrum, bir takımın üyelerinin geliştirme ve kalite güvence projelerini hızlandırmak için birlikte nasıl çalışması gerektiğini tanımlar. Scrum uygulamaları, temel iş akışlarını ve belirli terminolojiyi içerir.
  • Kanban: Kanban, geliştirme ekibine aşırı yüklenmeden ürünlerin yaratılma sürecini yönetme yöntemidir. Kanban, ekiplerin birlikte verimli çalışmasına yardımcı olmak için tasarlanmıştır.

  • Çevik (Agile):  Scrum ve Kanban dahil olmak üzere birçok DevOps yöntemi, Agile programlamayı içerir.

  • Scaled Agile Framework (SAFe) – İşletmelere uygulamalarını ölçeklendirme sırasında rehberlik eden organizasyon ve iş akışı modelidir.
  • Yalın geliştirme: Lean, Agile organizasyonlarını destekleyen en iyi uygulamaların yanı sıra kavramsal bir çerçeve, değerler ve ilkeler sunar.
  • Ekstrem programlama (XP): XP, yazılım kalitesini artırmayı amaçlar.

👉DevOps kültürü

DevOps yöntemlerini benimsemek, süreçleri otomatikleştirerek iyileştirse de kültürün bir parçası olan insanlarla başlıyor. DevOps kültürünün geliştirilmesi, insanların çalışma ve işbirliği yapma biçiminde kapsamlı değişiklikler gerektirir. Şirketler kendilerini DevOps kültürüne adadığında yüksek performanslı ekiplerin gelişmesi için elverişli bir ortam oluşturması sağlanır.

👉En İyi DevOps Uygulamaları

En iyi DevOps uygulamaları şunlardır:

  • Sürekli Entegrasyon
  • Sürekli Teslim
  • Mikro Hizmetler
  • Kod Olarak Altyapı
  • İzleme ve Günlük Kaydı
  • İletişim ve İş Birliği

Sürekli Entegrasyon

Sürekli entegrasyon, geliştiricilerin kod değişikliklerini belirli aralıklarla bir depoda birleştirdiği ve otomatik derleme ile test işlemlerinin gerçekleştirildiği bir uygulamadır. Temel amacı, hataları daha hızlı tespit etmek, yazılım kalitesini artırmak ve yazılım güncellemelerinin doğrulanması için gereken süreyi kısaltmaktır.

Sürekli Teslim

Sürekli teslim, kod değişikliklerinin otomatik olarak oluşturulduğ yazılım geliştirme uygulamasıdır.

Mikro Hizmetler

Mikro hizmet mimarisi, bir tasarım yaklaşımıdır. Mikro hizmetler, işletme becerilerine göre oluşturulur ve her hizmetin kapsamı tek amaçla sınırlandırılır.

İzleme ve Günlük Kaydı

Kurumlar, ürünlerindeki son kullanıcı deneyimini nasıl etkilediğini görmek için ölçüm yöntemlerini ve günlükleri izler.

İletişim ve İş Birliği

DevOps’un kültür özelliklerinden biri de kurum içerisindeki iletişim ve iş birliğinin artmasıdır. DevOps araçlarının kullanılması ve yazılım teslim sürecinin otomatikleştirilmesi, geliştirme ve operasyon ekiplerinin sorumluluklarını bir araya getirerek iş birliği kültürü oluşmasını sağlar.

Yazılım süreçlerinde DevOps’un önemini ve  kullanımını öğrendiyseniz sıra programlama dilleri öğrenmekte🚀

Sizin için hazırladığımız programlama dili odaklı blog yazılarımıza göz atarak hızlıca yeni projeler oluşturmaya başlayabilirsiniz.