Upami anjeun énggal kana DevOps, tingali pituduh lima léngkah ieu pikeun nyiptakeun pipa anu munggaran anjeun.
DevOps parantos janten solusi standar pikeun ngalereskeun prosés pangembangan parangkat lunak anu lambat, disjointed atanapi rusak. Masalahna nyaéta upami anjeun énggal dina DevOps sareng henteu terang dimana ngamimitian, anjeun tiasa kakurangan pamahaman téknik ieu. Tulisan ieu bakal ngabahas definisi pipa DevOps sareng ogé bakal nyayogikeun pitunjuk lima léngkah pikeun nyiptakeunana. Sanaos tutorial ieu henteu lengkep, éta kedah masihan anjeun dasar pikeun ngamimitian perjalanan anjeun sareng ngalegaan pangaweruh anjeun ka hareup. Tapi hayu urang mimitian ku sajarah.
Perjalanan DevOps kuring
Saacanna kuring damel di tim awan Citi Group ngembangkeun aplikasi wéb Infrastructure-as-a-Service (IaaS) pikeun ngatur infrastruktur awan Citi, tapi kuring sok kabetot dina kumaha carana sangkan prosés pangwangunan leuwih éfisién jeung mawa parobahan budaya positif kana tim ngembangkeun. Kuring mendakan jawaban dina buku anu disarankeun ku Greg Lavender, CTO Cloud Arsitéktur sareng Infrastruktur di Citi. Buku éta disebut Proyék Phoenix (Proyék Phoenix), sareng ngajelaskeun prinsip DevOps, tapi macana sapertos novel.
Méja di tukangeun buku nunjukkeun sabaraha sering perusahaan anu béda nyebarkeun sistemna dina lingkungan pelepasan:
Amazon: 23 per poé
Google: 5 per poé
Netflix: 500 per poé
Facebook: Sapoé sakali
Twitter: 3 kali saminggu
Pausahaan biasa: Sakali unggal 9 bulan
Kumaha frékuénsi Amazon, Google sareng Netflix tiasa waé? Ieu kusabab perusahaan-perusahaan ieu parantos terang kumaha cara nyiptakeun pipa DevOps anu ampir sampurna.
Kami jauh tina ieu dugi ka kami ngalaksanakeun DevOps di Citi. Jaman harita, tim kuring ngagaduhan lingkungan anu béda, tapi panyebaran dina pangladén pangembangan lengkep manual. Kabéh pamekar miboga aksés ka ngan hiji server ngembangkeun dumasar kana IBM WebSphere Aplikasi Server Komunitas Edition. Masalahna nyaéta yén server bakal dipareuman iraha waé sababaraha pangguna nyobian nyebarkeun dina waktos anu sami, ku kituna pamekar kedah saling komunikasi, anu matak nyeri. Salaku tambahan, aya masalah sareng sinyalna kode tés tingkat rendah, prosés panyebaran manual anu pajeujeut, sareng henteu mampuh ngalacak panyebaran kode anu aya hubunganana sareng tugas atanapi carita pangguna khusus.
Kuring sadar yén hal anu kedah dilakukeun sareng mendakan batur sapagawean anu sami. Kami mutuskeun pikeun kolaborasi dina ngawangun pipa DevOps awal - anjeunna nyetél mesin virtual Tomcat sareng server aplikasi nalika kuring damel di Jenkins, terpadu Atlassian Jira sareng BitBucket, sareng damel dina sinyalna kode uji. Proyék samping ieu suksés pisan: kami ampir lengkep nga-otomatiskeun seueur prosés, ngahontal ampir 100% uptime dina server pangembangan kami, nyayogikeun tracking sareng ningkatkeun sinyalna uji kode, sareng nambihan kamampuan pikeun ngaitkeun cabang Git kana masalah atanapi penyebaran Jira. Kaseueuran alat anu kami dianggo pikeun ngawangun pipa DevOps kami nyaéta open source.
Ayeuna kuring ngartos kumaha saderhana pipa DevOps kami: kami henteu nganggo ekstensi sapertos file Jenkins atanapi Ansible. Sanajan kitu, pipa basajan ieu digawé ogé, meureun alatan prinsip Pareto (ogé katelah aturan 80/20).
Perkenalan singket pikeun DevOps sareng Pipa CI / CD
Upami anjeun naros ka sababaraha jalma, "Naon éta DevOps?", anjeun panginten bakal nampi sababaraha jawaban anu béda. DevOps, sapertos Agile, parantos mekar dina seueur disiplin anu béda, tapi kalolobaan jalma bakal satuju kana sababaraha hal: DevOps mangrupikeun prakték pamekaran parangkat lunak atanapi siklus kahirupan pangembangan perangkat lunak (SDLC) anu prinsip utama ngarobih budaya dimana pamekar sareng non- pamekar aya dina lingkungan dimana:
Operasi anu saméméhna dipigawé sacara manual geus otomatis;
Sarerea ngalakukeun naon maranéhna ngalakukeun pangalusna;
Jumlah palaksanaan dina kurun waktu nu tangtu nambahan; throughput ngaronjat;
Ningkatkeun kalenturan pangwangunan.
Sanaos gaduh alat parangkat lunak anu leres sanés ngan ukur anu anjeun peryogikeun pikeun nyiptakeun lingkungan DevOps, sababaraha alat penting. Alat konci nyaéta integrasi kontinyu sareng panyebaran kontinyu (CI / CD). Dina pipa ieu, lingkungan boga tahapan béda (misalna DEV, INT, TST, QA, UAT, STG, PROD), loba operasi anu otomatis, sarta pamekar bisa nulis kode kualitas luhur, ngahontal agility ngembangkeun, sarta ongkos deployment tinggi.
Tulisan ieu ngajelaskeun pendekatan lima léngkah pikeun nyiptakeun pipa DevOps sapertos anu dipidangkeun dina diagram di handap ieu nganggo alat open source.
Lengkah 1: Métode CI/CD
Hal kahiji anjeun peryogi alat CI / CD. Jenkins, alat open source dumasar kana Java sareng dilisensikeun ku lisénsi MIT, mangrupikeun alat anu ngapopulérkeun DevOps sareng parantos janten standar de facto.
Janten naon Jenkins? Pikirkeun éta salaku sababaraha jinis kadali jauh universal anu magis anu tiasa ngobrol sareng ngatur sababaraha jasa sareng alat. Sorangan, alat CI / CD sapertos Jenkins henteu aya gunana, tapi janten langkung kuat nalika nyambung ka alat sareng jasa anu béda.
Jenkins mangrupikeun salah sahiji seueur alat CI / CD open source anu anjeun tiasa dianggo pikeun ngawangun pipa DevOps anjeun.
Jenkins: Creative Commons sareng MIT
Travis CI: MIT
CruiseControl:BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabé: GNU
Ieu kumaha prosés DevOps sareng alat CI / CD:
Anjeun gaduh alat CI / CD anu dijalankeun dina localhost anjeun, tapi henteu seueur anu anjeun tiasa laksanakeun ayeuna. Hayu urang teraskeun kana tahap salajengna perjalanan DevOps.
Lengkah 2: Atur Sistem Kontrol Sumber
Cara anu pangsaéna (sareng panggampangna) pikeun pariksa yén alat CI / CD anjeun tiasa ngalakukeun sihirna nyaéta ngahijikeun sareng alat kontrol kode sumber (SCM). Naha anjeun peryogi kontrol sumber? Anggap anjeun nuju ngembangkeun aplikasi. Iraha wae anjeun nyieun hiji aplikasi, anjeun programming, sarta henteu masalah naha anjeun migunakeun Java, Python, C ++, Go, Ruby, JavaScript, atawa salah sahiji zillions basa programming. Kode anu anjeun tulis disebut kode sumber. Dina awalna, khususna nalika anjeun damel nyalira, sigana henteu kunanaon nempatkeun sadayana dina diréktori lokal. Tapi nalika proyékna janten langkung ageung sareng anjeun ngajak batur pikeun kolaborasi, anjeun peryogi cara pikeun nyegah konflik bari sacara efektif ngabagi modifikasi. Anjeun oge peryogi cara pikeun mulangkeun versi saméméhna, sabab nyieun cadangan tur nyalin / nempelkeun kana eta geus jadi leungit. Anjeun (sareng rekan tim anjeun) peryogi anu langkung saé.
Ieu dimana kontrol kode sumber janten ampir kabutuhan. Alat ieu nyimpen kode anjeun dina repositori, ngalacak versi, sareng koordinat karya pamilon proyék.
Sanaos seueur alat kontrol sumber di luar, Git mangrupikeun standar, sareng leres pisan. Abdi nyarankeun pisan ngagunakeun Git, sanaos aya pilihan open source sanés upami anjeun resep.
Git: GPLv2 sareng LGPL v2.1
Subversion: Apache 2.0
Sistim Vérsi sakaligus (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+
Ieu mangrupikeun pipa DevOps sareng tambihan kontrol kode sumber.
Alat CI/CD tiasa ngajadikeun otomatis prosés review, akuisisi kode sumber, sareng kolaborasi diantara anggota. Lumayan? Tapi kumaha anjeun tiasa janten aplikasi anu tiasa dianggo supados milyaran jalma tiasa nganggo sareng ngahargaanana?
Lengkah 3: Jieun Alat Otomatis Ngawangun
Hebat! Anjeun tiasa marios kode sareng ngadamel parobihan kana kontrol sumber, sareng ngajak réréncangan anjeun pikeun kolaborasi dina pangwangunan. Tapi anjeun teu acan nyieun aplikasi. Pikeun ngadamel aplikasi wéb, éta kedah disusun sareng dibungkus dina format angkatan anu tiasa di-deploy atanapi dijalankeun salaku file anu tiasa dieksekusi. (Catetan yén basa pamrograman anu diinterpretasi sapertos JavaScript atanapi PHP henteu kedah disusun).
Paké alat automation ngawangun. Henteu masalah anu ngawangun alat otomatis anu anjeun badé dianggo, aranjeunna sadayana gaduh tujuan anu sami: ngawangun kode sumber kana sababaraha format anu dipikahoyong sareng ngajadikeun otomatis tugas beberesih, nyusun, nguji, sareng nyebarkeun ka lingkungan anu khusus. Alat ngawangun bakal rupa-rupa gumantung kana basa pamrograman anjeun, tapi ieu sababaraha pilihan open source umum.
nami
Lisénsi
Basa pamrograman
Maven
Apache 2.0
Jawa
sireum
Apache 2.0
Jawa
Gradle
Apache 2.0
Jawa
Basel
Apache 2.0
Jawa
nyieun
Lisénsi
N / A
Nyegrek
MIT
JavaScript
Nguseup
MIT
JavaScript
Pangwangun
Apache
inten beureum
Rakean
MIT
inten beureum
AAP
Lisénsi
Python
SCons
MIT
Python
BitBake
GPLv2
Python
kueh
MIT
C#
ASDF
Expat (MIT)
LISP
Cabal
BSD
Haskell
Hebat! Anjeun tiasa nempatkeun file konfigurasi alat automation kana sistem kontrol sumber anjeun sareng ngantepkeun alat CI / CD anjeun ngahijikeun sadayana.
Sadayana saé, sanés? Tapi dimana nyebarkeun aplikasi anjeun?
Lengkah 4: Server Aplikasi Wéb
Pikeun ayeuna, anjeun gaduh file rangkep anu tiasa dieksekusi atanapi tiasa dipasang. Pikeun aplikasi naon waé anu leres-leres mangpaat, éta kedah nyayogikeun sababaraha jinis jasa atanapi antarmuka, tapi anjeun peryogi wadah pikeun nga-host aplikasi anjeun.
Pangladén aplikasi wéb mangrupikeun wadah sapertos kitu. Server nyayogikeun lingkungan dimana logika pakét anu disebarkeun tiasa dihartikeun. Server ogé nyayogikeun antarbeungeut sareng nawiskeun jasa wéb ku ngalaan sockets ka dunya luar. Anjeun peryogi server HTTP, kitu ogé sababaraha lingkungan (sapertos mesin virtual) pikeun masangna. Pikeun ayeuna mah, anggap anjeun bakal leuwih jéntré ngeunaan ieu (sanajan kuring bakal nutupan wadahna di handap).
Aya sababaraha server aplikasi wéb open source.
nami
Lisénsi
Basa pamrograman
Tomcat
Apache 2.0
Jawa
darmaga
Apache 2.0
Jawa
Laleur
GNU Lesser Public
Jawa
GelasFish
CDDL & GNU Kurang Umum
Jawa
Django
3-Klausa BSD
Python
topan
Apache 2.0
Python
gunicorn
MIT
Python
Python
MIT
Python
rel
MIT
inten beureum
Node.js
MIT
Javascript
Pipa DevOps anjeun ampir siap dianggo. Padamelan anu saé!
Sanaos anjeun tiasa eureun di dinya sareng ngadamel integrasi nyalira, kualitas kode mangrupikeun hal anu penting pikeun pamekar aplikasi anu kedah hariwang.
Lengkah 5: Code Testing Coverage
Ngalaksanakeun tés tiasa janten syarat pajeujeut, tapi pamekar kedah nangkep bug naon waé dina aplikasi awal sareng ningkatkeun kualitas kode pikeun mastikeun pangguna akhir puas. Kabeneran, aya seueur alat open source pikeun nguji kode anjeun sareng ngadamel saran pikeun ningkatkeun kualitasna. Anu langkung saé nyaéta kalolobaan alat CI/CD tiasa nyambung ka alat ieu sareng ngajadikeun otomatis prosésna.
Tés kode diwangun ku dua bagian: kerangka tés kode anu ngabantosan anjeun nyerat sareng ngajalankeun tés, sareng alat saran anu ngabantosan anjeun ningkatkeun kualitas kode anjeun.
Sistem tés kode
nami
Lisénsi
Basa pamrograman
JUnit
Kuwu Lisensi Umum
Jawa
EasyMock
Apache
Jawa
mockito
MIT
Jawa
PowerMock
Apache 2.0
Jawa
Pytest
MIT
Python
Hipotesis
Mozilla
Python
Racun
MIT
Python
Sistem rekomendasi pikeun perbaikan kode
nami
Lisénsi
Basa pamrograman
Cobertura
Lisénsi
Jawa
CodeCover
Eclipse Public (EPL)
Jawa
Liputan.py
Apache 2.0
Python
Emma
Lisensi Umum Umum
Jawa
JaCoCo
Kuwu Lisensi Umum
Jawa
Hipotesis
Mozilla
Python
Racun
MIT
Python
Jasmine
MIT
JavaScript
karma
MIT
JavaScript
Mocha
MIT
JavaScript
Jest
MIT
JavaScript
Catet yén kalolobaan alat sareng kerangka anu disebatkeun di luhur ditulis pikeun Java, Python sareng JavaScript, sabab C ++ sareng C # mangrupikeun basa program proprietary (sanaos GCC open source).
Ayeuna anjeun parantos ngalaksanakeun alat sinyalna tés, pipa DevOps anjeun kedah sami sareng diagram anu dipidangkeun dina awal tutorial ieu.
Léngkah tambahan
Wadahna
Sakumaha anu ceuk kuring, anjeun tiasa nga-host server anjeun dina mesin virtual atanapi server, tapi wadahna mangrupikeun solusi anu populér.
Naon wadahna? Katerangan pondok nyaéta yén mesin virtual peryogi jumlah mémori sistem operasi anu ageung, langkung ageung ukuran aplikasi, sedengkeun wadahna ngan ukur peryogi sababaraha perpustakaan sareng konfigurasi pikeun ngajalankeun aplikasi. Jelas, aya kénéh kagunaan penting pikeun mesin virtual, tapi wadahna mangrupakeun solusi lightweight pikeun hosting hiji aplikasi, kaasup hiji server aplikasi.
Sanaos aya pilihan wadah anu sanés, anu paling populér nyaéta Docker sareng Kubernetes.
Docker: Apache 2.0
Kubernet: Apache 2.0
parabot automation panengah
Pipa DevOps kami utamina difokuskeun kana kreasi sareng panyebaran aplikasi kolaborasi, tapi aya seueur hal anu tiasa dilakukeun ku alat DevOps. Salah sahijina nyaéta ngagunakeun alat Infrastructure as Code (IaC), anu ogé katelah alat automation middleware. Alat-alat ieu ngabantosan otomatis pamasangan, manajemén, sareng tugas-tugas sanés pikeun middleware. Janten, contona, alat otomasi tiasa ékstrak aplikasi sapertos pangladén aplikasi wéb, pangkalan data, sareng alat ngawaskeun kalayan konfigurasi anu leres sareng nyebarkeunana ka pangladén aplikasi.
Ieu sababaraha alat automation middleware open source:
Jawab: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Wayang: Apache atawa GPL
Pilarian detil ngeunaan kumaha carana kéngingkeun profési anu dipilarian ti mimiti atanapi Level Up dina hal kaahlian sareng gaji ku cara nyandak kursus online anu dibayar ti SkillFactory: