Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020

Simulan ang paggamit ng pinakamahusay na mga tool sa DevOps ngayon!

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Sa wakas ay nakuha na ng DevOps revolution ang mundo at ang mga tool ng DevOps ay naging napakapopular. Ayon sa serbisyo Google Trends, ang bilang ng mga kahilingan para sa "Mga tool ng DevOps" ay patuloy na lumalaki, at nagpapatuloy ang trend na ito.

Saklaw ng pamamaraan ng DevOps ang buong ikot ng buhay ng pag-develop ng software, kaya maaaring pumili ang mga propesyonal mula sa iba't ibang tool. Ngunit, tulad ng alam mo, walang tool ang maaaring maging isang unibersal na tool para sa lahat. Gayunpaman, ang ilang mga solusyon ay nag-aalok ng isang malawak na hanay ng mga pag-andar na maaari nilang pangasiwaan ang halos anumang gawain.

Hatiin natin ang mga tool ng DevOps sa mga kategorya at ihambing ang mga ito sa mga analogue:

  • pag-unlad at pagbuo ng mga tool
  • pagsubok ng mga tool sa automation
  • mga tool para sa pag-aayos ng deployment
  • Mga tool sa runtime
  • mga tool sa pakikipagtulungan.

Matagumpay at maingat na pagpapatupad DevOps practitioner kasama ang mga instrumento mula sa lahat ng limang pangkat na nakalista sa itaas. Suriin ang kasalukuyang hanay ng mga tool sa iyong proyekto upang hindi makaligtaan ang isang mahalagang elemento ng pipeline ng CI/CD.

Mga Tool sa Pagbuo at Pagbuo

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Ito ang batayan ng CI/CD pipeline stack. Dito lang magsisimula ang lahat! Ang pinakamahusay na mga tool sa kategoryang ito ay maaaring pamahalaan ang maramihang mga stream ng kaganapan at madaling isama sa iba pang mga produkto.

Sa yugtong ito ng siklo ng buhay ng pag-unlad, mayroong tatlong pangkat ng mga tool:

  • version control system (SCM)
  • patuloy na pagsasama (CI)
  • Pamamahala ng data

Ang GIT ay nagkaroon ng positibong track record noong 2020, kaya ang iyong SCM tool ay dapat magkaroon ng tuluy-tuloy na suporta para sa GIT. Para sa CI, ang isang kinakailangan ay ang kakayahang magsagawa at magpatakbo ng mga build sa isang nakahiwalay na kapaligiran ng lalagyan. Pagdating sa pamamahala ng data, nangangailangan ito ng kakayahang gumawa ng mga pagbabago sa schema ng database at mapanatili ang database ayon sa bersyon ng application.

SCM + CI Tool #1

Nagwagi: GitLab at GitLab-CI

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Ang pinakamahusay na tool ng 2020 DevOps cycle ay walang alinlangan na GitLab, at tiyak na patuloy itong mangunguna sa pagbabago sa malapit na hinaharap.

Ang pangunahing function ng GitLab ay ang magbigay ng komportableng pamamahala ng isang Git repository. Ang web interface ay intuitive at madaling gamitin. Ang GitLab ay nagbibigay ng lahat ng kailangan mo sa isang libreng bersyon at dumating bilang SaaS at on-prem (gamit ang iyong sariling mga mapagkukunan upang mag-host ng software).

Walang ibang tool sa SCM ang direktang gumamit ng tuluy-tuloy na pagsasama (CI) sa iyong imbakan, at ginagawa ito ng GitLab sa mahabang panahon. Upang magamit ang GitLab-CI, dapat kang magdagdag ng .gitlab-ci.yml file sa iyong source code root, at anumang pagbabago sa proyekto ay magti-trigger ng mga aksyon batay sa eksaktong tinukoy mo. Ang GitLab at GitLab-CI ay nararapat na kinikilala bilang mga pinuno sa larangan ng tuluy-tuloy na pagsasama (CI-as-code).

Mga Pangunahing Benepisyo

  • Pagiging maaasahan - Ang produkto ay nasa merkado mula noong 2013; matatag; mahusay na suportado.
  • Open Source - Hindi nililimitahan ng libreng bersyon ng GitLab ang pangunahing functionality na kailangan ng mga development team. Ang mga bayad na pakete ng serbisyo ay nagbibigay ng mga karagdagang kapaki-pakinabang na tampok para sa mga kumpanya na may iba't ibang laki at pangangailangan.
  • Naka-engrained CI - Walang ibang tool sa merkado ang nakagawa ng tuluy-tuloy na pagsasama nang direkta sa SCM tulad ng GitLab-CI. Tinitiyak ng paggamit ng Docker na walang problema ang mga nakahiwalay na build, at pinapadali ng mga built-in na ulat ang pag-debug. Hindi namin kailangan ang kumplikadong pagsasama at pamamahala ng maraming tool nang sabay-sabay.
  • Walang limitasyong Pagsasama - Nagbibigay ang GitLab ng madaling pagsasama ng lahat ng mga tool sa DevOps na kailangan mo. Tinitiyak nito na ang mga development at maintenance team ay may iisang mapagkukunan ng impormasyon tungkol sa kanilang aplikasyon sa anumang kapaligiran.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Mayroong iba pang mga sikat na tool sa kategoryang ito, ngunit hindi sila kasinghusay ng GitLab. At dahil jan:

GitHub β€” Ito ay isang mahusay na SaaS version control system para sa maliliit na kumpanya at maagang yugto ng pag-unlad. Para sa malalaking kumpanya kung saan mahalagang panatilihin ang mga IP address sa kanilang sariling network, ang tanging solusyon mula sa GitHub ay ang .OVA virtual machine na walang suporta para sa mga high availability system. Ginagawa nitong mahirap ang on-prem maintenance, bukod pa, ang .OVA ay angkop lamang para sa mga katamtamang laki ng mga negosyo, kung hindi ay mag-crash lang ang server sa mas malaking load. Ang kakulangan ng GitHub Actions (hanggang kamakailan lamang at wala pa sa isang on-prem na bersyon) o CI-as-code ay nangangahulugan na kailangan mong pumili ng hiwalay na CI tool at pagkatapos ay pamahalaan ang pagsasamang iyon. Sa wakas, ang GitHub ay mas mahal kaysa sa alinmang bersyon ng GitLab.

Jenkins β€” Bagama't ang Jenkins ay itinuturing na pamantayan sa mga tuloy-tuloy na tool sa pagsasama bilang default, palagi itong kulang sa mga kakayahan sa pagkontrol ng bersyon. Lumalabas na gumagamit ka ng Jenkins at ilang uri ng tool na SCM. Masyadong mahirap kapag nagagawa ng GitLab ang pareho. Ang katamtamang disenyo ng UX ay hindi angkop para sa isang modernong web application at nag-iiwan ng maraming naisin.

BitBucket/Bamboo β€” Dapat kong kilalanin siya bilang isang awtomatikong talunan: bakit dalawang tool kapag ang GitLab ay ganap na nagsasarili. Sinusuportahan ng BitBucket Cloud ang GitLab-CI / GitHub Action functionality, ngunit walang kumpanyang mas malaki kaysa sa isang startup ang madaling maipapatupad ito. Hindi man lang sinusuportahan ng on-prem BitBucket server ang mga pipeline ng BitBucket!

#1 Tool sa Pamamahala ng Data

Nagwagi: FlywayDB

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Sa pagbuo ng web application, kadalasang hindi binibigyang kahalagahan ang database automation. Ang ideya ng pag-deploy ng mga pagbabago sa schema ng database para sa mga bagong bersyon ng application ay dumating nang huli. Ang mga pagbabago sa schema ay kadalasang nagreresulta sa pagdaragdag at pagpapalit ng pangalan ng mga column o talahanayan. Kung ang bersyon ng application ay hindi tumutugma sa bersyon ng schema, maaaring mag-crash ang application. Bilang karagdagan, ang pamamahala sa mga pagbabago sa database kapag nag-a-update ng isang application ay maaaring maging mahirap dahil mayroong dalawang magkaibang mga sistema. Niresolba ng FlyWayDB ang lahat ng problemang ito.

Mga Pangunahing Benepisyo

  • Pag-bersyon ng database - Binibigyang-daan ka ng Flyway na lumikha ng mga bersyon ng database, subaybayan ang mga paglilipat ng database, at madaling ilipat o ibalik ang mga pagbabago sa schema nang walang karagdagang tool para dito.
  • Binary o Naka-embed - Maaari naming piliing patakbuhin ang Flyway bilang bahagi ng application o bilang binary executable. Sinusuri ng Flyway ang compatibility ng bersyon sa startup at sinisimulan ang mga naaangkop na paglilipat, pinapanatiling naka-sync ang mga bersyon ng database at application. Sa pamamagitan ng pagpapatakbo ng cmd line ad-hoc command, nagbibigay kami ng flexibility sa mga umiiral nang database nang hindi muling itinatayo ang buong application.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Walang masyadong tool sa lugar na ito. Tingnan natin ang ilan sa kanila:

LiquiBase β€” Ang Liquibase ay kahawig ng FlywayDB. Gusto kong i-set up ito sa ibabaw ng Flyway kung may kasama ako sa aking team na may higit na karanasan sa Liquibase.

Flocker - Maaari lamang gumana para sa mga containerized na application. Upang matagumpay na magpatakbo ng mga containerized database, ang lahat ay dapat na planado nang perpekto. Inirerekomenda ko ang paggamit ng RDS (Relational Database Service) para sa mga database at hindi ipinapayo ang pag-imbak ng mahalagang impormasyon sa isang lalagyan.

Test Automation Tools

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Simulan natin ang ating talakayan ng mga tool sa pag-automate ng pagsubok sa pamamagitan ng pag-uuri sa kanila batay sa pagsubok na pyramid.

Ang testing pyramid (mga pagsubok) ay may 4 na antas:

  • Mga Unit Test - Ito ang batayan ng buong proseso ng awtomatikong pagsubok. Dapat ay may mas maraming unit test kumpara sa iba pang uri ng pagsubok. Ang mga developer ay sumusulat at nagpapatakbo ng mga pagsubok sa yunit upang matiyak na ang isang bahagi ng isang application (kilala bilang isang "unit") ay sumusunod sa disenyo nito at kumikilos tulad ng inaasahan.
  • Mga Component Test βˆ’ Ang pangunahing layunin ng component testing ay i-verify ang input/output na gawi ng test object. Dapat nating tiyakin na ang functionality ng test object ay ipinatupad nang tama ayon sa detalye.
  • Mga pagsubok sa pagsasama - Isang uri ng pagsubok kung saan ang mga indibidwal na software module ay pinagsama at sinusuri bilang isang grupo.
  • Mga End-to-End Test - Ang hakbang na ito ay maliwanag. Sinusubaybayan namin ang buong application at tinitiyak na gumagana ito gaya ng pinlano.

Dahil ang mga unit test at component testing ay ginagawa lang ng mga developer at kadalasan ay partikular sa programming language, hindi namin susuriin ang mga tool na ito para sa DevOps domain.

#1 Integration Testing Tool

Nagwagi: Pipino

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Pinagsasama ng pipino ang mga detalye at dokumentasyon ng pagsubok sa iisang dokumentong nabubuhay. Ang mga pagtutukoy ay palaging napapanahon dahil awtomatiko silang sinusuri ng Pipino. Kung gusto mong bumuo ng isang automated na balangkas ng pagsubok mula sa simula at modelo ng gawi ng gumagamit sa isang web application, kung gayon ang Selenium WebDriver na may Java at Cucumber BDD ay isang mahusay na paraan upang matutunan at ipatupad ang Cucumber sa isang proyekto.

Mga Pangunahing Benepisyo

  • BDD approach (Behavior Driven Development - "development through behavior" bilang kabaligtaran sa "test-driven development" approach) - Ang cucumber ay idinisenyo para sa BDD testing, ito ay orihinal na nilikha para sa mismong gawaing ito.
  • Buhay na Dokumentasyon - Ang dokumentasyon ay palaging isang sakit! Dahil nakasulat ang iyong mga pagsubok bilang code, sinusuri ng Cucumber ang awtomatikong nabuong dokumentasyon upang matiyak na naka-sync ang mga pagsubok at dokumentasyon.
  • Suporta - Maaari kaming pumili mula sa maraming mga tool, ngunit ang Cucumber ay may mga kinakailangang mapagkukunang pinansyal at isang maayos na sistema ng suporta upang matulungan ang mga user sa anumang mahirap na sitwasyon.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Sa iba pang mga frameworks at mga tool na partikular sa teknolohiya, tanging ang Cucumber ang maaaring ituring na isang unibersal na solusyon.

End-to-End Testing Tools

Kapag nagsasagawa ng end-to-end na pagsubok, kailangan mong tumuon sa dalawang pangunahing punto:

  • functional na pagsubok
  • Pagsusuri sa Stress.

Sa functional testing, sinusuri namin kung ang lahat ng gusto namin ay talagang nangyayari. Halimbawa, kapag nag-click ako sa ilang mga elemento ng aking SPA (isang pahinang aplikasyon), punan ang mga form at piliin ang "Isumite", ang data ay lalabas sa database at ang mensaheng "Tagumpay!" ay lilitaw sa screen.

Mahalaga rin para sa amin na suriin na ang isang tiyak na bilang ng mga gumagamit na nagpapatakbo ng parehong senaryo ay maaaring maproseso nang walang mga error.

Ang kawalan ng 2 uri ng pagsubok na ito ay magiging isang makabuluhang disbentaha sa iyong pipeline ng CI/CD.

#1 end-to-end na tool sa pagsubok. Functional na pagsubok

Nagwagi: SoapUI Pro

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Matagal nang nasa API testing space ang SoapUI mula noong SOAP based web services ang pamantayan. Bagama't hindi na kami gumagawa ng mga bagong serbisyo ng SOAP at hindi nagbago ang pangalan ng tool, hindi iyon nangangahulugan na hindi ito umunlad. Nagbibigay ang SoapUI ng mahusay na balangkas para sa paggawa ng mga automated na backend functional na pagsubok. Ang mga pagsubok ay madaling pagsamahin sa tuluy-tuloy na mga tool sa pagsasama at ginagamit bilang bahagi ng pipeline ng CI/CD.

Mga Pangunahing Benepisyo

  • Detalyadong dokumentasyon - Ang SoapUI ay nasa merkado sa loob ng mahabang panahon, kaya maraming online na mapagkukunan na makakatulong sa iyong maunawaan kung paano mag-set up ng mga pagsubok.
  • Dali ng Paggamit - Bagama't sinusuportahan ng tool ang maraming protocol para sa pagsubok ng mga API, ang pagkakaroon ng SoapUI ng isang karaniwang interface para sa maraming serbisyo ay nagpapadali sa mga pagsubok sa pagsulat.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Siliniyum ay isa pang mahusay na instrumento sa grupong ito. Inirerekomenda ko ang paggamit nito kung ikaw ay nagtatayo at nagpapatakbo ng isang Java based na application. Gayunpaman, kung bubuo ka ng isang buong web application na may maraming teknolohiya, maaari itong maging mahirap gamitin para sa mga di-Java na bahagi.

#1 end-to-end na tool sa pagsubok. Pagsusuri sa Stress

Nagwagi: LoadRunner

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Paliwanag: Pagdating ng oras upang i-load ang pagsubok sa bawat elemento ng iyong aplikasyon, ang LoadRunner lang ang makakakumpleto ng gawain. Oo, ito ay mahal at mahirap sa una, ngunit ang LoadRunner ay ang tanging tool na nagbibigay sa akin, bilang isang teknikal na arkitekto, ng kumpletong kumpiyansa na ang bagong code ay gagana sa ilalim ng matinding kondisyon ng pagkarga. Gayundin, sa tingin ko ay oras na para sa LoadRunner na kunin ng mga development team kaysa sa pagsubok ng mga team.

Mga Pangunahing Benepisyo

  • Malawak na dokumentasyon - Ang LoadRunner ay nasa merkado sa loob ng mahabang panahon, kaya maraming online na mapagkukunan upang matulungan kang maunawaan kung paano mag-set up ng mga pagsubok sa pagkarga.
  • Suporta sa Protocol - Sinusuportahan ng Load Runner ang lahat mula sa ODBC hanggang AJAX, HTTPS at anumang iba pang hindi walang kuwentang protocol na maaaring gamitin ng iyong application. Sinusubukan naming huwag gumamit ng maramihang mga tool para sa pagsubok ng pag-load, dahil ginagawa lamang nitong kumplikado ang proseso.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Muli, walang maraming unibersal na tool sa lugar na ito, kaya ang pinakamahusay na solusyon ay isa na gagana sa anumang kapaligiran na may anumang teknolohiya.

Mga tool sa pag-deploy

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Ang mga tool sa pag-deploy ay marahil ang hindi gaanong naiintindihan na aspeto ng pag-unlad. Para sa isang operations team na walang malalim na pag-unawa sa code at functionality ng application, mahirap gamitin ang mga naturang tool. Para sa mga developer, ang pamamahala sa deployment ay isang bagong responsibilidad, kaya wala pa silang sapat na karanasan sa pagtatrabaho sa mga naturang tool.

Una sa lahat, hatiin natin ang lahat ng tool sa pag-deploy sa tatlong subcategory:

  • pamamahala ng artifact
  • pamamahala ng pagsasaayos
  • i-deploy.

#1 Tool sa Pamamahala ng Artifact

Nagwagi: Koneksyon

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Sinusuportahan ng Nexus artifact repository ang halos lahat ng pangunahing teknolohiya, mula sa Java hanggang NPM hanggang Docker. Magagamit namin ang tool na ito para iimbak ang lahat ng artifact na ginagamit namin. Ang pag-proxy sa mga remote package manager ay makabuluhang nagpapabilis din sa proseso ng pagbuo ng CI, na ginagawang mas naa-access ang mga package para sa pagbuo. Ang isa pang bentahe ay ang kakayahang makakuha ng kumpletong view ng lahat ng mga pakete na ginagamit sa ilang mga proyekto ng software, pagharang sa hindi ligtas na mga open source na pakete (maaari silang kumilos bilang isang vector ng pag-atake).

Mga Pangunahing Benepisyo

  • Suporta sa teknikal - Maaasahang produkto; mahusay na suportado.
  • Open Source - Hindi nililimitahan ng libreng bersyon ang pangunahing functionality na kailangan ng mga development team.

#1 Tool sa Pamamahala ng Configuration

Nagwagi: Ansible

Ang Ansible ay isang pinuno para sa isang simpleng dahilan: walang estado. Noong nakaraan, ang mga katulad na tool ay nakatuon sa pamamahala ng estado ng pagsasaayos. Kapag inilunsad, ang naturang tool, na natanggap ang nais na pagsasaayos, ay susubukan na iwasto ang kasalukuyang pagsasaayos ng aplikasyon. At sa bagong diskarte, tanging mga stateless na sangkap ang naroroon. Ang mga bagong bersyon ng code ay mga artifact na naka-deploy upang palitan ang mga umiiral na. Ito ay maaaring ituring na isang uri ng ephemeral, panandaliang kapaligiran.

Mga Pangunahing Benepisyo

  • Stateless - Ang Playbook ay inilunsad mula sa deployment machine at isinasagawa sa mga target na server. Hindi ko kailangang mag-alala tungkol sa estado ng remote na bagay sa pamamagitan ng paggamit ng isang tool tulad ng Packer upang lumikha ng mga deployable na bagay.
  • Open Source - Tulad ng CentOS, ang Ansible ay sinusuportahan din ng RedHat. Nakakatulong itong mapanatili ang komunidad at nagbibigay ng mataas na kalidad, madaling gamitin na mga module.
  • Pagsubok gamit ang Molecule (isang Ansible na balangkas) - Dahil ang pamamahala ng pagsasaayos ay code, tulad ng lahat ng iba pa, ang pagsubok ay mahalaga. Ang Molecule's Ansible role testing framework ay gumagana nang walang kamali-mali, na tinitiyak na ang configuration ay may parehong kalidad at sumusunod sa parehong CI/CD pipeline gaya ng application code.
  • YAML - Kung ikukumpara sa ibang mga tool, mas madaling maunawaan ang YAML. Dahil ang pamamahala ng configuration ay karaniwang isang bagong hamon para sa mga nagpapatupad ng mga kasanayan sa DevOps, ang pagiging simple nito ay ang trump card nito.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

OpsCode Chef β€” Sinimulan ko ang aking karera sa DevOps bilang developer ng cookbook. Si Ruby at Chef ay siyempre mahal na mahal sa puso ko, ngunit hindi lang nila nareresolba ang mga problema ng modernong stateless, cloud-native na application. Ang OpsCode Chef ay isang mahusay na tool para sa mas tradisyonal na mga application, ngunit sa artikulong ito nakatuon kami sa hinaharap.

Puppet β€” Ang puppet ay hindi kailanman nagkaroon ng maraming tagahanga, lalo na kung ihahambing sa Chef at Ansible. Ito ay mahusay para sa paglalaan at pagtatrabaho sa hardware, ngunit wala itong modernong suporta sa pamamahala ng configuration para sa isang web application.

Tool sa pag-deploy #1

Nagwagi: Terraform

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Niresolba ng Terraform ang problema sa paglalarawan ng iyong imprastraktura bilang code, mula sa mga bahagi ng network hanggang sa buong mga imahe ng server. Malayo na ang narating ng produktong ito mula noong unang paglabas nito, na may napakaraming plugin na ginawa at napakalakas na komunidad na binuo na siguradong makakakuha ka ng tulong sa anumang senaryo ng deployment. Ang kakayahang suportahan ang anumang uri ng kapaligiran (nasa lugar, sa cloud, o saanman) ay walang kapantay. Sa wakas, ang pinakabagong bersyon ay nagbibigay ng halos kaparehong logic function at mga klase sa HCL gaya ng iba pang tradisyonal na programming language, na ginagawang madali at mabilis na maunawaan ng mga developer ang Terraform.

Mga Pangunahing Benepisyo

  • Environment agnostic - Gumagamit ang Terraform ng mga function na nagsisilbing interface sa pagitan ng iyong Terraform code, lahat ng API, at internal logic para makipag-ugnayan sa provider ng imprastraktura. Nangangahulugan ito na makakabisado ko lamang ang isang tool at pagkatapos ay maaari akong magtrabaho kahit saan.
  • Open Source - Mahirap talunin ang mga libreng tool! Suporta ng komunidad sa pinakamataas na antas.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

AWS Cloud Formation β€” Kahit na nagtatrabaho ka lamang sa AWS cloud environment, ang iyong susunod na trabaho ay maaaring gumamit ng ibang tool. Ang paglalaan ng lahat ng iyong oras at lakas sa isang platform lang ay isang maikling desisyon. Bukod pa rito, maraming mga bagong serbisyo ng AWS ang kadalasang available bilang mga module ng Terraform bago sila maging available sa CloudFormation.

Mga tool sa runtime

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020

Ang pangwakas na layunin ng anumang proyekto sa pag-unlad ay ilunsad ang aplikasyon sa produksyon. Sa mundo ng DevOps, gusto naming ganap na malaman ang lahat ng posibleng problema sa aming kapaligiran, at gusto rin naming bawasan ang manu-manong interbensyon. Ang pagpili ng tamang hanay ng mga tool sa runtime ay mahalaga sa pagkamit ng application development nirvana.

Mga subcategory ng mga tool sa runtime:

  • X-as-a-service (XaaS)
  • orkestrasyon
  • pagmamanman
  • pagtotroso.

X-tool-as-a-service #1

Nagwagi: Amazon Web Services

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Ang Amazon ay palaging nangunguna sa mga teknolohiya ng ulap, ngunit hindi ito titigil doon: ang iba't ibang mga bagong serbisyo para sa mga developer ay nagbubukas ng mata. Dalhin ang anumang teknolohiya at template sa AWS at ito ay gagawin at tatakbo. Ang halaga ng tool ay medyo makatwiran: ihambing ito sa pag-assemble, pamamahala at pagpapanatili ng mga kagamitan sa iyong sariling data center. Ang libreng bersyon ay nagpapahintulot sa iyo na mag-eksperimento at gumawa ng tamang desisyon bago gumastos ng pera.

Mga Pangunahing Benepisyo

  • Prevalence - Kung mayroon kang karanasan sa pagbuo ng mga application sa AWS, maaari kang magtrabaho kahit saan. Gustung-gusto ng mga negosyo ang AWS, at pinahahalagahan din ng mga startup ang mababang halaga nito.
  • Ang libreng bersyon ay isang tunay na makabuluhang kadahilanan na nagtatakda ng AWS bukod sa mga kapantay nito. Hayaan akong subukan ang serbisyo at tingnan kung paano ito gumagana bago ako gumawa ng desisyon sa pagbili, hindi ko gustong gumastos ng libu-libong dolyar sa isang bagay na hindi kailangan. Ang libreng bersyon ay palaging sapat para sa akin upang subukan ang anumang konsepto.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Azure "Malayo na ang narating ng Azure mula noong unang paglabas nito, at iyon ay kapuri-puri. Gayunpaman, ang pagnanais na maging iba ay humantong sa mga kakaibang pangalan para sa mga serbisyo, na kadalasang nagpapalubha sa trabaho. Ano ang ibig sabihin ng "blob storage"? At habang ang .NET code ay gumaganap nang mas mahusay sa Microsoft ecosystem, hindi malamang na .NET lang ang gagamitin mo para sa bawat bahagi ng iyong application.

Heroku β€” Hindi ako magpapatakbo ng anuman maliban sa isang personal na proyekto sa Heroku dahil sa mababang antas ng pagiging maaasahan at transparency, kaya hindi ito dapat gamitin ng mga kumpanya bilang isang platform. Ang Heroku ay mahusay para sa pagpapakita ng isang bagay sa isang blog, ngunit para sa praktikal na paggamit - "Hindi, salamat!"

#1 Tool sa Orkestrasyon

Nagwagi: openshift

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Malamang na gumagamit ka ng Docker o iba pang mga container sa iyong application stack. Mahusay ang mga application na walang server, ngunit maaaring hindi sila magkasya sa bawat arkitektura. Ang pagpapatakbo ng mga container na walang platform ng orkestra ay hindi gagana. Ang Kubernetes Core (K8s) ay walang kapantay sa mga tuntunin ng seguridad at tooling. Ang OpenShift ay ang tanging platform na nakabatay sa Kubernetes na maaaring mangolekta ng Source2Image, sumusuporta sa awtomatikong pag-deploy sa mga pod, at sumusuporta sa pagsubaybay at pagsubaybay. Maaaring patakbuhin ang OpenShift on-prem, sa cloud, o on-prem at sa cloud nang sabay.

Mga Pangunahing Benepisyo

  • Built-in na Seguridad - Maaaring mangailangan ng advanced na degree ang pamamahala sa seguridad ng K8s. Ang bawat detalye ay dapat na maingat na naisip at isinasaalang-alang! Ang mga mekanismo ng seguridad na binuo bilang default sa OpenShift ay nag-aalis ng pasanin sa mga developer at nagbibigay ng mas secure na platform para sa mga application.
  • All-in-one na solusyon - Hindi tulad ng mga pangunahing K8, na hindi kasama ang mga tool sa pagbabalanse ng pag-load bilang default, nasa OpenShift ang lahat. Magagamit ko ito upang lumikha at mag-host ng mga lalagyan, magpatakbo ng mga tool sa CI/CD, pamahalaan ang mga panlabas na proseso, pamahalaan ang mga susi, at marami pang iba. Bagama't ang graphical na user interface ay malayo pa sa perpekto, ang API-based na diskarte ay nangangahulugan na ang lahat ay maaaring ilarawan sa isang script. Hindi tulad ng ibang mga GUI para sa mga K8, pinadali ng OpenShift ang pag-aaral ng mga pangunahing kaalaman ng Kubernetes. Hindi mo na kailangan pang kumuha ng degree!

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Docker kuyog β€” Sinubukan ng Docker Swarm na gawing simple ang mga K8 sa pamamagitan ng pag-alis ng maraming bagay. Mahusay ito para sa maliliit na application, ngunit para sa mga enterprise application ay hindi ito gumagana. Bilang karagdagan, ang mga solusyon tulad ng AWS ECS ay gumagamit ng katulad na diskarte ngunit ginagawang mas madali ang pagtatrabaho sa iba pang mga serbisyo na maaari ko ring makipag-ugnayan (Lambda, IAM, atbp.).

Tool sa pagsubaybay #1

Nagwagi: Bagong Relic

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Isang bagay ang nagawa ng mga maagang release ng New Relic - pagsubaybay sa APM (Application Performance Monitoring). Isa na itong kumpletong tool sa pagsubaybay na nagbibigay-daan sa iyong subaybayan ang server, lalagyan, pagganap ng database, pagsubaybay sa karanasan ng end user, at siyempre, pagsubaybay sa pagganap ng application.

Mga Pangunahing Benepisyo

  • Dali ng Paggamit - Noong nagtrabaho ako bilang isang system engineer, gumamit ako ng maraming tool sa pagsubaybay, ngunit hindi pa ako nakatagpo ng isa na kasing simple at madaling gamitin bilang New Relic. Ito ay SaaS, kaya hindi mo kailangang i-install ito nang mag-isa.
  • End-to-end visibility - Sinusubukan ng ibang mga tool na subaybayan ang isang partikular na elemento ng iyong application. Halimbawa, isang sukatan ng paggamit ng processor o trapiko sa network, ngunit ang lahat ng ito ay dapat na komprehensibong subaybayan para gumana nang tama ang application. Binibigyan ka ng Bagong Relic ng kakayahang pagsama-samahin ang lahat ng iyong data upang makakuha ng komprehensibong pagtingin sa kung ano ang nangyayari.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Zabbix β€” Ang aking una at paboritong sistema ng pagsubaybay, ngunit nanatili ito sa nakaraan dahil sa kakulangan ng pag-unlad sa mga teknolohiya ng ulap at sa larangan ng pagsubaybay sa pagganap ng aplikasyon ng APM. Ginagawa pa rin ng Zabbix ang tradisyunal na pagsubaybay sa imprastraktura ng server, ngunit iyon lang.

DataDog β€” Masyadong nakatutok sa proseso ng pamamahala sa production environment ng application, at hindi sa code mismo. Sa mga koponan ng DevOps na kinasasangkutan ng mga developer, hindi namin kailangang umasa sa mga tool na mahirap gamitin upang magbigay ng nangungunang suporta.

Tool sa pag-log #1

Nagwagi: Splunk

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Mahirap makipagkumpitensya sa Splunk! Sa mahabang panahon ay nananatili siyang nangunguna sa pag-log, na patuloy na ginagawa ito nang mas mahusay kaysa sa sinuman. Sa mga on-prem at SaaS na mga alok, maaari mong gamitin ang Splunk kahit saan. Ang malaking downside ay ang presyo nito: Ang Splunk ay mahal pa rin!

Mga Pangunahing Benepisyo

  • Pervasiveness - Gustung-gusto ng mga negosyo ang Splunk, at may pera ang mga kumpanya para bilhin ito.
  • Bagama't sinusubukan ng mga startup na mabawi ang mga gastos, maraming mga function ang maaaring malutas salamat sa open source analogues.
  • Pagpapanatili - Sa madaling salita, gumagana ang Splunk at ginagawa ito nang maayos. May kasama itong maraming default na setting at feature na handa nang gamitin. Hindi na kailangang mag-aksaya ng oras sa pagbabasa ng dokumentasyon at pagsisikap na magawa ang Splunk o mag-decipher ng anuman.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

ELK Stack (ElasticSearch, LogStash at Kibana) "Mukhang paborito ang mga tool na ito dahil hindi mo na kailangang ibenta ang iyong atay para magamit ang mga ito." Gayunpaman, habang ang hanay ng mga log ay lumalaki at ang bilang ng mga aplikasyon sa board ay tumataas, ang trabaho ay nagiging mas at mas mahirap. Kung ikukumpara sa Splunk, sa ELK Stack, gumugol ako ng mas maraming oras sa pag-set up ng tooling bago gumawa ng anumang mga dashboard kaysa dati.

Mga Tool sa Pakikipagtulungan

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Pangunahing ang DevOps ay tungkol sa pagbabago ng kultura sa loob ng isang organisasyon. Ang pagbili ng anumang tool ay hindi magbabago sa mga kasalukuyang kagawian sa magdamag, ngunit tiyak na maaari nitong hikayatin ang pakikipagtulungan at mga bagong paraan ng pakikipag-ugnayan.

Mga subcategory ng mga tool sa pakikipagtulungan:

  • pagsubaybay sa gawain
  • ChatOps
  • dokumentasyon

#1 Tool sa Pagsubaybay sa Isyu

Nagwagi: Jira

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Pinananatili ni Jira ang posisyon sa pamumuno nito, bagaman tumataas ang kumpetisyon sa lugar na ito. Ang hindi kapani-paniwalang flexibility ni Jira ay nagbibigay-daan sa mga development at maintenance team na pamahalaan ang mga gawain sa proyekto at sprint. Pinapadali ng mga built-in na pamantayan gamit ang Agile terminology na lumipat mula sa mga tradisyunal na paraan ng pagtatrabaho patungo sa mas mahusay na mga proseso.

Mga Pangunahing Benepisyo

  • Popularity - Tulad ng maraming iba pang mga tool, ang Jira ay ginagamit halos lahat ng dako. Ginagamit ng maliliit na koponan ang mas mura, mas madaling ma-access na bersyon at nakukuha ang lahat ng kailangan nila, habang ang malalaking kumpanya ay kayang bumili ng mas mahal na lisensya.
  • Integrations - Si Jira ay isang pioneer sa larangan nito. Ang katotohanang ito at ang mabilis na pag-unlad ng produkto ay humahantong sa katotohanan na pinipili ng ibang mga kumpanya ang Jira upang lumikha ng kanilang sariling mga pagsasama, kaya tumataas ang halaga ng tool. Maaari naming isama si Jira sa lahat ng tool na nakalista sa artikulong ito sa labas ng kahon na may kaunting configuration.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Trello β€” Mabilis na naging popular ang Trello salamat sa libreng Kanban tool nito. Gayunpaman, sa sandaling maproseso ang sukat at lumipat ka mula sa dose-dosenang mga gawain hanggang sa libu-libo, nagiging mahirap ang Trello na mag-navigate, maghanap, at mag-ulat.

Pivotal Tracker β€” Isa akong malaking tagahanga ng tool na ito noong nagtrabaho ako para sa isang startup. Gayunpaman, ang Pivotal Tracker ay mas nakatuon sa pamamahala ng produkto kaysa sa mga teknikal na gawain. Bagama't medyo mas kumplikado ang pamamahala ng produkto sa Jira, maaari pa rin itong ipatupad doon nang hindi gumagamit ng karagdagang tool.

Tool #1 ng ChatOps

Nagwagi: MatterMost

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Paliwanag: Marahil ang pinakamalaking sorpresa para sa iyo sa aking pagpili, at iyon ay magandang balita! Ang MatterMost ay nakakuha ng katanyagan sa pamamagitan ng pagkuha ng pinakamahusay mula sa mga nakaraang tool ngunit inilalagay ang mga ito sa prem. Napakahalaga nito para sa mga kumpanya: Binibigyang-daan ka ng MatterMost na kontrolin ang iyong data at tinutulungan ka ring isama ito sa mga tool na lokal na tumatakbo. Hindi na namin kailangang lumabas sa firewall para tingnan ang mga chat sa trabaho.

Mga Pangunahing Benepisyo

  • Open Source – Ang open source na bersyon ng MatterMost ay mahusay para sa parehong medium at malalaking team. Hindi tulad ng libreng plano ng Slack, na nagde-delete sa history ng iyong mensahe, ang pagpapatakbo ng sarili mong server ay nangangahulugan na pinapanatili mo ang lahat ng iyong data.
  • Mga Pagsasama - Dahil ang API ay halos 100% batay sa Slack API, halos lahat ng mga pagsasama ng Slack ay maaaring gamitin nang direkta sa MatterMost.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Walang ingat β€” Ang Slack ay cool, ngunit ang mga taong ito ay lumago nang husto kaya nagsimula silang maghanap ng kita. Papalapit na ang payback phase ng negosyo, na nag-aalis ng kanilang pangunahing halaga: Ang Slack ay nagbibigay ng mga serbisyo nang libre; Ang pinakamahalagang kawalan ng libreng bersyon ay ang pagtanggal ng kasaysayan ng chat.

Microsoft Teams β€” Subukang isama ang isang produkto ng Microsoft sa isang bagay na hindi pag-aari ng Microsoft... Good luck! Iyon lang ang masasabi ko tungkol sa tool na ito!

Tool sa Dokumentasyon #1

Nagwagi: Confluence

Mga Tool ng DevOps na Dapat Matutunan ng Lahat sa 2020
Ang paggawa at pagpapanatili ng kalidad ng teknikal na dokumentasyon ay isang kumplikadong proseso, kahit anong tool ang iyong gamitin. Bagama't maraming mga tool sa dokumentasyon ng SaaS ang dumating sa merkado kamakailan, mahihirapan akong i-outsource ang storage ng teknikal na dokumentasyon tungkol sa mga application na kritikal sa misyon sa isang third party. Mas mainam na mag-imbak ng data at mga dokumento on-prem, at ito ay kung paano ito niresolba ng Confluence.

Mga Pangunahing Benepisyo

  • Madaling patakbuhin - Karamihan sa mga stand-alone na tool ay maaaring medyo kumplikado upang i-set up at patakbuhin at nangangailangan ng ilang kaalaman upang mapanatili. Ang Confluence Server ay mahusay na gumagana sa labas ng kahon para sa 10 o 10,000 mga gumagamit.
  • Mga Plugin - Kudos sa Confluence para sa pagkakaroon ng maganda, madaling gamitin na nabigasyon sa labas ng kahon, at ang kakayahang magdagdag ng plugin para sa halos lahat ng bagay ay nagbubukas ng potensyal na tulad ng Wiki.

mga kakumpitensya

Lumahok sa labanan, ngunit hindi nanalo

Basahin ang mga doc β€” Cool para sa open source, ngunit huwag isipin ang tungkol sa pag-imbak ng kritikal na kaalaman dito.

Markdown - Mahusay para sa pagdodokumento ng code, ngunit mahirap mag-post ng arkitektura, mga proseso, o iba pang uri ng dokumentasyon dahil sa partikular na pag-format ng MarkDown.

Jekyll β€” Kapag nagdodokumento ng teknikal na kaalaman, hindi ko gustong gumawa ng bagong static na site na ide-deploy sa tuwing may pagbabago. Ang simpleng version control system ng Confluence ay lubos na pinapasimple ang panloob na dokumentasyon.

Magbuo

Mayroong literal na daan-daang mga tool ng DevOps sa merkado, na nagpapahirap sa pag-alam kung alin ang gagamitin at kung kailan sila dapat ipatupad. Sundin ang simpleng gabay na ito sa pagpili ng mga tool ng DevOps para sa kumpletong pipeline ng CI/CD.

Tiyaking pumili ng mga tool mula sa lahat ng limang kategorya:

  • pag-unlad at pagbuo ng mga tool
  • pagsubok ng mga tool sa automation
  • mga tool sa pag-deploy
  • Mga tool sa runtime
  • mga tool sa pakikipagtulungan.

Pangunahing rekomendasyon: I-automate ang lahat!

Salamat Zach Shapiro!

Pinagmulan: www.habr.com

Magdagdag ng komento