Gabay sa DevOps para sa mga Nagsisimula

Ano ang kahalagahan ng DevOps, ano ang ibig sabihin nito para sa mga propesyonal sa IT, isang paglalarawan ng mga pamamaraan, mga balangkas at mga tool.

Gabay sa DevOps para sa mga Nagsisimula

Marami nang nangyari simula nang tumagal ang terminong DevOps sa IT world. Sa karamihan ng open source ng ecosystem, mahalagang isaalang-alang muli kung bakit ito nagsimula at kung ano ang ibig sabihin nito para sa isang karera sa IT.

Ano ang DevOps

Bagama't walang iisang kahulugan, naniniwala ako na ang DevOps ay isang framework ng teknolohiya na nagbibigay-daan sa pakikipagtulungan sa pagitan ng mga development at operations team na mag-deploy ng code nang mas mabilis sa mga production environment na may kakayahang umulit at mag-automate. Gagastusin namin ang natitirang bahagi ng artikulong ito sa pag-unpack ng claim na ito.

Ang salitang "DevOps" ay kumbinasyon ng mga salitang "development" at "operations". Tumutulong ang DevOps na pataasin ang bilis ng paghahatid ng mga application at serbisyo. Nagbibigay-daan ito sa mga organisasyon na epektibong pagsilbihan ang kanilang mga customer at maging mas mapagkumpitensya sa marketplace. Sa madaling salita, ang DevOps ay ang alignment sa pagitan ng development at IT operations na may mas epektibong komunikasyon at pakikipagtulungan.

Kasama sa DevOps ang isang kultura kung saan ang pakikipagtulungan sa pagitan ng pag-unlad, mga operasyon, at mga pangkat ng negosyo ay itinuturing na kritikal. Ito ay hindi lamang tungkol sa mga tool, dahil ang DevOps sa isang organisasyon ay patuloy na nakikinabang din sa mga customer. Ang mga kasangkapan ay isa sa mga haligi nito, kasama ang mga tao at proseso. Pinapataas ng DevOps ang kakayahan ng mga organisasyon na maghatid ng mga de-kalidad na solusyon sa pinakamaikling posibleng panahon. Ino-automate din ng DevOps ang lahat ng proseso, mula sa build hanggang sa deployment, application o produkto.

Nakatuon ang talakayan ng DevOps sa relasyon sa pagitan ng mga developer, ang mga taong sumusulat ng software para mabuhay, at ang mga operator na responsable sa pagpapanatili ng software na iyon.

Mga hamon para sa development team

Ang mga developer ay may posibilidad na maging masigasig at sabik na magpatupad ng mga bagong diskarte at teknolohiya upang malutas ang mga problema sa organisasyon. Gayunpaman, nahaharap din sila sa ilang mga problema:

  • Ang mapagkumpitensyang merkado ay lumilikha ng maraming presyon upang maihatid ang produkto sa oras.
  • Dapat nilang pangalagaan ang pamamahala ng code na handa sa produksyon at pagpapakilala ng mga bagong feature.
  • Maaaring mahaba ang ikot ng paglabas, kaya kailangang gumawa ng ilang pagpapalagay ang development team bago magpatupad ng mga aplikasyon. Sa sitwasyong ito, kailangan ng mas maraming oras upang malutas ang mga isyu na lalabas sa panahon ng pag-deploy sa isang produksyon o kapaligiran ng pagsubok.

Mga hamon na kinakaharap ng pangkat ng pagpapatakbo

Ang mga operations team ay dating nakatuon sa katatagan at pagiging maaasahan ng mga serbisyo ng IT. Kaya naman ang mga operations team ay naghahanap ng katatagan sa pamamagitan ng mga pagbabago sa mga mapagkukunan, teknolohiya, o diskarte. Kasama sa kanilang mga gawain ang:

  • Pamahalaan ang paglalaan ng mapagkukunan habang tumataas ang demand.
  • Pangasiwaan ang mga pagbabago sa disenyo o pagpapasadya na kinakailangan para magamit sa isang kapaligiran ng produksyon.
  • I-diagnose at lutasin ang mga isyu sa produksyon pagkatapos ng self-deployment ng mga application.

Paano nireresolba ng DevOps ang mga problema sa pag-unlad at pagpapatakbo

Sa halip na ilunsad ang isang malaking bilang ng mga feature ng app nang sabay-sabay, sinusubukan ng mga kumpanya na makita kung maaari nilang ilunsad ang isang maliit na bilang ng mga feature sa kanilang mga customer sa pamamagitan ng isang serye ng mga pag-uulit ng release. Ang diskarte na ito ay may ilang mga pakinabang, tulad ng mas mahusay na kalidad ng software, mas mabilis na feedback ng customer, atbp. Ito, sa turn, ay nagsisiguro ng mataas na kasiyahan ng customer. Upang makamit ang mga layuning ito, ang mga kumpanya ay kinakailangan na:

  • Bawasan ang rate ng pagkabigo kapag naglalabas ng mga bagong release
  • Dagdagan ang dalas ng pag-deploy
  • Makamit ang isang mas mabilis na average na oras sa pagbawi sa kaganapan ng isang bagong release ng application.
  • Bawasan ang oras para sa mga pagwawasto

Ginagawa ng DevOps ang lahat ng mga gawaing ito at tumutulong na matiyak ang tuluy-tuloy na paghahatid. Ang mga organisasyon ay gumagamit ng DevOps upang makamit ang mga antas ng pagiging produktibo na hindi maisip ilang taon lamang ang nakalipas. Gumaganap sila ng sampu, daan-daan, at kahit libu-libong deployment bawat araw habang naghahatid ng world-class na pagiging maaasahan, katatagan, at seguridad. (Matuto pa tungkol sa mga laki ng lot at ang epekto nito sa paghahatid ng software).

Sinusubukan ng DevOps na lutasin ang iba't ibang mga problema na nagreresulta mula sa mga nakaraang pamamaraan, kabilang ang:

  • Paghihiwalay ng trabaho sa pagitan ng development at operations teams
  • Ang pagsubok at pag-deploy ay magkahiwalay na mga yugto na nagaganap pagkatapos ng disenyo at pagbuo at nangangailangan ng mas maraming oras kaysa sa mga yugto ng pagbuo.
  • Sobrang oras na ginugol sa pagsubok, pag-deploy, at pagdidisenyo sa halip na tumuon sa pagbuo ng mga pangunahing serbisyo sa negosyo
  • Manu-manong pag-deploy ng code na humahantong sa mga error sa produksyon
  • Mga pagkakaiba sa mga iskedyul ng development at operations team na nagdudulot ng mga karagdagang pagkaantala

Gabay sa DevOps para sa mga Nagsisimula

Paghaharap sa pagitan ng DevOps, Agile at tradisyonal na IT

Ang DevOps ay madalas na tinatalakay kaugnay ng iba pang mga kasanayan sa IT, partikular na Agile at Waterfall IT.

Ang Agile ay isang hanay ng mga prinsipyo, halaga, at kasanayan para sa paggawa ng software. Kaya, halimbawa, kung mayroon kang ideya na gusto mong ibahin ang anyo sa software, maaari mong gamitin ang mga prinsipyo at halaga ng Agile. Ngunit ang software na ito ay maaari lamang tumakbo sa isang development o testing environment. Kailangan mo ng simple, secure na paraan upang ilipat ang iyong software sa produksyon nang mabilis at paulit-ulit, at ang paraan ay sa pamamagitan ng mga tool at diskarte ng DevOps. Ang maliksi na software development ay nakatuon sa mga proseso ng pag-develop at ang DevOps ay responsable para sa pag-develop at pag-deploy sa pinakaligtas at pinaka-maaasahang paraan.

Ang paghahambing ng tradisyunal na modelo ng waterfall sa DevOps ay isang mahusay na paraan upang maunawaan ang mga benepisyong hatid ng DevOps. Ipinapalagay ng sumusunod na halimbawa na magiging live ang application sa loob ng apat na linggo, 85% na ang kumpleto ng pag-develop, magiging live ang application, at kasisimula pa lang ng proseso ng pagbili ng mga server para ipadala ang code.

Mga tradisyonal na proseso
Mga proseso sa DevOps

Pagkatapos maglagay ng order para sa mga bagong server, gumagana ang development team sa pagsubok. Gumagana ang task force sa malawak na dokumentasyong kinakailangan ng mga negosyo para mag-deploy ng imprastraktura.
Sa sandaling mailagay ang isang order para sa mga bagong server, ang mga development at operations team ay nagtutulungan sa mga proseso at papeles upang mai-install ang mga bagong server. Nagbibigay-daan ito sa iyong mas maunawaan ang iyong mga kinakailangan sa imprastraktura.

Ang impormasyon tungkol sa failover, redundancy, mga lokasyon ng data center, at mga kinakailangan sa storage ay mali dahil walang input mula sa isang development team na may malalim na kaalaman sa domain.
Alam at tama ang mga detalye tungkol sa failover, redundancy, disaster recovery, lokasyon ng data center, at storage dahil sa input ng development team.

Walang ideya ang operations team tungkol sa pag-unlad ng development team. Gumagawa din siya ng plano sa pagsubaybay batay sa sarili niyang mga ideya.

Ganap na alam ng operations team ang progreso na ginawa ng development team. Nakikipag-ugnayan din siya sa development team at nagtutulungan silang bumuo ng plano sa pagsubaybay na tumutugon sa mga pangangailangan ng IT at negosyo. Gumagamit din sila ng mga tool sa application performance monitoring (APM).

Ang isang pagsubok sa pag-load na isinagawa bago ang paglulunsad ng isang application ay nagiging sanhi ng pag-crash ng application, na naantala ang paglulunsad nito.
Ang isang pagsubok sa pag-load na isinagawa bago magpatakbo ng isang application ay nagreresulta sa hindi magandang pagganap. Mabilis na nireresolba ng development team ang mga bottleneck at inilulunsad ang application sa oras.

Lifecycle ng DevOps

Kasama sa DevOps ang pagpapatibay ng ilang karaniwang tinatanggap na kasanayan.

Patuloy na pagpaplano

Ang tuluy-tuloy na pagpaplano ay umaasa sa mga lean na prinsipyo upang magsimula sa maliit sa pamamagitan ng pagtukoy sa mga mapagkukunan at mga output na kailangan upang masubukan ang halaga ng negosyo o pananaw, patuloy na iakma, sukatin ang pag-unlad, matuto mula sa mga pangangailangan ng customer, baguhin ang direksyon kung kinakailangan upang mapaunlakan ang liksi, at muling likhain ang plano ng negosyo.

Pinagsamang pag-unlad

Ang collaborative na proseso ng pagbuo ay nagbibigay-daan sa mga negosyo, development team, at testing team na kumalat sa iba't ibang time zone na patuloy na maghatid ng de-kalidad na software. Kabilang dito ang multi-platform development, cross-language programming support, user story creation, ideation development, at lifecycle management. Kasama sa collaborative development ang proseso at pagsasanay ng tuluy-tuloy na pagsasama, na nagpo-promote ng madalas na pagsasama ng code at mga automated na build. Sa pamamagitan ng madalas na pag-deploy ng code sa isang application, ang mga problema sa pagsasama ay natutukoy nang maaga sa lifecycle (kapag mas madaling ayusin ang mga ito) at ang kabuuang pagsisikap sa pagsasama ay nababawasan sa pamamagitan ng tuluy-tuloy na feedback habang ang proyekto ay nagpapakita ng tuloy-tuloy at nakikitang pag-unlad.

Patuloy na pagsubok

Binabawasan ng patuloy na pagsubok ang gastos ng pagsubok sa pamamagitan ng pagtulong sa mga development team na balansehin ang bilis sa kalidad. Tinatanggal din nito ang mga bottleneck sa pagsubok sa pamamagitan ng virtualization ng serbisyo at ginagawang madali ang paggawa ng mga virtualized na kapaligiran sa pagsubok na madaling maibahagi, ma-deploy, at ma-update habang nagbabago ang mga system. Binabawasan ng mga kakayahang ito ang gastos sa pagbibigay at pagpapanatili ng mga kapaligiran sa pagsubok at paikliin ang mga tagal ng ikot ng pagsubok, na nagpapahintulot na maganap ang pagsubok ng integrasyon nang mas maaga sa lifecycle.

Patuloy na pagpapalabas at pag-deploy

Ang mga diskarteng ito ay nagdadala sa kanila ng isang pangunahing kasanayan: tuloy-tuloy na pagpapalabas at pag-deploy. Tinitiyak ito ng tuluy-tuloy na pipeline na nag-o-automate ng mga pangunahing proseso. Binabawasan nito ang mga manu-manong hakbang, mga oras ng paghihintay ng mapagkukunan, at muling paggawa sa pamamagitan ng pagpapagana ng pag-deploy sa pagpindot ng isang pindutan, na nagreresulta sa mas maraming paglabas, mas kaunting mga error, at kumpletong transparency.

Ang automation ay gumaganap ng isang mahalagang papel sa pagtiyak ng matatag at maaasahang paglabas ng software. Isa sa pinakamalaking hamon ay ang pagsasagawa ng mga manu-manong proseso tulad ng build, regression, deployment at paggawa ng imprastraktura at i-automate ang mga ito. Nangangailangan ito ng kontrol sa bersyon ng source code; pagsubok at deployment sitwasyon; data ng pagsasaayos ng imprastraktura at aplikasyon; at ang mga aklatan at mga pakete kung saan nakasalalay ang application. Ang isa pang mahalagang kadahilanan ay ang kakayahang i-query ang estado ng lahat ng mga kapaligiran.

Patuloy na pagsubaybay

Ang patuloy na pagsubaybay ay nagbibigay ng enterprise-grade na pag-uulat na tumutulong sa mga development team na maunawaan ang availability at performance ng mga application sa mga production environment bago sila i-deploy sa production. Ang maagang feedback na ibinibigay ng patuloy na pagsubaybay ay kritikal sa pagbabawas ng gastos ng mga error at pagpipiloto sa mga proyekto sa tamang direksyon. Kadalasang kasama sa kasanayang ito ang mga tool sa pagsubaybay na karaniwang nagpapakita ng mga sukatan na nauugnay sa performance ng application.

Patuloy na feedback at pag-optimize

Ang patuloy na feedback at pag-optimize ay nagbibigay ng visual na representasyon ng daloy ng customer at pagtukoy ng mga lugar ng problema. Maaaring isama ang feedback sa parehong pre- at post-sales stages para ma-maximize ang halaga at matiyak na mas maraming transaksyon ang matagumpay na nakumpleto. Ang lahat ng ito ay nagbibigay ng agarang visualization ng ugat ng mga problema ng customer na nakakaimpluwensya sa kanilang pag-uugali at epekto sa negosyo.

Gabay sa DevOps para sa mga Nagsisimula

Mga pakinabang ng DevOps

Makakatulong ang DevOps na lumikha ng kapaligiran kung saan gumagana ang mga developer at operasyon bilang isang team upang makamit ang mga karaniwang layunin. Ang isang mahalagang milestone sa prosesong ito ay ang pagpapatupad ng tuluy-tuloy na pagsasama at tuloy-tuloy na paghahatid (CI/CD). Ang mga diskarteng ito ay magbibigay-daan sa mga koponan na makakuha ng software sa merkado nang mas mabilis na may mas kaunting mga bug.

Ang mahahalagang benepisyo ng DevOps ay:

  • Predictability: Nag-aalok ang DevOps ng mas mababang rate ng pagkabigo para sa mga bagong release.
  • Pagpapanatili: Nagbibigay-daan ang DevOps para sa madaling pagbawi kung nabigo ang isang bagong release o bumaba ang isang application.
  • Reproducibility: Binibigyang-daan ka ng kontrol ng bersyon ng isang build o code na ibalik ang mga naunang bersyon kung kinakailangan.
  • Mas Mataas na Kalidad: Ang pagtugon sa mga isyu sa imprastraktura ay nagpapabuti sa kalidad ng pagbuo ng application.
  • Oras sa Market: Ang pag-optimize ng paghahatid ng software ay nagpapababa ng oras sa merkado ng 50%.
  • Pagbabawas ng Panganib: Ang pagpapatupad ng seguridad sa lifecycle ng software ay binabawasan ang bilang ng mga depekto sa buong lifecycle.
  • Cost Efficiency: Ang pagtugis ng cost efficiency sa software development ay nakakaakit sa senior management.
  • Stability: Ang software system ay mas stable, secure, at maaaring i-audit ang mga pagbabago.
  • Paghiwa-hiwalayin ang isang mas malaking codebase sa mga napapamahalaang piraso: Ang DevOps ay batay sa maliksi na mga paraan ng pag-develop, na nagbibigay-daan sa iyong hatiin ang isang malaking codebase sa mas maliliit at mapapamahalaang mga piraso.

Mga prinsipyo ng DevOps

Ang pag-ampon ng DevOps ay nagbunga ng ilang mga prinsipyo na umunlad (at patuloy na umuunlad). Karamihan sa mga nagbibigay ng solusyon ay nakabuo ng kanilang sariling mga pagbabago sa iba't ibang mga diskarte. Ang lahat ng mga prinsipyong ito ay batay sa isang holistic na diskarte sa DevOps, at maaaring gamitin ng mga organisasyon sa anumang laki ang mga ito.

Bumuo at subukan sa isang kapaligirang tulad ng produksyon

Ang ideya ay paganahin ang development at quality assurance (QA) teams na bumuo at sumubok ng mga system na kumikilos tulad ng mga production system para makita nila kung paano kumikilos at gumaganap ang application nang matagal bago ito maging handa para sa deployment .

Ang application ay dapat na konektado sa mga sistema ng produksyon sa lalong madaling panahon sa lifecycle nito upang matugunan ang tatlong pangunahing potensyal na problema. Una, pinapayagan ka nitong subukan ang application sa isang kapaligiran na malapit sa tunay na kapaligiran. Pangalawa, pinapayagan ka nitong subukan at patunayan ang mga proseso ng paghahatid ng aplikasyon nang maaga. Pangatlo, binibigyang-daan nito ang operations team na subukan nang maaga sa lifecycle kung paano kikilos ang kanilang kapaligiran kapag na-deploy ang mga application, sa gayon ay nagbibigay-daan sa kanila na lumikha ng lubos na na-customize, na nakasentro sa aplikasyon na kapaligiran.

I-deploy gamit ang paulit-ulit, maaasahang mga proseso

Ang prinsipyong ito ay nagbibigay-daan sa mga development at operations team na suportahan ang maliksi na mga proseso ng pagbuo ng software sa buong buong buhay ng software. Ang automation ay mahalaga sa paglikha ng umuulit, maaasahan, at nauulit na mga proseso. Samakatuwid, dapat gumawa ang organisasyon ng pipeline ng paghahatid na nagbibigay-daan sa tuluy-tuloy, awtomatikong pag-deploy at pagsubok. Ang madalas na pag-deploy ay nagbibigay-daan din sa mga team na subukan ang mga proseso ng deployment, sa gayon ay binabawasan ang panganib ng mga pagkabigo sa pag-deploy sa panahon ng mga live na release.

Pagsubaybay at pagsuri sa kalidad ng trabaho

Mahusay ang mga organisasyon sa pagsubaybay sa mga application sa produksyon dahil mayroon silang mga tool na kumukuha ng mga sukatan at key performance indicator (KPI) sa real time. Ang prinsipyong ito ay nagpapagalaw sa pagsubaybay nang maaga sa ikot ng buhay, na tinitiyak na sinusubaybayan ng automated na pagsubok ang functional at non-functional na mga katangian ng isang application nang maaga sa proseso. Sa tuwing ang isang application ay nasubok at na-deploy, ang mga sukatan ng kalidad ay dapat suriin at suriin. Ang mga tool sa pagsubaybay ay nagbibigay ng maagang babala sa mga problema sa pagpapatakbo at kalidad na maaaring lumitaw sa panahon ng produksyon. Ang mga indicator na ito ay dapat kolektahin sa isang format na naa-access at naiintindihan ng lahat ng stakeholder.

Pagpapabuti ng Feedback Loops

Isa sa mga layunin ng mga proseso ng DevOps ay bigyang-daan ang mga organisasyon na tumugon at gumawa ng mga pagbabago nang mas mabilis. Sa paghahatid ng software, ang layuning ito ay nangangailangan ng organisasyon na makatanggap ng feedback nang maaga at pagkatapos ay mabilis na matuto mula sa bawat aksyon na ginawa. Ang prinsipyong ito ay nangangailangan ng mga organisasyon na lumikha ng mga channel ng komunikasyon na nagpapahintulot sa mga stakeholder na mag-access at makipag-ugnayan sa isang feedback na paraan. Maaaring gawin ang pag-unlad sa pamamagitan ng pagsasaayos ng iyong mga plano o priyoridad ng proyekto. Ang pagmamanupaktura ay maaaring kumilos sa pamamagitan ng pagpapabuti ng kapaligiran ng produksyon.

Dev

  • Pagpaplano: Kanboard, Wekan at iba pang mga alternatibong Trello; GitLab, Tuleap, Redmine at iba pang mga alternatibong JIRA; Mattermost, Roit.im, IRC at iba pang mga alternatibong Slack.
  • Kodigo sa pagsulat: Git, Gerrit, Bugzilla; Jenkins at iba pang open source na tool para sa CI/CD
  • Assembly: Apache Maven, Gradle, Apache Ant, Packer
  • Mga Pagsubok: JUnit, Pipino, Selenium, Apache JMeter

Ops

  • Paglabas, Pag-deploy, Mga Operasyon: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Pagsubaybay: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, at iba pang sakop sa gabay na ito

(*Ang mga tool sa pagpapatakbo ay binilang ayon sa pagkakasunud-sunod ng paggamit ng mga pangkat ng pagpapatakbo, ngunit ang kanilang mga tool ay nag-o-overlap sa mga yugto ng lifecycle ng mga tool sa paglabas at pag-deploy. Para sa kadalian ng pagiging madaling mabasa, ang pagnunumero ay inalis.)

Sa pagtatapos

Ang DevOps ay isang lalong sikat na pamamaraan na naglalayong pagsamahin ang mga developer at operasyon bilang isang yunit. Ito ay natatangi, naiiba sa tradisyonal na mga pagpapatakbo ng IT, at umaakma sa Agile (ngunit hindi kasing-flexible).

Gabay sa DevOps para sa mga Nagsisimula

Alamin ang mga detalye kung paano makakuha ng hinahanap na propesyon mula sa simula o Level Up sa mga tuntunin ng mga kasanayan at suweldo sa pamamagitan ng pagkuha ng mga bayad na online na kurso mula sa SkillFactory:

mas maraming kurso

Kapaki-pakinabang

Pinagmulan: www.habr.com

Magdagdag ng komento