Pandhuan Pamula: Nggawe Pipa DevOps

Yen sampeyan anyar karo DevOps, deleng pandhuan limang langkah iki kanggo nggawe pipa pertama sampeyan.

Pandhuan Pamula: Nggawe Pipa DevOps

DevOps wis dadi solusi standar kanggo ndandani proses pangembangan piranti lunak sing alon, disjointed utawa rusak. Masalahe yaiku yen sampeyan anyar karo DevOps lan ora ngerti arep miwiti saka ngendi, sampeyan bisa uga ora ngerti babagan teknik kasebut. Artikel iki bakal ngrembug definisi pipa DevOps lan uga bakal menehi instruksi limang langkah kanggo nggawe. Nalika tutorial iki ora lengkap, kudu menehi dhasar kanggo miwiti lelungan lan nggedhekake kawruh ing mangsa ngarep. Nanging ayo miwiti karo sejarah.

Perjalanan DevOps Kula

Aku sadurunge kerja ing tim awan Citi Group ngembangake aplikasi web Infrastructure-as-a-Service (IaaS) kanggo ngatur infrastruktur awan Citi, nanging aku tansah kasengsem carane nggawe proses pangembangan luwih efisien lan nggawa owah-owahan budaya sing positif menyang tim pangembangan. Aku nemokake jawaban ing buku sing disaranake dening Greg Lavender, CTO Cloud Architecture and Infrastructure ing Citi. Buku kasebut diarani Proyek Phoenix (Proyek Phoenix), lan nerangake prinsip DevOps, nanging diwaca kaya novel.

Tabel ing mburi buku nuduhake sepira kerepe perusahaan beda-beda masang sistem ing lingkungan rilis:

Amazon: 23 saben dina
Google: 5 saben dina
Netflix: 500 saben dina
Facebook: Sedina sepisan
Twitter: 3 kaping seminggu
Perusahaan khas: Sepisan saben 9 sasi

Kepiye frekuensi Amazon, Google lan Netflix bisa uga? Iki amarga perusahaan kasebut wis ngerti carane nggawe pipa DevOps sing meh sampurna.

Kita adoh saka iki nganti kita ngetrapake DevOps ing Citi. Nalika iku, timku duwe lingkungan sing beda-beda, nanging panyebaran ing server pangembangan rampung manual. Kabeh pangembang nduweni akses menyang mung siji server pangembangan adhedhasar IBM WebSphere Application Server Community Edition. Masalahe yaiku server bakal mati nalika akeh pangguna nyoba nyebarake ing wektu sing padha, mula para pangembang kudu ngandhani maksude siji-sijine, sing cukup lara. Kajaba iku, ana masalah karo jangkoan kode tes tingkat rendah, proses penyebaran manual sing rumit, lan ora bisa nglacak penyebaran kode sing ana gandhengane karo tugas utawa crita pangguna tartamtu.

Aku nyadari yen ana sing kudu ditindakake lan nemokake kanca sing padha. Kita mutusake kanggo kolaborasi kanggo mbangun pipa DevOps awal - dheweke nyiyapake mesin virtual Tomcat lan server aplikasi nalika aku kerja ing Jenkins, nggabungake Atlassian Jira lan BitBucket, lan nggarap jangkoan kode test. Proyèk sisih iki sukses banget: kita meh rampung ngotomatisasi akeh proses, entuk meh 100% uptime ing server pangembangan kita, nyedhiyakake pelacakan lan jangkoan tes kode sing luwih apik, lan nambah kemampuan kanggo nyambungake cabang Git menyang masalah utawa penyebaran Jira. Umume alat sing digunakake kanggo mbangun pipa DevOps yaiku sumber terbuka.

Saiki aku ngerti carane gampang pipa DevOps kita: kita ora nggunakake ekstensi kaya file Jenkins utawa Ansible. Nanging, pipa prasaja iki bisa digunakake kanthi apik, bisa uga amarga prinsip Pareto (uga dikenal minangka aturan 80/20).

A Brief Pambuka kanggo DevOps lan CI/CD Pipeline

Yen sampeyan takon sawetara wong, "Apa DevOps?", Sampeyan bisa uga bakal entuk sawetara jawaban sing beda. DevOps, kaya Agile, wis berkembang nganti pirang-pirang disiplin, nanging umume wong bakal setuju babagan sawetara perkara: DevOps minangka praktik pangembangan piranti lunak utawa siklus urip pangembangan piranti lunak (SDLC) sing prinsip utama ngganti budaya ing ngendi pangembang lan non- pangembang ana ing lingkungan sing:

Operasi sing sadurunge ditindakake kanthi manual wis otomatis;
Saben uwong nindakake apa sing paling apik;
Jumlah implementasine sajrone wektu tartamtu mundhak; Throughput mundhak;
Tambah fleksibilitas pembangunan.

Nalika duwe piranti lunak sing tepat ora mung siji sing sampeyan butuhake kanggo nggawe lingkungan DevOps, sawetara alat penting. Alat utama yaiku integrasi terus-terusan lan penyebaran terus (CI / CD). Ing saluran pipa iki, lingkungan duwe tahapan sing beda-beda (umpamane DEV, INT, TST, QA, UAT, STG, PROD), akeh operasi sing otomatis, lan pangembang bisa nulis kode kualitas dhuwur, entuk ketangkasan pangembangan, lan tingkat penyebaran sing dhuwur.

Artikel iki nggambarake pendekatan limang langkah kanggo nggawe pipa DevOps kaya sing ditampilake ing diagram ing ngisor iki nggunakake alat open source.

Langkah 1: Metode CI/CD

Pisanan sing sampeyan butuhake yaiku alat CI / CD. Jenkins, alat open source adhedhasar Jawa lan dilisensi ing lisensi MIT, minangka alat sing populer DevOps lan wis dadi standar de facto.

Dadi apa Jenkins? Mikir minangka sawetara jinis remot universal gaib sing bisa ngobrol lan ngatur macem-macem layanan lan alat. Dhewe, alat CI / CD kaya Jenkins ora ana gunane, nanging dadi luwih kuat amarga nyambung menyang alat lan layanan sing beda.

Jenkins mung salah siji saka akeh alat CI/CD open source sing bisa digunakake kanggo mbangun pipa DevOps.

Jenkins: Creative Commons lan MIT
Travis CI: MIT
CruiseControl:BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU

Mangkene proses DevOps karo alat CI/CD:

Pandhuan Pamula: Nggawe Pipa DevOps

Sampeyan duwe alat CI / CD sing mlaku ing localhost, nanging ora akeh sing bisa ditindakake saiki. Ayo pindhah menyang tahap sabanjure perjalanan DevOps.

Langkah 2: Ngatur Sistem Kontrol Sumber

Cara paling apik (lan bisa uga paling gampang) kanggo verifikasi manawa alat CI / CD sampeyan bisa nindakake sihir yaiku nggabungake karo alat kontrol kode sumber (SCM). Napa sampeyan butuh kontrol sumber? Contone, sampeyan lagi ngembangake aplikasi. Saben sampeyan nggawe aplikasi, sampeyan program, lan ora Matter apa sampeyan nggunakake Java, Python, C ++, Go, Ruby, JavaScript, utawa zillions saka basa program. Kode sing sampeyan tulis diarani kode sumber. Ing wiwitan, utamane yen sampeyan lagi kerja dhewe, mesthine ora apa-apa kanggo nyelehake kabeh ing direktori lokal. Nanging nalika proyek dadi luwih gedhe lan sampeyan ngajak wong liya kanggo kolaborasi, sampeyan butuh cara kanggo nyegah konflik nalika nuduhake modifikasi kanthi efektif. Sampeyan uga mbutuhake cara kanggo mulihake versi sadurunge, amarga nggawe serep lan nyalin / nempel menyang dheweke dadi ora bisa digunakake. Sampeyan (lan kanca-kanca) butuh sing luwih apik.

Iki ngendi kontrol kode sumber dadi meh kabutuhan. Alat iki nyimpen kode sampeyan ing repositori, nglacak versi, lan koordinat karya peserta proyek.

Nalika ana akeh alat kontrol sumber ing kana, Git minangka standar, lan pancen bener. Aku banget nyaranake nggunakake Git, sanajan ana opsi open source liyane yen sampeyan seneng.

Git: GPLv2 lan LGPL v2.1
Subversi: Apache 2.0
Concurrent Versions System (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+

Iki minangka pipa DevOps kanthi tambahan kontrol kode sumber.

Pandhuan Pamula: Nggawe Pipa DevOps

Alat CI/CD bisa ngotomatisasi proses review, akuisisi kode sumber, lan kolaborasi antarane anggota. Ora ala? Nanging kepiye sampeyan ngowahi aplikasi kasebut dadi aplikasi sing bisa digunakake supaya milyaran wong bisa nggunakake lan ngapresiasi?

Langkah 3: Nggawe Alat Otomasi Mbangun

apik tenan! Sampeyan bisa mriksa kode lan nggawe owahan kanggo kontrol sumber, lan ngajak kanca-kanca kanggo kolaborasi ing pembangunan. Nanging sampeyan durung nggawe aplikasi. Kanggo nggawe aplikasi web, kudu dikompilasi lan dikemas ing format kumpulan sing bisa disebarake utawa mbukak minangka file sing bisa dieksekusi. (Elinga yen basa pamrograman sing diinterpretasikake kayata JavaScript utawa PHP ora perlu dikompilasi).

Gunakake alat otomatisasi mbangun. Ora preduli alat otomatisasi sing sampeyan gunakake, kabeh duwe tujuan sing padha: mbangun kode sumber menyang sawetara format sing dikarepake lan ngotomatisasi tugas ngresiki, nyusun, nguji, lan nyebarake menyang lingkungan tartamtu. Alat mbangun bakal beda-beda gumantung saka basa pamrograman sampeyan, nanging ing kene ana sawetara opsi open source sing umum.

Judhul
Lisensi
Basa pemrograman

Maven
Apache 2.0
Jawa

Ant
Apache 2.0
Jawa

Kencan
Apache 2.0
Jawa

basel
Apache 2.0
Jawa

nggawe
GNU
N / A

ngorok
MIT
JavaScript

Gulp
MIT
JavaScript

Tukang gawe
Apache
Ruby

Rake
MIT
Ruby

AAP
GNU
Python

SCON
MIT
Python

BitBake
GPLv2
Python

cake
MIT
C#

ASDF
Ekspatriat (MIT)
LISP

Cabal
BSD
Haskell

apik tenan! Sampeyan bisa nglebokake file konfigurasi alat otomatisasi menyang sistem kontrol sumber lan supaya alat CI / CD nggabungake kabeh.

Pandhuan Pamula: Nggawe Pipa DevOps

Kabeh apik, ta? Nanging ing endi kanggo masang aplikasi sampeyan?

Langkah 4: Server Aplikasi Web

Saiki, sampeyan duwe file paket sing bisa dieksekusi utawa bisa diinstal. Kanggo aplikasi apa wae sing bener-bener migunani, kudu menehi sawetara layanan utawa antarmuka, nanging sampeyan butuh wadhah kanggo dadi tuan rumah aplikasi sampeyan.

Server aplikasi web mung minangka wadhah kasebut. Server nyedhiyakake lingkungan ing ngendi logika paket sing disebarake bisa ditetepake. Server uga menehi antarmuka lan nawakake layanan web kanthi mbukak soket menyang jagad njaba. Sampeyan mbutuhake server HTTP, uga sawetara lingkungan (kaya mesin virtual) kanggo nginstal. Saiki, ayo nganggep sampeyan bakal sinau luwih lengkap babagan iki (sanajan aku bakal nutupi wadhah ing ngisor iki).

Ana sawetara server aplikasi web open source.

Judhul
Lisensi
Basa pemrograman

Tomcat
Apache 2.0
Jawa

Jetty
Apache 2.0
Jawa

Mabur Liar
GNU Lesser Public
Jawa

KacaFish
CDDL & GNU Kurang Umum
Jawa

Django
3-Pasal BSD
Python

tornado
Apache 2.0
Python

gunicorn
MIT
Python

Python
MIT
Python

Ril
MIT
Ruby

Node.js
MIT
Javascript

Pipa DevOps sampeyan meh siap digunakake. Kerja apik!

Pandhuan Pamula: Nggawe Pipa DevOps

Nalika sampeyan bisa mandheg ing kana lan nangani integrasi dhewe, kualitas kode minangka prekara sing penting kanggo pangembang aplikasi sing kudu kuwatir.

Langkah 5: Cakupan Pengujian Kode

Ngleksanakake tes bisa dadi syarat liyane sing rumit, nanging pangembang kudu nyekel kewan omo ing aplikasi luwih awal lan nambah kualitas kode kanggo mesthekake pangguna pungkasan puas. Untunge, ana akeh alat open source kanggo nguji kode lan menehi rekomendasi kanggo nambah kualitas. Sing luwih apik yaiku umume alat CI/CD bisa nyambung menyang alat kasebut lan ngotomatisasi proses kasebut.

Tes kode kasusun saka rong bagean: kerangka uji coba kode sing mbantu sampeyan nulis lan nganakake tes, lan alat saran sing mbantu nambah kualitas kode.

Sistem testing kode

Judhul
Lisensi
Basa pemrograman

JUnit
Eclipse Public License
Jawa

EasyMock
Apache
Jawa

mockito
MIT
Jawa

PowerMock
Apache 2.0
Jawa

Pytest
MIT
Python

Hipotesis
Mozilla
Python

Racun
MIT
Python

Sistem rekomendasi kanggo perbaikan kode

Judhul
Lisensi
Basa pemrograman

Cobertura
GNU
Jawa

CodeCover
Eclipse Public (EPL)
Jawa

Cakupan.py
Apache 2.0
Python

Emma
Lisensi Umum Umum
Jawa

JaCoCo
Eclipse Public License
Jawa

Hipotesis
Mozilla
Python

Racun
MIT
Python

Jasmine
MIT
JavaScript

fodder
MIT
JavaScript

Mocha
MIT
JavaScript

ana
MIT
JavaScript

Elinga yen umume alat lan kerangka sing kasebut ing ndhuwur ditulis kanggo Java, Python lan JavaScript, amarga C++ lan C# minangka basa pamrograman proprietary (sanajan GCC mbukak sumber).

Saiki sampeyan wis ngetrapake alat jangkoan tes, pipa DevOps sampeyan kudu katon padha karo diagram sing ditampilake ing wiwitan tutorial iki.

Langkah tambahan

Wadhah

Kaya sing dakkandhakake, sampeyan bisa dadi host server ing mesin virtual utawa server, nanging kontaner minangka solusi sing populer.

Apa sing kontaner? Panjelasan singkat iku mesin virtual perlu jumlah ageng saka memori sistem operasi, ngluwihi ukuran aplikasi, nalika wadhah mung perlu sawetara perpustakaan lan konfigurasi kanggo mbukak aplikasi. Temenan, isih ana panggunaan penting kanggo mesin virtual, nanging wadhah minangka solusi sing entheng kanggo hosting aplikasi, kalebu server aplikasi.

Nalika ana opsi wadhah liyane, sing paling populer yaiku Docker lan Kubernetes.

Docker: Apache 2.0
Kubernet: Apache 2.0

Piranti otomatisasi penengah

Pipa DevOps kita utamane fokus ing nggawe lan panyebaran aplikasi kolaborasi, nanging ana akeh perkara liyane sing bisa ditindakake nganggo alat DevOps. Salah sijine yaiku nggunakake alat Infrastruktur minangka Kode (IaC), sing uga dikenal minangka alat otomatisasi middleware. Piranti kasebut mbantu ngotomatisasi instalasi, manajemen, lan tugas liyane kanggo middleware. Dadi, contone, alat otomatisasi bisa ngekstrak aplikasi kaya server aplikasi web, database, lan alat ngawasi kanthi konfigurasi sing bener lan disebarake menyang server aplikasi.

Mangkene sawetara alat otomatis middleware open source:

Penanggung Jawab: GNU Public
SaltStack: Apache 2.0
Koki: Apache 2.0
Wayang: Apache utawa GPL

Pandhuan Pamula: Nggawe Pipa DevOps

Temokake rincian babagan carane entuk profesi sing digoleki saka awal utawa Level Up babagan katrampilan lan gaji kanthi njupuk kursus online sing dibayar saka SkillFactory:

kursus liyane

Migunani

Source: www.habr.com

Add a comment