Ufänger Guide: Eng DevOps Pipeline erstellen

Wann Dir nei bei DevOps sidd, kuckt op dëse fënnef Schrëtt Guide fir Är éischt Pipeline ze kreéieren.

Ufänger Guide: Eng DevOps Pipeline erstellen

DevOps ass d'Standardléisung ginn fir lues, disjointed oder futti Softwareentwécklungsprozesser ze fixéieren. De Problem ass datt wann Dir nei bei DevOps sidd an net wësst wou ze starten, kënnt Dir e Verständnis vun dësen Techniken feelen. Dësen Artikel wäert d'Definitioun vun enger DevOps Pipeline diskutéieren a gëtt och fënnef-Schrëtt Instruktioune fir eng schafen. Och wann dësen Tutorial net ustrengend ass, sollt et Iech e Fundament ginn fir Är Rees unzefänken an Äert Wëssen an Zukunft auszebauen. Mee loosst eis mat der Geschicht ufänken.

Meng DevOps Journey

Ech hunn virdru um Citi Group Cloud Team geschafft fir eng Infrastructure-as-a-Service (IaaS) Webapplikatioun z'entwéckelen fir d'Citi's Cloud Infrastruktur ze managen, awer ech war ëmmer interesséiert wéi een den Entwécklungsprozess méi effizient maache kann a positiv kulturell Ännerunge fir d'Citi ze bréngen. Entwécklung Equipe. Ech hunn d'Äntwert fonnt an engem Buch recommandéiert vum Greg Lavender, CTO vu Cloud Architecture and Infrastructure bei Citi. D'Buch gouf genannt The Phoenix Project (De Phoenix Project), an et erkläert d'Prinzipien vun DevOps, awer et liest wéi e Roman.

D'Tabell um Réck vum Buch weist wéi dacks verschidde Firmen hir Systemer an engem Release Ëmfeld ofsetzen:

Amazon: 23 pro Dag
Google: 5 pro Dag
Netflix: 500 pro Dag
Facebook: Eemol am Dag
Twitter: 3 Mol pro Woch
Typesch Firma: Eemol all 9 Méint

Wéi sinn Amazon, Google an Netflix Frequenzen iwwerhaapt méiglech? Dëst ass well dës Firmen erausfonnt hunn wéi eng bal perfekt DevOps Pipeline erstallt gëtt.

Mir ware wäit dovunner bis mir DevOps bei Citi implementéiert hunn. Deemools hat meng Team verschidden Ëmfeld, awer d'Deployment um Entwécklungsserver war komplett manuell. All Entwéckler haten Zougang zu nëmmen engem Entwécklungsserver baséiert op IBM WebSphere Application Server Community Edition. De Problem war datt de Server ausschalt wann ëmmer méi Benotzer probéiert gläichzäiteg z'installéieren, sou datt d'Entwéckler hir Intentioune matenee musse kommunizéieren, wat zimmlech Schmerz war. Zousätzlech goufen et Probleemer mat Low-Level Testcode Ofdeckung, ëmständlech manuell Deploymentprozesser, an d'Onméiglechkeet fir d'Deployment vu Code ze verfolgen, déi mat enger spezifescher Aufgab oder Benotzergeschicht ass.

Ech hu gemierkt datt eppes muss gemaach ginn an hunn e wéi-minded Kolleg fonnt. Mir hu beschloss ze kollaboréieren fir déi initial DevOps Pipeline ze bauen - hien huet eng Tomcat virtuell Maschinn an Applikatiounsserver opgeriicht wärend ech op Jenkins geschafft hunn, Atlassian Jira a BitBucket integréiert hunn an un Testcode Ofdeckung geschafft hunn. Dëse Säiteprojet war ganz erfollegräich: mir hunn vill Prozesser bal komplett automatiséiert, bal 100% Uptime op eisem Entwécklungsserver erreecht, Tracking a verbessert Testofdeckung vum Code geliwwert an d'Fäegkeet bäigefüügt fir Git Filialen mat Jira Themen oder Deploymenten ze verbannen. Déi meescht vun den Tools déi mir benotzt hunn fir eis DevOps Pipeline ze bauen waren Open Source.

Elo verstinn ech wéi einfach eis DevOps Pipeline war: mir hunn keng Extensiounen wéi Jenkins Dateien oder Ansible benotzt. Wéi och ëmmer, dës einfach Pipeline huet gutt geschafft, vläicht wéinst dem Pareto Prinzip (och bekannt als 80/20 Regel).

Eng kuerz Aféierung zu DevOps an der CI / CD Pipeline

Wann Dir e puer Leit freet, "Wat ass DevOps?", kritt Dir wahrscheinlech e puer verschidden Äntwerten. DevOps, wéi Agile, huet sech entwéckelt fir vill verschidden Disziplinnen ze spanen, awer déi meescht Leit wäerten iwwer e puer Saache averstane sinn: DevOps ass eng Softwareentwécklungspraxis oder Softwareentwécklungsliewenszyklus (SDLC), deem säin zentrale Prinzip d'Kultur ännert an där d'Entwéckler an net- Entwéckler existéieren an engem Ëmfeld an deem:

Operatiounen, déi virdru manuell gemaach goufen, goufen automatiséiert;
Jidderee mécht wat hien am Beschten mécht;
D'Zuel vun den Implementatiounen iwwer eng gewëssen Zäit erhéicht; Duerchschnëtt Erhéijung;
Erhéicht Entwécklungsflexibilitéit.

Och wann Dir déi richteg Software Tools hutt net dat eenzegt wat Dir braucht fir en DevOps Ëmfeld ze kreéieren, sinn e puer Tools wesentlech. E Schlësselinstrument ass kontinuéierlech Integratioun a kontinuéierlech Deployment (CI / CD). An dëser Pipeline hunn Ëmfeld verschidden Etappen (zB DEV, INT, TST, QA, UAT, STG, PROD), vill Operatiounen sinn automatiséiert, an Entwéckler kënnen e qualitativ héichwäerteg Code schreiwen, Entwécklungsbeweeglechkeet erreechen an héich Détachementraten.

Dësen Artikel beschreift eng fënnef Schrëtt Approche fir eng DevOps Pipeline ze kreéieren wéi déi am folgenden Diagramm mat Open Source Tools.

Schrëtt 1: CI / CD Methoden

Dat éischt wat Dir braucht ass e CI / CD Tool. Jenkins, en Open Source Tool baséiert op Java a lizenzéiert ënner der MIT Lizenz, ass dat Tool dat DevOps populariséiert huet an de de facto Standard gouf.

Also wat ass Jenkins? Denkt un et als eng Aart vun magescher universeller Fernsteierung déi mat verschiddene Servicer an Tools schwätze kann an organiséieren. Eleng ass e CI / CD Tool wéi Jenkins nëtzlos, awer et gëtt méi mächteg wéi et mat verschiddenen Tools a Servicer verbënnt.

Jenkins ass just ee vu ville Open Source CI / CD Tools déi Dir benotze kënnt fir Är DevOps Pipeline ze bauen.

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

Hei ass wéi DevOps Prozesser mat engem CI/CD Tool ausgesinn:

Ufänger Guide: Eng DevOps Pipeline erstellen

Dir hutt e CI / CD Tool op Ärem localhost Lafen, awer et ass net vill wat Dir am Moment maache kënnt. Loosst eis op déi nächst Etapp vun der DevOps Rees goen.

Schrëtt 2: Managen Quell Kontroll Systemer

Déi bescht (a vläicht einfachste) Manéier fir z'iwwerpréiwen datt Ären CI / CD Tool seng Magie maache kann ass mat engem Quellcode Kontroll (SCM) Tool z'integréieren. Firwat braucht Dir Quell Kontroll? Loosst eis soen datt Dir eng Applikatioun entwéckelt. Wann Dir eng Applikatioun erstellt, programméiert Dir, an et ass egal ob Dir Java, Python, C++, Go, Ruby, JavaScript oder eng vun den Zillioune vu Programméierungssproochen benotzt. De Code deen Dir schreift gëtt Quellcode genannt. Am Ufank, besonnesch wann Dir eleng schafft, ass et wahrscheinlech ok alles an e lokale Verzeichnis ze setzen. Awer wéi de Projet méi grouss gëtt an Dir aner Leit invitéiert fir ze kollaboréieren, braucht Dir e Wee fir Konflikter ze vermeiden wärend Dir Ännerunge effektiv deelt. Dir braucht och e Wee fir fréier Versiounen ze restauréieren, well Backups erstellen an se kopéieren / pechen ass verouderd ginn. Dir (an Är Teamkollegen) brauchen eppes Besseres.

Dëst ass wou Quellcode Kontroll bal eng Noutwennegkeet gëtt. Dëst Tool späichert Äre Code a Repositories, verfollegt Versiounen a koordinéiert d'Aarbecht vun de Projetsparticipanten.

Wärend et vill Quellkontrollinstrumenter dobaussen sinn, Git ass de Standard, a mat Recht. Ech recommandéieren Git ze benotzen, obwuel et aner Open Source Optiounen sinn wann Dir et virzitt.

Git: GPLv2 an LGPL v2.1
Subversion: Apache 2.0
Concurrent Versioune System (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+

Dëst ass wéi eng DevOps Pipeline ausgesäit mat der Zousatz vu Quellcode Kontrollen.

Ufänger Guide: Eng DevOps Pipeline erstellen

E CI / CD Tool kann d'Prozesser vun der Iwwerpréiwung, der Quellcode-Acquisitioun an der Zesummenaarbecht tëscht de Memberen automatiséieren. Net schlecht? Awer wéi maacht Dir et an eng funktionéierend Applikatioun sou datt Milliarde vu Leit et benotze kënnen an schätzen?

Schrëtt 3: Erstellt e Build Automation Tool

Super! Dir kënnt Code iwwerpréiwen an Ännerunge fir Quellkontrolle maachen, an Är Frënn invitéieren fir un der Entwécklung ze kollaboréieren. Awer Dir hutt nach keng Applikatioun erstallt. Fir eng Webapplikatioun ze maachen, muss se an engem deployable Batchformat kompiléiert a verpackt ginn oder als ausführbar Datei lafen. (Notéiert datt eng interpretéiert Programméierungssprooch wéi JavaScript oder PHP net kompiléiert muss ginn).

Benotzt e Bauautomatiséierungsinstrument. Egal wéi ee Bauautomatiséierungsinstrument Dir decidéiert ze benotzen, si hunn all datselwecht Zil: de Quellcode an e gewënschte Format bauen an d'Aufgab automatiséieren fir ze botzen, ze kompiléieren, ze testen an an e spezifescht Ëmfeld z'installéieren. Build Tools variéieren ofhängeg vun Ärer Programméiersprooch, awer hei sinn e puer allgemeng Open Source Optiounen.

Titelen
Лицензия
Programméiersprooch

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Gradle
Apache 2.0
Java

bazel
Apache 2.0
Java

vergréisserenD
GNU
N / A

gräift
MIT
Javascript

Schlécken
MIT
Javascript

Builder
Apache-
Rubin

rächen
MIT
Rubin

AAP
GNU
Python

SCons
MIT
Python

BitBake
GPLv2
Python

Kuch
MIT
C#

ASDF
Expat (MIT)
LISP

Genau
BSD
Haskell

Super! Dir kënnt d'Konfiguratiounsdateien vum Bauautomatiséierungsinstrument an Ärem Quellkontrollsystem setzen an Äert CI / CD-Tool alles zesummesetzen.

Ufänger Guide: Eng DevOps Pipeline erstellen

Alles ass gutt, ass et net? Awer wou soll Dir Är Applikatioun ofsetzen?

Schrëtt 4: Web Applikatioun Server

Fir de Moment hutt Dir eng verpackte Datei déi entweder ausführbar oder installéierbar ka sinn. Fir all Applikatioun wierklech nëtzlech ze sinn, muss et eng Aart Service oder Interface ubidden, awer Dir braucht e Container fir Är Applikatioun ze hosten.

E Webapplikatiounsserver ass just esou e Container. De Server bitt en Ëmfeld an deem d'Logik vum Package deen ofgesat gëtt definéiert ka ginn. De Server bitt och en Interface a bitt Webservicer andeems Dir Sockets op der Äussewelt aussetzt. Dir braucht en HTTP-Server, souwéi e puer Ëmfeld (wéi eng virtuell Maschinn) fir se z'installéieren. Fir elo, loosst eis unhuelen datt Dir méi iwwer dëst léiert (och wann ech Container hei drënner ofdecken).

Et gi verschidde Open Source Web Uwendungsserveren.

Titelen
Лицензия
Programméiersprooch

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

GlassFësch
CDDL & GNU Manner Public
Java

Django
3-Klausel BSD
Python

Tornado
Apache 2.0
Python

gunicorn
MIT
Python

Python
MIT
Python

Rails
MIT
Rubin

Node.js
MIT
Javascript

Är DevOps Pipeline ass bal prett fir ze benotzen. Gutt gemaach!

Ufänger Guide: Eng DevOps Pipeline erstellen

Wärend Dir kënnt do ophalen an d'Integratioun selwer handhaben, ass Codequalitéit eng wichteg Saach fir en App-Entwéckler sech Suergen ze maachen.

Schrëtt 5: Code Testen Ofdeckung

D'Ëmsetzung vun Tester kann eng aner ëmständlech Fuerderung sinn, awer d'Entwéckler mussen all Bugs an der Applikatioun fréi fänken an d'Qualitéit vum Code verbesseren fir datt d'Endbenotzer zefridden sinn. Glécklecherweis ginn et vill Open Source Tools fir Äre Code ze testen an Empfehlungen ze maachen fir seng Qualitéit ze verbesseren. Wat nach besser ass, ass datt déi meescht CI / CD Tools mat dësen Tools kënne verbannen an de Prozess automatiséieren.

Code Testen besteet aus zwee Deeler: Code Test Kaderen déi Iech hëllefen Tester ze schreiwen an ze lafen, a Virschlag Tools déi Iech hëllefen d'Qualitéit vun Ärem Code ze verbesseren.

Code Test Systemer

Titelen
Лицензия
Programméiersprooch

JUnit
Eclipse Public License
Java

EasyMock
Apache-
Java

mockito
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Python

Hypothese
Mozilla
Python

tox
MIT
Python

Empfehlungssystemer fir Codeverbesserung

Titelen
Лицензия
Programméiersprooch

Cobertura
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
Python

Emma
Gemeinsam Ëffentlech Lizenz
Java

JaCoCo
Eclipse Public License
Java

Hypothese
Mozilla
Python

tox
MIT
Python

Jasmine
MIT
Javascript

Karma
MIT
Javascript

Mokka
MIT
Javascript

et ass
MIT
Javascript

Notéiert datt déi meescht vun den uewe genannte Tools a Kaderen fir Java, Python a JavaScript geschriwwe sinn, well C++ an C# propriétaire Programméierungssprooche sinn (och wann GCC Open Source ass).

Elo datt Dir Testdeckungsinstrumenter implementéiert hutt, sollt Är DevOps Pipeline ähnlech ausgesinn wéi d'Diagramm am Ufank vun dësem Tutorial.

Zousätzlech Schrëtt

Container

Wéi ech gesot hunn, kënnt Dir Äre Server op enger virtueller Maschinn oder engem Server hosten, awer Container sinn eng populär Léisung.

Wat sinn Container? Déi kuerz Erklärung ass datt eng virtuell Maschinn eng enorm Quantitéit u Betriebssystemspeicher brauch, déi d'Gréisst vun der Applikatioun iwwerschreift, während e Container nëmmen e puer Bibliothéiken a Konfiguratiounen brauch fir d'Applikatioun auszeféieren. Natierlech ginn et nach ëmmer wichteg Utilisatioune fir eng virtuell Maschinn, awer e Container ass eng liicht Léisung fir eng Applikatioun ze hosten, en Applikatiounsserver abegraff.

Wärend et aner Containeroptiounen sinn, sinn déi populärste Docker a Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Mëttelstuf Automatisatiounsinstrumenter

Eis DevOps Pipeline ass haaptsächlech fokusséiert op Zesummenaarbecht an Uwendungen ze bauen an z'installéieren, awer et gi vill aner Saachen déi Dir mat DevOps Tools maache kënnt. Ee vun hinnen ass d'Benotzung vun Infrastruktur als Code (IaC) Tools, déi och als Middleware Automatisatiounsinstrumenter bekannt sinn. Dës Tools hëllefen d'Installatioun, d'Gestioun an aner Aufgaben fir Middleware ze automatiséieren. Also, zum Beispill, en Automatisatiounsinstrument kann Uwendungen wéi e Webapplikatiounsserver, eng Datebank an e Iwwerwaachungsinstrument mat de richtege Konfiguratiounen extrahéieren an se op den Applikatiounsserver ofsetzen.

Hei sinn e puer Open Source Middleware Automation Tools:

Ansible: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Puppet: Apache oder GPL

Ufänger Guide: Eng DevOps Pipeline erstellen

Fannt Detailer iwwer wéi Dir e gesichte Beruff vun Null oder Level Up a punkto Fäegkeeten a Pai kritt andeems Dir bezuelte Online Coursen vun SkillFactory maacht:

méi Coursen

Nëtzlech

Source: will.com

Setzt e Commentaire