DevOps Gvidilo por Komencantoj

Kio estas la graveco de DevOps, kion ĝi signifas por IT-profesiuloj, priskribo de metodoj, kadroj kaj iloj.

DevOps Gvidilo por Komencantoj

Multo okazis ekde kiam la termino DevOps ekregis en la IT-mondo. Kun granda parto de la ekosistema malfermfonteco, estas grave rekonsideri kial ĝi komenciĝis kaj kion ĝi signifas por kariero en IT.

Kio estas DevOps

Kvankam ne ekzistas ununura difino, mi kredas, ke DevOps estas teknologia kadro, kiu ebligas kunlaboron inter evoluaj kaj operaciaj teamoj disfaldi kodon pli rapide en produktadmediojn kun la kapablo ripeti kaj aŭtomatigi. Ni pasigos la reston de ĉi tiu artikolo malpakante ĉi tiun aserton.

La vorto "DevOps" estas kombinaĵo de la vortoj "evoluo" kaj "operacioj". DevOps helpas pliigi la rapidecon de livero de aplikoj kaj servoj. Ĉi tio permesas al organizoj efike servi siajn klientojn kaj fariĝi pli konkurencivaj en la merkato. Simple dirite, DevOps estas la vicigo inter evoluaj kaj IT-operacioj kun pli efika komunikado kaj kunlaboro.

DevOps implikas kulturon, kie kunlaboro inter evoluaj, operacioj kaj komercaj teamoj estas konsiderata kritika. Ne temas nur pri iloj, ĉar DevOps en organizo daŭre profitigas klientojn ankaŭ. Iloj estas unu el ĝiaj kolonoj, kune kun homoj kaj procezoj. DevOps pliigas la kapablon de organizoj liveri altkvalitajn solvojn en la plej mallonga ebla tempo. DevOps ankaŭ aŭtomatigas ĉiujn procezojn, de konstruo ĝis deplojo, aplikaĵo aŭ produkto.

La diskuto pri DevOps temigas la rilaton inter programistoj, la homoj, kiuj verkas programaron por vivteni, kaj la funkciigistoj respondecaj pri konservado de tiu programaro.

Defioj por la evolua teamo

Programistoj tendencas esti entuziasmaj kaj fervoraj efektivigi novajn alirojn kaj teknologiojn por solvi organizajn problemojn. Tamen, ili ankaŭ alfrontas iujn problemojn:

  • La konkurenciva merkato kreas multan premon por liveri la produkton ĝustatempe.
  • Ili devas prizorgi administri produktadpretan kodon kaj enkonduki novajn funkciojn.
  • La eldonciklo povas esti longa, do la disvolva teamo devas fari plurajn supozojn antaŭ efektivigi aplikojn. En ĉi tiu scenaro, pli da tempo estas postulata por solvi problemojn kiuj ekestas dum deplojo al produktado aŭ testa medio.

Defioj alfrontataj de la operacia teamo

Operaciaj teamoj historie koncentriĝis pri la stabileco kaj fidindeco de IT-servoj. Tial operaciaj teamoj serĉas stabilecon per ŝanĝoj en rimedoj, teknologioj aŭ aliroj. Iliaj taskoj inkluzivas:

  • Administri asignon de rimedoj dum la postulo pliiĝas.
  • Pritraktu desegnajn aŭ personigajn ŝanĝojn necesajn por uzo en produktadmedio.
  • Diagnozi kaj solvu produktadajn problemojn post mem-deplojo de aplikaĵoj.

Kiel DevOps solvas disvolvajn kaj operaciajn problemojn

Anstataŭ lanĉi grandan nombron da aplikaĵaj funkcioj samtempe, kompanioj provas vidi ĉu ili povas disvastigi malgrandan nombron da funkcioj al siaj klientoj per serio de eldonaj ripetoj. Ĉi tiu aliro havas kelkajn avantaĝojn, kiel pli bonan softvarkvaliton, pli rapidan klientan retrosciigon, ktp. Ĉi tio, siavice, certigas altan klientan kontenton. Por atingi ĉi tiujn celojn, kompanioj devas:

  • Redukti la malsukcesan indicon dum eldonado de novaj eldonoj
  • Pliigi ofteco de deplojo
  • Atingu pli rapidan averaĝan tempon por reakiro en la okazo de nova aplikaĵa eldono.
  • Redukti tempon por korektoj

DevOps plenumas ĉiujn ĉi tiujn taskojn kaj helpas certigi seninterrompan liveron. Organizoj uzas DevOps por atingi nivelojn de produktiveco, kiuj estis neimageblaj antaŭ nur kelkaj jaroj. Ili plenumas dekojn, centojn kaj eĉ milojn da deplojoj ĉiutage dum ili liveras mondklasajn fidindecon, stabilecon kaj sekurecon. (Lernu pli pri lotaj grandecoj kaj ilia efiko al softvaro livero).

DevOps provas solvi diversajn problemojn rezultantajn de pasintaj metodaroj, inkluzive de:

  • Izoliĝo de laboro inter evoluaj kaj operaciaj teamoj
  • Testado kaj deplojo estas apartaj fazoj, kiuj okazas post dezajno kaj konstruo kaj postulas pli da tempo ol konstrucikloj.
  • Troa tempo pasigita por testado, deplojado kaj desegnado anstataŭ fokuso pri konstruado de kernaj komercaj servoj
  • Mana koddeplojo kondukanta al eraroj en produktado
  • Diferencoj en evoluaj kaj operaciaj teamhoraroj kaŭzantaj pliajn prokrastojn

DevOps Gvidilo por Komencantoj

Konfronto inter DevOps, Agile kaj tradicia IT

DevOps ofte estas diskutita rilate al aliaj IT-praktikoj, precipe Agile kaj Waterfall IT.

Agile estas aro de principoj, valoroj kaj praktikoj por produktado de programaro. Do, ekzemple, se vi havas ideon, kiun vi volas transformi en programaron, vi povas uzi Agile-principojn kaj valorojn. Sed ĉi tiu programaro nur povas funkcii en evolua aŭ testa medio. Vi bezonas simplan, sekuran manieron movi vian programaron en produktadon rapide kaj ripeteble, kaj la vojo estas per DevOps-iloj kaj teknikoj. Lerta programaro-disvolviĝo temigas evoluprocezojn kaj DevOps respondecas pri evoluo kaj deplojo en la plej sekura kaj fidinda maniero.

Kompari la tradician akvofalan modelon kun DevOps estas bona maniero kompreni la avantaĝojn, kiujn alportas DevOps. La sekva ekzemplo supozas, ke la aplikaĵo estos viva post kvar semajnoj, evoluo estas 85% kompleta, la aplikaĵo estos viva, kaj la procezo de aĉeto de serviloj por sendi la kodon ĵus komenciĝis.

Tradiciaj procezoj
Procezoj en DevOps

Post mendo por novaj serviloj, la evolua teamo laboras pri testado. La specialtrupo laboras pri la ampleksa dokumentaro postulata de entreprenoj por deploji infrastrukturon.
Post kiam mendo por novaj serviloj estas metita, la evoluaj kaj operaciaj teamoj laboras kune pri la procezoj kaj paperaĵoj por instali la novajn servilojn. Ĉi tio permesas vin pli bone kompreni viajn infrastrukturajn postulojn.

Informoj pri malsukceso, redundo, datumcentrolokoj kaj stokadpostuloj estas misprezentitaj ĉar ekzistas neniu enigo de evolua teamo kiu havas profundan domajnan scion.
Detaloj pri malsukceso, redundo, katastrofa reakiro, datumcentrolokoj kaj stokado postuloj estas konataj kaj ĝustaj pro la enigo de la evolua teamo.

La operacia teamo havas neniun ideon pri la progreso de la evolua teamo. Ŝi ankaŭ evoluigas monitoradplanon bazitan sur siaj propraj ideoj.

La operacia teamo estas plene konscia pri la progreso farita de la evolua teamo. Ŝi ankaŭ interagas kun la evolua teamo kaj ili laboras kune por evoluigi monitoradplanon kiu renkontas IT kaj komercajn bezonojn. Ili ankaŭ uzas ilojn pri monitorado de agado de aplikaĵoj (APM).

Ŝarĝtesto farita antaŭ ol aplikaĵo lanĉas kaŭzas la aplikaĵon kraŝi, prokrastante ĝian lanĉon.
Ŝarĝtesto farita antaŭ ruli aplikaĵo rezultigas malbonan rendimenton. La disvolva teamo rapide solvas proplempunktojn kaj la aplikaĵo lanĉas ĝustatempe.

DevOps Vivociklo

DevOps implikas la adopton de iuj ĝenerale akceptitaj praktikoj.

Daŭra planado

Daŭra planado dependas de sveltaj principoj por komenci malgrandan identigante la rimedojn kaj produktaĵojn necesajn por testi la valoron de la komerco aŭ vizio, kontinue adaptiĝi, mezuri progreson, lerni de klientbezonoj, ŝanĝi direkton laŭbezone por alĝustigi lertecon kaj reinventi komercan planon.

Komuna evoluo

La kunlabora disvolva procezo permesas al entreprenoj, evoluteamoj kaj testaj teamoj disvastigitaj tra malsamaj horzonoj kontinue liveri kvalitan programaron. Ĉi tio inkluzivas plurplatforman disvolviĝon, translingvan programan subtenon, kreadon de uzantrakontoj, disvolvon de idearo kaj administradon de vivciklo. Kunlabora evoluo inkluzivas la procezon kaj praktikon de kontinua integriĝo, kiu antaŭenigas oftan kodan integriĝon kaj aŭtomatigitajn konstruojn. Deplojante kodon ofte al aplikaĵo, integriĝproblemoj frue estas identigitaj en la vivociklo (kiam ili estas pli facile ripari) kaj la totala integriĝklopodo estas reduktita per kontinua religo kiam la projekto montras kontinuan kaj videblan progreson.

Daŭra testado

Daŭra testado reduktas la koston de testado helpante evoluteamojn ekvilibrigi rapidecon kun kvalito. Ĝi ankaŭ forigas testajn proplempunktojn per serva virtualigo kaj faciligas krei virtualigitajn testajn mediojn, kiuj povas esti facile dividitaj, deplojitaj kaj ĝisdatigitaj kiam sistemoj ŝanĝiĝas. Ĉi tiuj kapabloj reduktas la koston de provizado kaj konservado de testaj medioj kaj mallongigas testajn ciklotempojn, permesante integriĝtestadon okazi pli frue en la vivociklo.

Daŭra liberigo kaj deplojo

Ĉi tiuj teknikoj kunportas kernan praktikon: kontinua liberigo kaj deplojo. Ĉi tio estas certigita de kontinua dukto, kiu aŭtomatigas ŝlosilajn procezojn. Ĝi reduktas manajn paŝojn, rimedajn atendtempojn kaj relaboron ebligante deplojon je la premo de butono, rezultigante pli da eldonoj, malpli da eraroj kaj kompleta travidebleco.

Aŭtomatigo ludas ŝlosilan rolon por certigi stabilan kaj fidindan programaron. Unu el la plej grandaj defioj estas preni manajn procezojn kiel konstruado, regreso, deplojo kaj kreado de infrastrukturoj kaj aŭtomatigi ilin. Ĉi tio postulas fontkoda versio-kontrolo; provado kaj deplojo scenaroj; infrastrukturaj kaj aplikaj agordaj datumoj; kaj la bibliotekoj kaj pakaĵoj de kiuj dependas la aplikaĵo. Alia grava faktoro estas la kapablo pridemandi la staton de ĉiuj medioj.

Daŭra monitorado

Daŭra monitorado disponigas entreprenan-nivelan raportadon kiu helpas al evoluteamoj kompreni la haveblecon kaj efikecon de aplikoj en produktadmedioj antaŭ ol ili estas deplojitaj al produktado. Fruaj sugestoj provizitaj per kontinua monitorado estas kritika por redukti la koston de eraroj kaj direkti projektojn en la ĝusta direkto. Ĉi tiu praktiko ofte inkluzivas monitorajn ilojn, kiuj kutime malkaŝas metrikojn ligitajn al aplikaĵo.

Konstanta retrosciigo kaj optimumigo

Daŭraj sugestoj kaj optimumigo disponigas vidan reprezenton de klienta fluo kaj precizigas problemajn areojn. Reago povas esti inkluzivita en ambaŭ antaŭ- kaj post-vendaj stadioj por maksimumigi valoron kaj certigi eĉ pli da transakcioj sukcese plenumitaj. Ĉio ĉi provizas tujan bildigon de la radika kaŭzo de klientproblemoj, kiuj influas ilian konduton kaj komercan efikon.

DevOps Gvidilo por Komencantoj

Avantaĝoj de DevOps

DevOps povas helpi krei medion kie programistoj kaj operacioj laboras kiel teamo por atingi komunajn celojn. Grava mejloŝtono en ĉi tiu procezo estas la efektivigo de kontinua integriĝo kaj kontinua livero (CI/KD). Ĉi tiuj teknikoj permesos al teamoj akiri programaron surmerkatigi pli rapide kun malpli da eraroj.

Gravaj avantaĝoj de DevOps estas:

  • Antaŭvidebleco: DevOps ofertas signife pli malaltan malsukcesan indicon por novaj eldonoj.
  • Daŭripovo: DevOps permesas facilan reakiron se nova eldono malsukcesas aŭ aplikaĵo malfunkcias.
  • Reproduktebleco: Versia kontrolo de konstruo aŭ kodo permesas restarigi antaŭajn versiojn laŭbezone.
  • Pli alta Kvalito: Traktado de infrastrukturaj problemoj plibonigas la kvaliton de aplikaĵa disvolviĝo.
  • Tempo al Merkato: Optimumigi softvaran liveron reduktas la tempon al merkato je 50%.
  • Riskredukto: Efektivigo de sekureco en la softvarvivciklo reduktas la nombron da difektoj dum la vivociklo.
  • Kostefikeco: La serĉado de kostefikeco en programaro alvokas altrangan administradon.
  • Stabileco: La programara sistemo estas pli stabila, sekura, kaj ŝanĝoj povas esti reviziitaj.
  • Malkonstrui pli grandan kodbazon en regeblajn pecojn: DevOps baziĝas sur lertaj evoluaj metodoj, kiuj ebligas al vi malkonstrui grandan kodbazon en pli malgrandajn, regeblajn pecojn.

DevOps-principoj

La adopto de DevOps kaŭzis plurajn principojn, kiuj evoluis (kaj daŭre evoluas). Plej multaj solvprovizantoj evoluigis siajn proprajn modifojn de diversaj teknikoj. Ĉiuj ĉi tiuj principoj baziĝas sur holisma aliro al DevOps, kaj organizoj de ajna grandeco povas uzi ilin.

Disvolvu kaj provu en produktadsimila medio

La ideo estas ebligi al teamoj de disvolviĝo kaj garantio de kvalito (QA) evoluigi kaj testi sistemojn, kiuj kondutas kiel produktadsistemoj, por ke ili povu vidi kiel la aplikaĵo kondutas kaj agas longe antaŭ ol ĝi estas preta por deplojo.

La aplikaĵo devus esti konektita al produktadsistemoj kiel eble plej frue en sia vivociklo por trakti tri gravajn eblajn problemojn. Unue, ĝi ebligas al vi testi la aplikaĵon en medio proksima al la reala medio. Due, ĝi ebligas al vi testi kaj validigi aplikajn liverajn procezojn anticipe. Trie, ĝi permesas al la operacia teamo testi frue en la vivociklo kiel ilia medio kondutos kiam aplikaĵoj estas deplojitaj, tiel permesante al ili krei tre personecigitan, aplikaĵ-centran medion.

Deploji per ripeteblaj, fidindaj procezoj

Ĉi tiu principo permesas al evoluaj kaj operaciaj teamoj subteni lertajn programajn evoluajn procezojn dum la tuta programaro-vivciklo. Aŭtomatigo estas kritika por krei ripetajn, fidindajn kaj ripeteblajn procezojn. Tial, la organizo devas krei liveran dukton kiu ebligas kontinuan, aŭtomatigitan deplojon kaj testadon. Ofta deplojo ankaŭ permesas al teamoj testi deplojprocezojn, tiel reduktante la riskon de deplojfiaskoj dum vivaj eldonoj.

Monitorado kaj kontrolado de la kvalito de laboro

Organizoj lertas pri monitorado de aplikoj en produktado ĉar ili havas ilojn kiuj kaptas metrikojn kaj ŝlosilajn rendimentajn indikilojn (KPI) en reala tempo. Ĉi tiu principo movas monitoradon frue en la vivociklo, certigante ke aŭtomatigita testado monitoras la funkciajn kaj ne-funkciajn atributojn de aplikaĵo frue en la procezo. Kiam ajn aplikaĵo estas elprovita kaj deplojita, kvalitaj metrikoj devas esti ekzamenitaj kaj analizitaj. Monitoraj iloj disponigas fruan averton pri funkciaj kaj kvalitaj problemoj kiuj povas ekesti dum produktado. Ĉi tiuj indikiloj devas esti kolektitaj en formato alirebla kaj komprenebla por ĉiuj koncernatoj.

Plibonigante Rimarkojn

Unu el la celoj de DevOps-procezoj estas ebligi organizojn respondi kaj fari ŝanĝojn pli rapide. En programaro livero, ĉi tiu celo postulas la organizon ricevi retrosciigon kaj tiam rapide lerni de ĉiu ago farita. Tiu principo postulas organizojn krei komunikajn kanalojn kiuj permesas al koncernatoj aliri kaj interagi en religmaniero. Disvolviĝo povas esti farita ĝustigante viajn projektajn planojn aŭ prioritatojn. Produktado povas agi plibonigante la produktadmedion.

Dev

  • Planado: Kanboard, Wekan kaj aliaj Trello-alternativoj; GitLab, Tuleap, Redmine kaj aliaj JIRA-alternativoj; Mattermost, Roit.im, IRC kaj aliaj Slack-alternativoj.
  • Skriba kodo: Git, Gerrit, Bugzilo; Jenkins kaj aliaj malfermfontaj iloj por CI/CD
  • Asembleo: Apache Maven, Gradle, Apache Ant, Packer
  • Testoj: JUnit, Kukumo, Seleno, Apache JMeter

Ops

  • Liberigo, Deplojo, Operacioj: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, ktp, Netflix Archaius, Terraform
  • Monitorado: Grafana, Prometheus, Nagios, InfluxDB, Fluentd kaj aliaj kovritaj en ĉi tiu gvidilo

(*Operaciaj iloj estis numeritaj laŭ ordo de uzo de operaciaj teamoj, sed ilia ilaro interkovras la vivciklajn stadiojn de la eldonaj kaj deplojiloj. Por facileco de legebla, la numerado estis forigita.)

En konkludo

DevOps estas ĉiam pli populara metodaro, kiu celas kunigi programistojn kaj operaciojn kiel unu unuo. Ĝi estas unika, diferenca de tradiciaj IT-operacioj, kaj kompletigas Agile (sed ne estas tiel fleksebla).

DevOps Gvidilo por Komencantoj

Eltrovu la detalojn pri kiel akiri serĉatatan profesion de nulo aŭ Level Up laŭ kapabloj kaj salajro kompletigante SkillFactory pagitaj interretaj kursoj:

pli da kursoj

Utila

fonto: www.habr.com

Aldoni komenton