Tulong: ano ang Continuous Delivery

Dati kami sinabi tungkol sa Continuous Integration (CI). Ituloy natin ang Continuous Delivery. Ito ay isang hanay ng mga pamamaraan sa pagbuo ng software. Nakakatulong itong matiyak na handa na ang iyong code para sa pag-deploy.

Tulong: ano ang Continuous Delivery
/Pixabay/ bluebudgie / PL

Kuwento

Ang pariralang tuluy-tuloy na paghahatid ay makikita pabalik maliksi na manifesto mula 2001 sa simula ng listahan ng mga pangunahing prinsipyo: "Ang priyoridad ay ang paglutas ng mga problema ng customer sa pamamagitan ng patuloy na paghahatid ng up-to-date na software."

Noong 2010, inilabas nina Jez Humble at David Farley isang libro sa pamamagitan ng Tuloy-tuloy na Paghahatid. Ayon sa mga may-akda, ang CD ay umaakma sa diskarte Patuloy na Pagsasama at nagbibigay-daan sa iyong pasimplehin ang paghahanda ng code para sa pag-deploy.

Matapos ang paglalathala ng libro, ang diskarte ay nagsimulang makakuha ng katanyagan at sa loob lamang ng ilang taon ay halos tinanggap na ito sa pangkalahatan. Ayon kay survey, na isinagawa sa mahigit 600 developer at IT manager noong 2014, 97% ng mga technical manager at 84% ng mga programmer ang pamilyar sa Continuous Delivery.

Ngayon ang diskarte na ito ay nananatiling isa sa pinakasikat. Ayon sa isang pag-aaral noong 2018 na kinasasangkutan ng IT community na DevOps at Jenkins Community, ito gumagamit kalahati ng mahigit isang libong respondent na na-survey.

Paano gumagana ang Tuloy-tuloy na Paghahatid?

Ang batayan ng CD ay ang kahandaan ng code para sa pag-deploy. Upang magawa ang gawaing ito, ginagamit ang automation ng proseso ng paghahanda ng software para sa pagpapalabas. Dapat itong maging pamantayan sa iba't ibang kapaligiran sa pag-unlad, na makakatulong upang mabilis na mahanap ang mga mahihinang punto at i-optimize ang mga ito. Halimbawa, pabilisin ang pagsubok.

Mukhang ganito ang isang halimbawa ng proseso ng Tuloy-tuloy na Paghahatid:

Tulong: ano ang Continuous Delivery

Kung ang Continuous Integration na diskarte ay responsable para sa pag-automate ng unang dalawang yugto, kung gayon ang Continuous Delivery ay responsable para sa susunod na dalawa. Ang katatagan ng proseso ay sinisiguro, bukod sa iba pang mga bagay, ng mga system pamamahala ng pagsasaayos. Sinusubaybayan nila ang mga pagbabago sa imprastraktura, database at dependencies. Ang deployment mismo ay maaaring awtomatiko o gawin nang manu-mano.

Ang mga sumusunod na kinakailangan ay ipinapataw sa proseso:

  • Availability ng impormasyon tungkol sa kahandaang pumasok sa production environment at kahandaan para sa agarang release (CD tools test the code and make it possible to evaluate the effect of changes in release).
  • Pangkalahatang responsibilidad para sa panghuling produkto. Ang pangkat ng produkto - mga tagapamahala, mga developer, mga tagasubok - isipin ang tungkol sa resulta, at hindi lamang tungkol sa kanilang lugar ng responsibilidad (ang resulta ay isang gumaganang release na magagamit sa mga gumagamit ng produkto).

Sa mga CD ito ay kadalasang ginagamit pagaaral ng Koda, at para sa pagkolekta ng mga opinyon ng customer - ang prinsipyo madilim na paglulunsad. Ang isang bagong tampok ay unang inilabas sa isang maliit na segment ng mga gumagamit - ang kanilang karanasan sa pakikipag-ugnay sa produkto ay nakakatulong upang makahanap ng mga pagkukulang at mga bug na hindi napansin sa panahon ng panloob na pagsubok.

Ano ang pakinabang

Tumutulong ang Patuloy na Paghahatid na pasimplehin ang pag-deploy ng code, na may positibong epekto sa pagiging produktibo at binabawasan ang posibilidad ng pagka-burnout ng empleyado. Sa huli, binabawasan nito ang kabuuang gastos sa pagpapaunlad. Halimbawa, nakatulong ang CD sa isa sa mga HP team bawasan tulad ng mga gastos sa pamamagitan ng 40%.

Bilang karagdagan, ayon sa isang pag-aaral noong 2016 (pahina 28 ang dokumento) - mga kumpanyang nagpatupad ng CD na nilulutas ang mga problema sa seguridad ng impormasyon nang 50% na mas mabilis kaysa sa mga hindi gumagamit ng diskarte. Sa ilang lawak, ang pagkakaibang ito ay maaaring ipaliwanag sa pamamagitan ng pagganap ng mga tool sa automation ng proseso.

Ang isa pang plus ay ang acceleration ng release. Patuloy na paghahatid sa Finnish development studio nakatulong dagdagan ang bilis ng pagpupulong ng code ng 25%.

Mga Potensyal na Kahirapan

Ang una at pangunahing problema ay ang pangangailangan na muling itayo ang mga pamilyar na proseso. Upang ipakita ang mga benepisyo ng bagong diskarte, ito ay nagkakahalaga ng paglipat sa CD nang paunti-unti, na hindi nagsisimula sa mga pinaka-labor-intensive na aplikasyon.

Ang pangalawang potensyal na problema ay ang malaking bilang ng mga sangay ng code. Ang kahihinatnan ng "pagsasanga" ay madalas na mga salungatan at karagdagang pagkawala ng isang malaking halaga ng oras. Posibleng solusyon - diskarte walang sanga.

Sa partikular, sa ilang mga kumpanya ang mga pangunahing paghihirap ay lumitaw sa pagsubok - ito ay tumatagal ng masyadong maraming oras. Ang mga resulta ng pagsusulit ay madalas na kailangang suriin nang manu-mano, ngunit ang isang posibleng solusyon ay maaaring parallelize ang mga pagsubok sa mga unang yugto ng pagpapatupad ng CD.

Dapat mo ring sanayin ang mga empleyado na magtrabaho gamit ang mga bagong tool - ang isang paunang programang pang-edukasyon ay makakatipid sa pagsisikap at oras ng mga developer.

Tulong: ano ang Continuous Delivery
/flickr/ h.ger1969 / CC BY-SA

Tools

Narito ang ilang bukas na tool para sa Patuloy na Paghahatid:

  • GoCD — server para sa tuluy-tuloy na paghahatid sa Java at JRuby on Rails. Binibigyang-daan kang kontrolin ang buong proseso ng paghahatid ng application: build—test—release. Ang tool ay ipinamahagi sa ilalim ng lisensya ng Apache 2.0. Mahahanap mo ito sa opisyal na website gabay sa pag-setup.
  • Capistrano — isang balangkas para sa paglikha ng mga script na awtomatiko ang pag-deploy ng mga application sa Ruby, Java o PHP. Nagagawa ni Capistrano na magsagawa ng mga utos sa isang malayuang makina sa pamamagitan ng pagkonekta dito sa pamamagitan ng SSH. Gumagana sa iba pang tuluy-tuloy na pagsasama at mga tool sa paghahatid, gaya ng Integrity CI server.
  • Gradle ay isang multi-platform na tool na nag-automate sa buong ikot ng pagbuo ng application. Gumagana ang Gradle sa Java, Python, C/C++, Scala, atbp. May integration sa Eclipse, IntelliJ at Jenkins.
  • ugong - CD platform sa wikang Go. Maaaring i-deploy ang drone on-premise o sa cloud. Ang tool ay binuo sa ibabaw ng mga lalagyan at gumagamit ng mga YAML file upang pamahalaan ang mga ito.
  • Spinnaker — isang platform para sa tuluy-tuloy na paghahatid ng code sa mga multi-cloud system. Binuo ng Netflix, ang mga inhinyero ng Google ay may malaking papel sa pagbuo ng tool. Mga tagubilin sa pag-install hanapin ito sa opisyal na website.

Ano ang mababasa sa aming corporate blog:

Pinagmulan: www.habr.com

Magdagdag ng komento