Referans: Sürekli Entegrasyon süreci nasıl çalışır?

Bugün bu terimin tarihine bakacağız, CI'yi uygulamanın zorluklarını tartışacağız ve onunla çalışmanıza yardımcı olacak birkaç popüler araç sunacağız.

Referans: Sürekli Entegrasyon süreci nasıl çalışır?
/flickr/ Altuğ Karakoç / CC BY / Fotoğraf değiştirildi

Dönem

Sürekli Entegrasyon, sık sık proje oluşturmayı ve kod testini içeren bir uygulama geliştirme yaklaşımıdır.

Amaç, entegrasyon sürecini öngörülebilir hale getirmek ve olası hataları ve hataları erken bir aşamada tespit ederek bunları düzeltmek için daha fazla zaman sağlamaktır.

Sürekli Entegrasyon terimi ilk olarak 1991'de ortaya çıktı. UML dilinin yaratıcısı tarafından tanıtıldı Grady Butch (Grady Booch). Mühendis, kendi geliştirme uygulamasının bir parçası olarak CI kavramını tanıttı: Booch yöntemi. Nesneye yönelik sistemler tasarlanırken mimarinin aşamalı olarak iyileştirilmesi anlamına geliyordu. Gradi sürekli entegrasyon için herhangi bir gereklilik açıklamadı. Ancak daha sonra kitabında “Uygulamalarla Nesneye Dayalı Analiz ve Tasarım“Metodolojinin amacının “dahili yayınların” yayınlanmasını hızlandırmak olduğunu söyledi.

Öykü

CI, 1996 yılında metodolojinin yaratıcıları tarafından benimsendi. aşırı programlama (XP) - Kent Beck (Kent Beck) ve Ron Jeffries (Ron Jeffries). Sürekli entegrasyon, yaklaşımlarının on iki temel ilkesinden biri haline geldi. XP'nin kurucuları CI metodolojisinin gereksinimlerini açıkladılar ve projenin günde birkaç kez inşa edilmesi gerektiğine dikkat çektiler.

2000'li yılların başında Agile Alliance'ın kurucularından biri sürekli entegrasyon metodolojisini desteklemeye başladı Martin Fowler (Martin Fowler). CI ile yaptığı deneyler bu alandaki ilk yazılım aracı olan CruiseControl'ün ortaya çıkmasına yol açtı. Yardımcı program Martin'in meslektaşı Matthew Foemmel tarafından oluşturuldu.

Araçtaki derleme döngüsü, sürüm kontrol sistemini kod tabanındaki değişiklikler açısından düzenli olarak kontrol eden bir arka plan programı olarak uygulanır. Çözüm bugün indirilebilir - tarafından dağıtıldı BSD benzeri bir lisans altında.

CI yazılımının ortaya çıkışıyla birlikte giderek daha fazla şirket bu uygulamayı benimsemeye başladı. Forrester araştırmasına göre [sayfa 5 rapor], 2009'da ankete katılan elli teknoloji şirketinin %86'sı CI yöntemlerini kullandı veya uyguladı.

Günümüzde Sürekli Entegrasyon uygulaması çok çeşitli sektörlerden kuruluşlar tarafından kullanılmaktadır. 2018 yılında büyük bir bulut sağlayıcısı, hizmetler, eğitim ve finans sektörlerindeki şirketlerin BT uzmanları arasında bir anket gerçekleştirdi. Altı bin katılımcının %58'i çalışmalarında CI araçlarını ve ilkelerini kullandıklarını söyledi.

Bu nasıl çalışıyor

Sürekli entegrasyon iki araca dayanır: sürüm kontrol sistemi ve CI sunucusu. İkincisi, bulut ortamındaki fiziksel bir cihaz veya sanal makine olabilir. Geliştiriciler günde bir veya daha fazla kez yeni kod yüklerler. CI sunucusu onu tüm bağımlılıklarla birlikte otomatik olarak kopyalar ve oluşturur. Daha sonra entegrasyon ve birim testlerini çalıştırır. Testler başarıyla geçerse CI sistemi kodu dağıtır.

Genel süreç diyagramı aşağıdaki gibi temsil edilebilir:

Referans: Sürekli Entegrasyon süreci nasıl çalışır?

CI metodolojisi geliştiriciler için bir takım gereksinimler getirir:

  • Sorunları hemen düzeltin. Bu prensip CI'ya aşırı programlamadan geldi. Hataları düzeltmek geliştiricilerin en büyük önceliğidir.
  • Süreçleri otomatikleştirin. Geliştiriciler ve yöneticiler sürekli olarak entegrasyon sürecindeki darboğazları aramalı ve bunları ortadan kaldırmalıdır. Örneğin, entegrasyonda sıklıkla bir darboğaz vardır. olduğunu test yapmak.
  • Toplantıları mümkün olduğunca sık yapın. Ekibin çalışmasını senkronize etmek için günde bir kez.

Uygulama zorlukları

İlk sorun yüksek işletme maliyetleridir. Bir şirket açık CI araçlarını kullansa bile (buna daha sonra değineceğiz), yine de altyapı desteğine para harcamak zorunda kalacak. Ancak bulut teknolojisi çözüm olabilir.

Farklı ölçekli bilgisayar konfigürasyonlarının montajını basitleştirirler. Şirketin artısı ödeme yalnızca kullanılan kaynaklar için; bu da altyapıdan tasarruf etmenize yardımcı olur.

Anketlere göre [sayfa 14 makaleler], sürekli entegrasyon şirket çalışanlarının (en azından ilk etapta) üzerindeki yükü artırır. Yeni araçlar öğrenmeleri gerekiyor ve meslektaşları eğitim konusunda her zaman yardımcı olamıyor. Bu nedenle, hareket halindeyken yeni çerçeveler ve hizmetlerle uğraşmanız gerekir.

Üçüncü zorluk otomasyonla ilgili sorunlardır. Otomatik testlerin kapsamına girmeyen büyük miktarda eski koda sahip kuruluşlar bu sorunla karşı karşıyadır. Bu, CI'nın tam olarak uygulanmasından önce kodun basitçe yeniden yazılmasına yol açar.

Referans: Sürekli Entegrasyon süreci nasıl çalışır?
/flickr/ onların / CC BY-SA

Kim kullanır

Metodolojinin faydalarını ilk takdir edenler arasında BT devleri yer aldı. Google использует 2000'li yılların ortasından bu yana sürekli entegrasyon. CI, arama motorundaki gecikme sorununu çözmek için uygulandı. Sürekli entegrasyon, sorunların hızla tespit edilmesine ve çözülmesine yardımcı oldu. Artık CI, BT devinin tüm departmanları tarafından kullanılıyor.

Sürekli entegrasyon küçük şirketlere de yardımcı olur ve CI araçları finans ve sağlık kuruluşları tarafından da kullanılır. Örneğin Morningstar'da sürekli entegrasyon hizmetleri, güvenlik açıklarının %70 daha hızlı kapatılmasına yardımcı oldu. Ve Philips Healthcare medikal platformu, güncelleme testlerinin hızını iki katına çıkarmayı başardı.

Araçlar

CI için bazı popüler araçlar şunlardır:

  • Jenkins En popüler CI sistemlerinden biridir. Çeşitli VCS, bulut platformları ve diğer hizmetlerle entegrasyon için binden fazla eklentiyi destekler. Ayrıca 1cloud'da Jenkins'i kullanıyoruz: tool DevOps sistemimize dahil. Test amaçlı Git şubesini düzenli olarak kontrol ediyor.
  • yapı robotu — kendi sürekli entegrasyon süreçlerinizi yazmaya yönelik bir python çerçevesi. Aracın ilk kurulumu oldukça karmaşıktır ancak bu, geniş kişiselleştirme seçenekleriyle telafi edilir. Çerçevenin avantajları arasında kullanıcılar düşük kaynak yoğunluğunu vurgulamaktadır.
  • Yolcu Salonu CI Pivotal'ın Docker konteynerlerini kullanan bir sunucusudur. Concourse CI her türlü araçla ve sürüm kontrol sistemiyle entegre olur. Geliştiriciler, sistemin her büyüklükteki şirkette çalışmaya uygun olduğunu belirtiyor.
  • Gitlab CI GitLab sürüm kontrol sistemine yerleşik bir araçtır. Hizmet bulutta çalışır ve yapılandırma için YAML dosyalarını kullanır. Concourse, Gitlab CI gibi geçerlidir Farklı süreçlerin birbirinden yalıtılmasına yardımcı olan Docker kapsayıcıları.
  • Kod gemisi GitHub, GitLab ve BitBucket ile çalışan bir bulut CI sunucusudur. Platform uzun başlangıç ​​kurulumu gerektirmez; önceden yüklenmiş standart CI işlemleri Codeship'te mevcuttur. Küçük (ayda 100 derlemeye kadar) ve açık kaynaklı projeler için Codeship ücretsiz olarak mevcuttur.

Kurumsal blogumuzdan materyaller:

Kaynak: habr.com

Yorum ekle