Yeni Başlayanlar İçin DevOps Kılavuzu

DevOps'un önemi nedir, BT uzmanları için ne anlama gelir, yöntemlerin, çerçevelerin ve araçların açıklaması.

Yeni Başlayanlar İçin DevOps Kılavuzu

DevOps teriminin BT dünyasında yaygınlaşmasından bu yana çok şey oldu. Ekosistemin çoğu açık kaynak olduğundan, bunun neden başladığını ve bunun BT kariyeri için ne anlama geldiğini yeniden düşünmek önemlidir.

DevOps nedir?

Tek bir tanım olmasa da DevOps'un, yineleme ve otomatikleştirme yeteneği ile kodu üretim ortamlarına daha hızlı dağıtmak için geliştirme ve operasyon ekipleri arasındaki işbirliğini sağlayan bir teknoloji çerçevesi olduğuna inanıyorum. Bu makalenin geri kalanını bu iddiayı açıklığa kavuşturmaya ayıracağız.

“DevOps” kelimesi “geliştirme” ve “operasyonlar” kelimelerinin birleşiminden oluşmaktadır. DevOps, uygulamaların ve hizmetlerin teslim hızının artırılmasına yardımcı olur. Bu, kuruluşların müşterilerine etkili bir şekilde hizmet vermelerine ve pazarda daha rekabetçi olmalarına olanak tanır. Basitçe söylemek gerekirse DevOps, daha etkili iletişim ve işbirliği ile geliştirme ve BT operasyonları arasındaki uyumdur.

DevOps, geliştirme, operasyonlar ve iş ekipleri arasındaki işbirliğinin kritik önem taşıdığı bir kültürü içerir. Bir kuruluştaki DevOps müşterilere sürekli olarak fayda sağladığı için konu yalnızca araçlarla ilgili değildir. Araçlar, insanlar ve süreçlerle birlikte bunun temel direklerinden biridir. DevOps, kuruluşların mümkün olan en kısa sürede yüksek kaliteli çözümler sunma yeteneğini artırır. DevOps ayrıca derlemeden dağıtıma, uygulamaya veya ürüne kadar tüm süreçleri otomatikleştirir.

DevOps tartışması, geliştiriciler, geçimini sağlamak için yazılım yazan kişiler ve bu yazılımın bakımından sorumlu operatörler arasındaki ilişkiye odaklanıyor.

Geliştirme ekibinin karşılaştığı zorluklar

Geliştiriciler, organizasyonel sorunları çözmek için yeni yaklaşımları ve teknolojileri uygulamaya hevesli ve istekli olma eğilimindedir. Ancak aynı zamanda bazı sorunlarla da karşı karşıyadırlar:

  • Rekabetçi pazar, ürünü zamanında teslim etme konusunda büyük bir baskı yaratıyor.
  • Üretime hazır kodun yönetilmesi ve yeni özelliklerin tanıtılmasıyla ilgilenmeleri gerekir.
  • Sürüm döngüsü uzun olabilir, bu nedenle geliştirme ekibinin uygulamaları uygulamaya koymadan önce çeşitli varsayımlarda bulunması gerekir. Bu senaryoda, üretim veya test ortamına dağıtım sırasında ortaya çıkan sorunları çözmek için daha fazla zaman gerekir.

Operasyon ekibinin karşılaştığı zorluklar

Operasyon ekipleri tarihsel olarak BT hizmetlerinin istikrarına ve güvenilirliğine odaklanmıştır. Bu nedenle operasyon ekipleri kaynaklarda, teknolojilerde veya yaklaşımlarda değişiklik yaparak istikrar ararlar. Görevleri şunları içerir:

  • Talep arttıkça kaynak tahsisini yönetin.
  • Üretim ortamında kullanım için gereken tasarım veya özelleştirme değişikliklerini gerçekleştirin.
  • Uygulamaların kendi kendine dağıtımından sonra üretim sorunlarını tanılayın ve çözün.

DevOps, geliştirme ve operasyon sorunlarını nasıl çözer?

Şirketler, çok sayıda uygulama özelliğini aynı anda sunmak yerine, bir dizi sürüm yinelemesi yoluyla az sayıda özelliği müşterilerine sunup sunamayacaklarını görmeye çalışıyor. Bu yaklaşımın daha iyi yazılım kalitesi, daha hızlı müşteri geri bildirimi vb. gibi birçok avantajı vardır. Bu da yüksek müşteri memnuniyeti sağlıyor. Bu hedeflere ulaşmak için şirketlerin şunları yapması gerekir:

  • Yeni sürümleri yayınlarken başarısızlık oranını azaltın
  • Dağıtım sıklığını artırın
  • Yeni bir uygulamanın piyasaya sürülmesi durumunda daha hızlı bir ortalama kurtarma süresi elde edin.
  • Düzeltme süresini azaltın

DevOps tüm bu görevleri yerine getirir ve kesintisiz teslimatın sağlanmasına yardımcı olur. Kuruluşlar, yalnızca birkaç yıl önce hayal bile edilemeyen üretkenlik düzeylerine ulaşmak için DevOps'u kullanıyor. Birinci sınıf güvenilirlik, kararlılık ve güvenlik sunarken günde onlarca, yüzlerce ve hatta binlerce dağıtım gerçekleştiriyorlar. (Parti boyutları hakkında daha fazla bilgi edinin ve yazılım teslimi üzerindeki etkileri).

DevOps, aşağıdakiler de dahil olmak üzere geçmiş metodolojilerden kaynaklanan çeşitli sorunları çözmeye çalışır:

  • Geliştirme ve operasyon ekipleri arasında işin izolasyonu
  • Test etme ve devreye alma, tasarım ve derlemeden sonra gerçekleşen ve derleme döngülerinden daha fazla zaman gerektiren ayrı aşamalardır.
  • Temel iş hizmetlerini oluşturmaya odaklanmak yerine test etmeye, dağıtmaya ve tasarlamaya aşırı zaman harcanması
  • Üretimde hatalara yol açan manuel kod dağıtımı
  • Geliştirme ve operasyon ekibi programlarındaki farklılıklar ek gecikmelere neden oluyor

Yeni Başlayanlar İçin DevOps Kılavuzu

DevOps, Agile ve geleneksel BT arasındaki çatışma

DevOps sıklıkla diğer BT uygulamalarıyla, özellikle de Çevik ve Şelale BT ile ilişkili olarak tartışılmaktadır.

Çevik, yazılım üretimine yönelik bir dizi ilke, değer ve uygulamadır. Yani örneğin yazılıma dönüştürmek istediğiniz bir fikriniz varsa Agile prensip ve değerlerinden yararlanabilirsiniz. Ancak bu yazılım yalnızca geliştirme veya test ortamında çalışabilir. Yazılımı hızlı ve tekrarlanabilir bir şekilde üretime taşımak için basit ve güvenli bir yola ihtiyacınız var ve bunun yolu da DevOps araçları ve tekniklerinden geçiyor. Çevik yazılım geliştirme, geliştirme süreçlerine odaklanır ve DevOps, geliştirme ve dağıtımın en güvenli ve en güvenilir şekilde yapılmasından sorumludur.

Geleneksel şelale modelini DevOps ile karşılaştırmak DevOps'un getirdiği faydaları anlamanın iyi bir yoludur. Aşağıdaki örnekte uygulamanın dört hafta içinde yayına gireceği, geliştirmenin %85 oranında tamamlanacağı, uygulamanın yayında olacağı ve kodu göndermek için sunucu satın alma sürecinin henüz başladığı varsayılmaktadır.

Geleneksel süreçler
DevOps'taki Süreçler

Yeni sunucular için sipariş verdikten sonra geliştirme ekibi test etmeye çalışır. Görev gücü, kuruluşların altyapıyı dağıtmak için ihtiyaç duyduğu kapsamlı belgeler üzerinde çalışıyor.
Yeni sunucular için sipariş verildiğinde, geliştirme ve operasyon ekipleri, yeni sunucuların kurulumuna yönelik süreçler ve evraklar üzerinde birlikte çalışır. Bu, altyapı gereksinimlerinizi daha iyi anlamanıza olanak tanır.

Yük devretme, yedeklilik, veri merkezi konumları ve depolama gereksinimlerine ilişkin bilgiler, derin etki alanı bilgisine sahip bir geliştirme ekibinden herhangi bir girdi alınmadığı için yanlış sunulmaktadır.
Yük devretme, yedeklilik, olağanüstü durum kurtarma, veri merkezi konumları ve depolama gereksinimlerine ilişkin ayrıntılar, geliştirme ekibinin girdileri nedeniyle biliniyor ve doğrudur.

Operasyon ekibinin, geliştirme ekibinin ilerleyişi hakkında hiçbir fikri yok. Ayrıca kendi fikirlerine dayanarak bir izleme planı geliştiriyor.

Operasyon ekibi, geliştirme ekibinin kaydettiği ilerlemenin tamamen farkındadır. Ayrıca geliştirme ekibiyle de etkileşime giriyor ve BT ve iş ihtiyaçlarını karşılayan bir izleme planı geliştirmek için birlikte çalışıyorlar. Ayrıca uygulama performansı izleme (APM) araçlarını da kullanırlar.

Bir uygulama başlatılmadan önce gerçekleştirilen bir yük testi, uygulamanın çökmesine neden olarak başlatılmasını geciktirir.
Bir uygulamayı çalıştırmadan önce yapılan yük testi performansın düşmesine neden olur. Geliştirme ekibi darboğazları hızlı bir şekilde çözer ve uygulama zamanında başlatılır.

DevOps Yaşam Döngüsü

DevOps, genel olarak kabul edilen belirli uygulamaların benimsenmesini içerir.

Sürekli planlama

Sürekli planlama, işin veya vizyonun değerini test etmek, sürekli uyum sağlamak, ilerlemeyi ölçmek, müşteri ihtiyaçlarından öğrenmek, çevikliğe uyum sağlamak için gerektiği şekilde yön değiştirmek ve iş planını yeniden oluşturmak için gereken kaynakları ve çıktıları belirleyerek küçükten başlamak için yalın ilkelere dayanır.

Ortak gelişme

İşbirliğine dayalı geliştirme süreci, farklı zaman dilimlerine yayılmış işletmelerin, geliştirme ekiplerinin ve test ekiplerinin sürekli olarak kaliteli yazılım sunmasına olanak tanır. Buna çoklu platform geliştirme, diller arası programlama desteği, kullanıcı hikayesi oluşturma, fikir geliştirme ve yaşam döngüsü yönetimi dahildir. İşbirliğine dayalı geliştirme, sık kod entegrasyonunu ve otomatikleştirilmiş yapıları teşvik eden sürekli entegrasyon sürecini ve uygulamasını içerir. Kodun bir uygulamaya sık sık dağıtılmasıyla, entegrasyon sorunları yaşam döngüsünün erken safhalarında (düzeltilmeleri daha kolay olduğunda) tespit edilir ve proje sürekli ve gözle görülür ilerleme gösterdiğinden sürekli geri bildirim yoluyla genel entegrasyon çabası azaltılır.

Sürekli test

Sürekli test, geliştirme ekiplerinin hız ile kaliteyi dengelemesine yardımcı olarak test maliyetini azaltır. Ayrıca hizmet sanallaştırma yoluyla test darboğazlarını ortadan kaldırır ve sistemler değiştikçe kolayca paylaşılabilen, dağıtılabilen ve güncellenebilen sanallaştırılmış test ortamları oluşturmayı kolaylaştırır. Bu yetenekler, test ortamlarının sağlanması ve bakımının maliyetini azaltır ve test döngüsü sürelerini kısaltarak entegrasyon testlerinin yaşam döngüsünde daha erken gerçekleşmesine olanak tanır.

Sürekli sürüm ve dağıtım

Bu teknikler, temel bir uygulamayı beraberinde getirir: sürekli sürüm ve dağıtım. Bu, temel süreçleri otomatikleştiren sürekli bir boru hattıyla sağlanır. Tek bir düğmeye basarak dağıtımı etkinleştirerek manuel adımları, kaynak bekleme sürelerini ve yeniden çalışmayı azaltır, böylece daha fazla sürüm, daha az hata ve tam şeffaflık elde edilir.

Otomasyon, istikrarlı ve güvenilir yazılım sürümünün sağlanmasında önemli bir rol oynar. En büyük zorluklardan biri derleme, regresyon, dağıtım ve altyapı oluşturma gibi manuel süreçleri alıp otomatikleştirmektir. Bu, kaynak kodu sürüm kontrolünü gerektirir; test ve dağıtım senaryoları; altyapı ve uygulama yapılandırma verileri; ve uygulamanın bağlı olduğu kitaplıklar ve paketler. Bir diğer önemli faktör ise tüm ortamların durumunu sorgulama yeteneğidir.

Sürekli izleme

Sürekli izleme, geliştirme ekiplerinin üretim ortamlarındaki uygulamaların üretime dağıtılmadan önce kullanılabilirliğini ve performansını anlamalarına yardımcı olan kurumsal düzeyde raporlama sağlar. Sürekli izlemeyle sağlanan erken geri bildirim, hataların maliyetini azaltmak ve projeleri doğru yöne yönlendirmek açısından kritik öneme sahiptir. Bu uygulama genellikle uygulama performansıyla ilgili ölçümleri ortaya çıkaran izleme araçlarını içerir.

Sürekli geri bildirim ve optimizasyon

Sürekli geri bildirim ve optimizasyon, müşteri akışının görsel bir temsilini sağlar ve sorunlu alanları tespit eder. Değeri en üst düzeye çıkarmak ve daha fazla işlemin başarıyla tamamlanmasını sağlamak için satış öncesi ve satış sonrası aşamalara geri bildirim dahil edilebilir. Tüm bunlar, davranışlarını ve iş etkilerini etkileyen müşteri sorunlarının temel nedeninin anında görselleştirilmesini sağlar.

Yeni Başlayanlar İçin DevOps Kılavuzu

DevOps'un Faydaları

DevOps, geliştiricilerin ve operasyonların ortak hedeflere ulaşmak için ekip olarak çalıştığı bir ortam yaratılmasına yardımcı olabilir. Bu süreçteki önemli bir kilometre taşı, sürekli entegrasyon ve sürekli teslimatın (CI/CD) uygulanmasıdır. Bu teknikler, ekiplerin yazılımı daha az hatayla daha hızlı piyasaya sürmesine olanak tanıyacak.

DevOps'un önemli faydaları şunlardır:

  • Tahmin edilebilirlik: DevOps, yeni sürümler için önemli ölçüde daha düşük bir hata oranı sunar.
  • Sürdürülebilirlik: DevOps, yeni bir sürümün başarısız olması veya bir uygulamanın çökmesi durumunda kolay kurtarmaya olanak tanır.
  • Tekrarlanabilirlik: Bir yapının veya kodun sürüm kontrolü, gerektiğinde önceki sürümleri geri yüklemenize olanak tanır.
  • Daha Yüksek Kalite: Altyapı sorunlarının ele alınması, uygulama geliştirmenin kalitesini artırır.
  • Pazara Çıkış Süresi: Yazılım dağıtımını optimize etmek, pazara çıkış süresini %50 azaltır.
  • Risk Azaltma: Yazılımın yaşam döngüsünde güvenliğin uygulanması, yaşam döngüsü boyunca kusurların sayısını azaltır.
  • Maliyet Verimliliği: Yazılım geliştirmede maliyet verimliliği arayışı üst düzey yönetimin ilgisini çekmektedir.
  • Kararlılık: Yazılım sistemi daha kararlı, güvenlidir ve değişiklikler denetlenebilir.
  • Daha büyük bir kod tabanını yönetilebilir parçalara ayırma: DevOps, büyük bir kod tabanını daha küçük, yönetilebilir parçalara ayırmanıza olanak tanıyan çevik geliştirme yöntemlerine dayanır.

DevOps ilkeleri

DevOps'un benimsenmesi, gelişen (ve gelişmeye devam eden) çeşitli ilkelerin ortaya çıkmasına neden oldu. Çoğu çözüm sağlayıcı, çeşitli tekniklerde kendi modifikasyonlarını geliştirmiştir. Bu ilkelerin tümü DevOps'a yönelik bütünsel bir yaklaşımı temel alır ve her büyüklükteki kuruluş bunları kullanabilir.

Üretim benzeri bir ortamda geliştirin ve test edin

Buradaki fikir, geliştirme ve kalite güvence (QA) ekiplerinin üretim sistemleri gibi davranan sistemler geliştirmesine ve test etmesine olanak tanımaktır; böylece uygulamanın dağıtıma hazır olmadan çok önce nasıl davrandığını ve performans gösterdiğini görebilirler.

Üç ana potansiyel sorunu çözmek için uygulamanın yaşam döngüsünde mümkün olduğu kadar erken bir zamanda üretim sistemlerine bağlanması gerekir. Öncelikle uygulamayı gerçek ortama yakın bir ortamda test etmenize olanak sağlar. İkinci olarak, uygulama teslim süreçlerini önceden test etmenize ve doğrulamanıza olanak tanır. Üçüncüsü, operasyon ekibinin, uygulamalar dağıtıldığında ortamlarının nasıl davranacağını yaşam döngüsünün başlarında test etmesine olanak tanır ve böylece son derece özelleştirilmiş, uygulama merkezli bir ortam yaratmalarına olanak tanır.

Tekrarlanabilir, güvenilir süreçlerle devreye alın

Bu prensip, geliştirme ve operasyon ekiplerinin tüm yazılım yaşam döngüsü boyunca çevik yazılım geliştirme süreçlerini desteklemesine olanak tanır. Otomasyon, yinelenen, güvenilir ve tekrarlanabilir süreçler oluşturmak için kritik öneme sahiptir. Bu nedenle kuruluşun sürekli, otomatik dağıtım ve teste olanak tanıyan bir dağıtım hattı oluşturması gerekir. Sık dağıtım aynı zamanda ekiplerin dağıtım süreçlerini test etmesine olanak tanır ve böylece canlı yayınlar sırasında dağıtım hatası riskini azaltır.

İşin kalitesinin izlenmesi ve kontrol edilmesi

Kuruluşlar üretimdeki uygulamaları izleme konusunda iyidir çünkü ölçümleri ve temel performans göstergelerini (KPI'ler) gerçek zamanlı olarak yakalayan araçlara sahiptirler. Bu prensip, izlemeyi yaşam döngüsünün erken safhalarına taşır ve otomatik testin, bir uygulamanın işlevsel ve işlevsel olmayan niteliklerini sürecin başlarında izlemesini sağlar. Bir uygulama test edildiğinde ve devreye alındığında kalite ölçümleri incelenmeli ve analiz edilmelidir. İzleme araçları, üretim sırasında ortaya çıkabilecek operasyonel ve kalite sorunlarına ilişkin erken uyarı sağlar. Bu göstergelerin tüm paydaşların erişebileceği ve anlayabileceği bir formatta toplanması gerekmektedir.

Geri Bildirim Döngülerinin İyileştirilmesi

DevOps süreçlerinin hedeflerinden biri kuruluşların daha hızlı yanıt vermesini ve değişiklik yapmasını sağlamaktır. Yazılım sunumunda bu hedef, kuruluşun geri bildirimi erkenden almasını ve ardından gerçekleştirilen her eylemden hızlı bir şekilde ders almasını gerektirir. Bu ilke, kuruluşların paydaşların geri bildirim yoluyla erişmesine ve etkileşimde bulunmasına olanak tanıyan iletişim kanalları oluşturmasını gerektirir. Geliştirme, proje planlarınızı veya önceliklerinizi ayarlayarak yapılabilir. İmalat, üretim ortamını iyileştirerek hareket edebilir.

dev

  • Planlama: Kanboard, Wekan ve diğer Trello alternatifleri; GitLab, Tuleap, Redmine ve diğer JIRA alternatifleri; Mattermost, Roit.im, IRC ve diğer Slack alternatifleri.
  • Kod yazma: Git, Gerrit, Bugzilla; CI/CD için Jenkins ve diğer açık kaynaklı araçlar
  • montaj: Apache Maven, Gradle, Apache Ant, Packer
  • Testler: JUnit, Salatalık, Selenyum, Apache JMeter

Ops

  • Sürüm, Dağıtım, Operasyonlar: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, vb., Netflix Archaius, Terraform
  • İzleme: Grafana, Prometheus, Nagios, InfluxDB, Fluentd ve bu kılavuzda yer alan diğerleri

(*Operasyon araçları, operasyon ekipleri tarafından kullanım sırasına göre numaralandırılmıştır ancak bunların araçları, sürüm ve dağıtım araçlarının yaşam döngüsü aşamalarıyla örtüşmektedir. Okunabilirlik kolaylığı sağlamak amacıyla numaralandırma kaldırılmıştır.)

Sonuç olarak

DevOps, geliştiricileri ve operasyonları tek bir birim olarak bir araya getirmeyi amaçlayan, giderek daha popüler hale gelen bir metodolojidir. Benzersizdir, geleneksel BT operasyonlarından farklıdır ve Çevik'i tamamlar (ancak o kadar esnek değildir).

Yeni Başlayanlar İçin DevOps Kılavuzu

SkillFactory'den ücretli çevrimiçi kurslar alarak aranan bir mesleğe sıfırdan nasıl sahip olabileceğiniz veya beceri ve maaş açısından Seviye Atlamanın ayrıntılarını öğrenin:

daha fazla kurs

yararlı

Kaynak: habr.com

Yorum ekle