Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma
Yeni başlayanlar için ilk DevOps zincirinizi beş adımda oluşturun.

DevOps, çok yavaş, bağlantısız ve başka türlü sorunlu geliştirme süreçleri için her derde deva haline geldi. Ancak DevOps konusunda çok az bilgiye ihtiyacınız var. DevOps zinciri gibi kavramları ve beş adımda nasıl oluşturulacağını kapsayacaktır. Bu tam bir rehber değil, yalnızca genişletilebilen bir "balık". Tarihle başlayalım.

DevOps'a Giriş

Citi Group'ta bulutlarla çalışır ve Citi'nin bulut altyapısını yönetmek için bir IaaS web uygulaması geliştirirdim, ancak geliştirme zincirini nasıl optimize edeceğim ve geliştiriciler arasındaki kültürü nasıl iyileştireceğim her zaman ilgimi çekmiştir. Bulut Mimarisi ve Altyapısı CTO'muz Greg Lavender bana bu kitabı önerdi. "Phoenix" Projesi. DevOps ilkelerini çok güzel açıklıyor ve bir roman gibi okunuyor.

Arkadaki tablo, şirketlerin yeni sürümleri ne sıklıkta kullanıma sunduğunu gösterir:

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Amazon, Google ve Netflix bu kadar çok şeyi yaymayı nasıl başarıyor? Ve çok basit: Neredeyse mükemmel bir DevOps zincirinin nasıl oluşturulacağını anladılar.

DevOps'a geçene kadar Citi'de işler bizim için çok farklıydı. Daha sonra ekibimin farklı ortamları vardı, ancak geliştirme sunucusuna teslimatı manuel olarak yaptık. Tüm geliştiricilerin, IBM WebSphere Application Server Community Edition tabanlı yalnızca bir geliştirme sunucusuna erişimi vardı. Eşzamanlı bir teslim etme girişimi ile sunucu "düştü" ve her seferinde kendi aramızda "acı verici bir şekilde" müzakere etmek zorunda kaldık. Ayrıca testlerle yetersiz kod kapsamımız, zaman alıcı bir manuel teslim sürecimiz ve bazı görevler veya müşteri gereksinimlerinin yardımıyla kodun teslimini izlemenin hiçbir yolu yoktu.

Acilen bir şeyler yapılması gerektiği açıktı ve ben de benzer düşünen bir meslektaş buldum. Birlikte ilk DevOps zincirini oluşturmaya karar verdik - o bir sanal makine ve bir Tomcat uygulama sunucusu kurdu ve ben Jenkins, Atlassian Jira ve BitBucket ile entegrasyon ve testlerle kod kapsamı ile ilgilendim. Proje başarılı oldu: Geliştirme zincirini tamamen otomatik hale getirdik, geliştirme sunucusunda neredeyse %100 çalışma süresi elde ettik, testlerle kod kapsamını izleyip iyileştirebildik ve bir Git şubesi, bir Jira teslimine ve sorununa bağlanabildi. Ve DevOps zincirini oluşturmak için kullandığımız araçların neredeyse tamamı açık kaynaktı.

Aslında zincir basitleştirildi çünkü Jenkins veya Ansible kullanarak gelişmiş yapılandırmalar bile uygulamadık. Ama başardık. Belki de bu ilkenin bir sonucudur. Pareto (aka 80/20 kuralı).

DevOps ve CI/CD Zincirinin Kısa Açıklaması

DevOps'un farklı tanımları vardır. Çevik gibi DevOps, farklı disiplinleri içerir. Ancak çoğu kişi aşağıdaki tanımla hemfikir olacaktır: DevOps, temel ilkesi geliştiricilerin ve diğer çalışanların "aynı dalga boyunda" olduğu, el emeğinin otomatikleştirildiği bir kültür yaratmak olan bir yazılım geliştirme yöntemi veya yaşam döngüsüdür. herkes en iyi yaptığı işi yapar, doğum sıklığı artar, iş verimliliği artar, esneklik artar.

DevOps ortamı oluşturmak için araçlar tek başına yeterli olmasa da vazgeçilmezdir. Bunlardan en önemlisi sürekli entegrasyon ve sürekli teslimattır (CI/CD). Zincirde her ortam için farklı aşamalar vardır (ör. DEV (geliştirme), INT (entegrasyon), TST (test), QA (kalite güvence), UAT (kullanıcı kabul testi), STG (hazırlık), PROD (kullanım)) , manuel görevler otomatikleştirilir, geliştiriciler kaliteli kod üretebilir, teslim edebilir ve kolayca yeniden oluşturabilir.

Bu not, aşağıdaki resimde gösterildiği gibi, açık kaynak araçları kullanılarak beş adımda bir DevOps zincirinin nasıl oluşturulacağını açıklar.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

İşe dönelim.

1. Adım: CI/CD Platformu

Her şeyden önce, bir CI/CD aracına ihtiyacınız var. Jenkins, DevOps hareketini yaygınlaştıran ve CICD için fiili standart haline gelen, Java ile yazılmış, MIT lisanslı, açık kaynaklı bir CI/CD aracıdır.

Jenkins nedir? Çeşitli hizmetler ve araçlar için sihirli bir kontrol paneliniz olduğunu hayal edin. Jenkins gibi bir CI/CD aracı tek başına işe yaramaz, ancak farklı araç ve hizmetlerle çok güçlü hale gelir.

Jenkins'e ek olarak, başka birçok açık kaynak araç var, herhangi birini seçin.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Bir CI/CD aracıyla bir DevOps işlemi şöyle görünür:

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Localhost'ta bir CI/CD aracınız var, ancak henüz yapacak çok şey yok. Bir sonraki adıma geçelim.

2. Adım: Sürüm Oluşturma

Bir CI/CD aracının büyüsünü test etmenin en iyi (ve muhtemelen en kolay) yolu, onu bir kaynak kontrol yönetimi (SCM) aracıyla entegre etmektir. Sürüm kontrolüne neden ihtiyacınız var? Diyelim ki bir başvuru yapıyorsunuz. Java, Python, C++, Go, Ruby, JavaScript veya bir vagon ve küçük bir araba olan başka herhangi bir dilde yazarsınız. Yazdıklarınıza kaynak kodu denir. İlk başta, özellikle yalnız çalışıyorsanız, her şeyi yerel bir dizine kaydedebilirsiniz. Ancak proje büyüdükçe ve daha fazla kişi katıldıkça, kod değişikliklerini paylaşmanın ve değişiklikleri birleştirirken çakışmaları önlemenin bir yoluna ihtiyaç duyarsınız. Ayrıca, yedekleri kullanmadan ve kod dosyaları için kopyala-yapıştır yöntemini kullanmadan önceki sürümleri bir şekilde geri yüklemeniz gerekir.

Ve burada hiçbir yerde SCM olmadan. SCM, kodu havuzlarda depolar, sürümlerini yönetir ve geliştiriciler arasında koordine eder.

Pek çok SCM aracı vardır, ancak Git haklı olarak fiili standart haline gelmiştir. Kullanmanızı tavsiye ederim, ancak başka seçenekler de var.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

SCM'yi ekledikten sonra DevOps ardışık düzeni şu şekilde görünür.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

CI/CD aracı, kaynak kodu yükleme ve indirmeyi ve ekip işbirliğini otomatikleştirebilir. Fena değil? Ama şimdi bundan milyarlarca kullanıcı tarafından sevilen çalışan bir uygulama nasıl yapılır?

3. Adım: Otomasyon Aracı Oluşturun

Her şey olması gerektiği gibi gidiyor. Kod yükleyebilir, kaynak denetiminde değişiklik yapabilir ve arkadaşlarınızı sizinle çalışmaya davet edebilirsiniz. Ancak henüz bir uygulamanız yok. Bunun bir web uygulaması olması için, dağıtım için derlenip paketlenmesi veya yürütülebilir dosya olarak çalıştırılması gerekir. (JavaScript veya PHP gibi yorumlanmış bir programlama dilinin derlenmesi gerekmez.)

Bir derleme otomasyon aracı kullanın. Hangi aracı seçerseniz seçin, kodu doğru biçimde bir araya getirecek ve temizleme, derleme, test etme ve teslim etme işlemlerini otomatikleştirecektir. Derleme araçları dile göre değişir, ancak aşağıdaki açık kaynak seçenekleri yaygın olarak kullanılır.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Mükemmel! Şimdi, CI/CD aracının bunları oluşturması için yapı otomasyonu aracı yapılandırma dosyalarını kaynak denetime ekleyelim.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

İyi hissettiriyor. Ama tüm bunlar şimdi nerede ortaya çıkacak?

Adım 4: Web Uygulama Sunucusu

Yani, yürütülebilen veya kullanıma sunulabilen paketlenmiş bir dosyanız var. Bir uygulamanın gerçekten kullanışlı olması için bir tür hizmete veya arayüze sahip olması gerekir, ancak hepsini bir yere koymanız gerekir.

Bir web uygulaması, bir web uygulama sunucusunda barındırılabilir. Uygulama sunucusu, paketlenmiş mantığı yürütebileceğiniz, arabirimleri işleyebileceğiniz ve bir soket üzerinden web hizmetlerini kullanıma sunabileceğiniz bir ortam sağlar. Uygulama sunucusunu yüklemek için bir HTTP sunucusuna ve birkaç başka ortama (örneğin bir sanal makine) ihtiyacınız vardır. Şimdilik, ilerledikçe tüm bunlarla uğraştığınızı varsayalım (yine de aşağıda kaplardan bahsedeceğim).

Birkaç açık web uygulama sunucusu vardır.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Zaten neredeyse çalışan bir DevOps zincirimiz var. İyi iş!

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Prensip olarak burada durabilir, sonra kendiniz halledebilirsiniz, ancak kodun kalitesinden bahsetmeye değer.

5. Adım: Kapsamı test edin

Test etmek çok zaman ve çaba gerektirir, ancak hataları hemen bulmak ve son kullanıcıları memnun etmek için kodu geliştirmek daha iyidir. Bu amaçla, yalnızca kodu test etmekle kalmayacak, aynı zamanda nasıl iyileştirileceği konusunda tavsiyelerde bulunacak birçok açık araç bulunmaktadır. Çoğu CI/CD aracı bu araçlara bağlanabilir ve süreci otomatikleştirebilir.

Test etme iki bölüme ayrılmıştır: test yazmak ve yürütmek için test çerçeveleri ve kod kalitesini iyileştirmeye yönelik ipuçları içeren araçlar.

Test Çerçeveleri

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Kaliteli ipuçları içeren araçlar

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Bu araçların ve çerçevelerin çoğu Java, Python ve JavaScript için yazılmıştır çünkü C++ ve C# tescillidir (GCC açık kaynak olmasına rağmen).

Test kapsamı araçlarını uyguladık ve şimdi DevOps boru hattı, eğitimin başındaki resim gibi görünmelidir.

Ek adımlar

Konteynerler

Daha önce de söylediğim gibi, bir uygulama sunucusu bir sanal makinede veya bir sunucuda barındırılabilir, ancak kapsayıcılar daha popülerdir.

kaplar nedir? Kısacası, bir sanal makinede, işletim sistemi genellikle uygulamadan daha fazla yer kaplar ve bir kapsayıcı genellikle birkaç kitaplık ve yapılandırma ile yeterlidir. Bazı durumlarda, sanal makineler vazgeçilmezdir, ancak kapsayıcı, uygulamayı sunucuyla birlikte hiçbir ek ücret ödemeden barındırabilir.

Kapsayıcılar için genellikle Docker ve Kubernetes alınır, ancak başka seçenekler de vardır.

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Docker ve Kubernetes hakkındaki makaleleri şu adreste okuyun: Opensource.com:

Ara yazılım otomasyon araçları

DevOps zincirimiz, bir uygulamanın işbirliğine dayalı olarak oluşturulmasına ve teslim edilmesine odaklanmıştır, ancak DevOps araçlarıyla yapabileceğiniz başka ilginç şeyler de vardır. Örneğin, ara yazılım otomasyon araçları olarak da bilinen Kod Olarak Altyapı (IaC) araçlarını kullanın. Bu araçlar, ara yazılım için yükleme, yönetim ve diğer görevlerin otomatikleştirilmesine yardımcı olur. Örneğin bir otomasyon aracı, uygulamaları (web uygulama sunucusu, veri tabanı, izleme araçları) doğru konfigürasyonlarla alıp uygulama sunucusuna gönderebilir.

Açık ara yazılım otomasyon araçları için bazı seçenekler şunlardır:

Aptallar Kılavuzu: Açık Kaynak Araçları ile DevOps Zincirleri Oluşturma

Makalelerdeki ayrıntılar Opensource.com:

Ve şimdi ne?

Bu buzdağının sadece görünen kısmı. DevOps zinciri çok daha fazlasını yapabilir. Bir CI/CD aracıyla başlayın ve işinizi kolaylaştırmak için başka neleri otomatikleştirebileceğinizi görün. unutma açık iletişim araçları etkili işbirliği için.

İşte yeni başlayanlar için daha iyi DevOps makaleleri:

DevOps'u açık çevik araçlarla da entegre edebilirsiniz:

Kaynak: habr.com

Yorum ekle