Pituduh Pemula: Nyiptakeun Pipa DevOps

Upami anjeun énggal kana DevOps, tingali pituduh lima léngkah ieu pikeun nyiptakeun pipa anu munggaran anjeun.

Pituduh Pemula: Nyiptakeun Pipa DevOps

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:

Pituduh Pemula: Nyiptakeun Pipa DevOps

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.

Pituduh Pemula: Nyiptakeun Pipa DevOps

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.

Pituduh Pemula: Nyiptakeun Pipa DevOps

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é!

Pituduh Pemula: Nyiptakeun Pipa DevOps

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

Pituduh Pemula: Nyiptakeun Pipa DevOps

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:

kursus langkung

Baguna

sumber: www.habr.com

Tambahkeun komentar