Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Laporan éta bakal nyarioskeun sababaraha prakték DevOps, tapi tina sudut pandang pamekar. Biasana, sadaya insinyur anu gabung DevOps parantos gaduh sababaraha taun pangalaman administrasi dina sabukna. Tapi ieu lain hartosna yén teu aya tempat pikeun pamekar di dieu. Langkung sering ti henteu, pamekar sibuk ngalereskeun "bug anu kritis kritis salajengna dina dinten ieu," sareng aranjeunna henteu gaduh waktos pikeun ningali gancang dina widang DevOps. Dina pamahaman panulis, DevOps nyaéta, mimitina, akal sehat. Bréh, éta kasempetan pikeun jadi leuwih éféktif. Upami anjeun pamekar, gaduh akal sehat sareng hoyong langkung efektif salaku pamuter tim, laporan ieu kanggo anjeun.

Hayu atuh ngenalkeun diri, kuring pinuh ngaku yen aya jalma di kamar anu teu nyaho kuring. Nami abdi Anton Boyko, abdi Microsoft Azure MVP. Naon MVP? Ieu Modél-Témbongkeun-Presenter. Model-View-Presenter persis kuring.

Sajaba ti éta, kuring ayeuna nyekel posisi arsiték solusi di Ciklum. Sareng nembé nembé mésér domain anu saé sapertos kitu, sareng kuring ngapdet email kuring, anu biasana kuring nunjukkeun dina presentasi. Anjeun tiasa nyerat ka abdi di: kuring [anjing] byokoant.pro. Anjeun tiasa surélék kuring kalawan patarosan. Kuring biasana ngajawab aranjeunna. Hiji-hijina hal nyaéta kuring henteu hoyong nampi patarosan ku email anu aya hubunganana sareng dua topik: politik sareng agama. Anjeun tiasa nulis ka kuring ngeunaan sagalana sejenna ku email. Sababaraha waktu bakal kaliwat, kuring bakal ngajawab.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Sababaraha kecap ngeunaan diri anjeun:

  • Abdi parantos dina widang ieu 10 taun ayeuna.
  • Kuring digawé di Microsoft.
  • Kami bapa pendiri komunitas Azure Ukraina, anu kami diadegkeun di mana waé di 2014. Sareng urang masih gaduh sareng nuju ngembangkeun éta.
  • Kami ogé bapa pangadeg konferensi Azure, nu urang hosting di Ukraina.
  • Kuring ogé mantuan ngatur Global Azure Bootcamp di Kyiv.
  • Sakumaha ceuk kuring, kuring Microsoft Azure MVP.
  • Kuring sering nyarios dina konperénsi. Abdi resep pisan nyarios dina konperénsi. Sataun katukang kuring tiasa manggung sakitar 40 kali. Upami anjeun ngaliwat Ukraina, Bélarus, Polandia, Bulgaria, Swédia, Dénmark, Walanda, Spanyol atanapi masihan atanapi nyandak nagara sanés di Éropa, maka éta mungkin waé nalika anjeun angkat ka konperénsi anu gaduh téma awan dina aliranna, Anjeun tiasa ningali kuring dina daptar speaker.
  • Abdi ogé kipas Star Trek.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Hayu urang ngobrol saeutik ngeunaan Agenda. Agenda kami saderhana pisan:

  • Urang bakal ngobrol ngeunaan naon DevOps. Hayu urang ngobrol naha ieu penting. Sateuacanna, DevOps mangrupikeun kecap konci anu anjeun tulis dina resume anjeun sareng langsung nampi gaji +$500. Ayeuna anjeun kedah nyerat, contona, blockchain dina resume anjeun supados nampi +500 dolar kana gaji anjeun.
  • Teras, nalika urang ngartos sakedik ngeunaan naon ieu, urang bakal ngobrol ngeunaan naon prakték DevOps. Tapi henteu seueur dina konteks DevOps sacara umum, tapi ngeunaan prakték DevOps anu tiasa dipikaresep ku pamekar. Kuring gé ngabejaan Anjeun naha maranéhna bisa jadi dipikaresep ku anjeun. Kuring bakal nyarioskeun ka anjeun naha anjeun kedah ngalakukeun ieu sareng kumaha éta tiasa ngabantosan anjeun ngirangan nyeri.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Gambar tradisional anu dipidangkeun ku seueur jalma. Ieu naon anu lumangsung dina loba proyék. Ieu nalika urang gaduh departemén pamekaran sareng operasi anu ngadukung parangkat lunak urang. Sareng departemén ieu henteu saling komunikasi.

Panginten, upami anjeun henteu tiasa ngaraos jelas pisan dina DevOps sareng departemén operasi, anjeun tiasa ngagambar analogi sareng departemén Dev sareng QA. Aya jalma anu ngembangkeun software sareng aya jalma QA anu goréng tina sudut pandang pamekar. Contona, kuring bunuh kode kuring éndah mun Repository nu, tur aya sababaraha scoundrel linggih aya anu mulih kode ieu kuring sarta nyebutkeun yén kode anjeun goréng.

Ieu sadayana kajadian kusabab jalma-jalma henteu saling komunikasi. Jeung maranéhna buang sababaraha bungkusan, sababaraha aplikasi pikeun silih ngaliwatan sababaraha témbok salah paham jeung nyoba ngalakukeun hiji hal sareng maranehna.

Justru tembok ieu budaya DevOps dirancang pikeun ngancurkeun, nyaéta. maksakeun jalma pikeun saling komunikasi sareng sahenteuna ngartos naon anu dilakukeun ku jalma anu béda dina proyék sareng naha karyana penting.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Sarta lamun urang ngobrol ngeunaan DevOps, batur bakal ngabejaan Anjeun yen DevOps nyaeta nalika proyék ngabogaan integrasi kontinyu; batur bakal nyebutkeun yen DevOps nyaeta lamun proyek implements "infrastruktur sakumaha kode" prakték; aya anu bakal nyarios yén léngkah munggaran pikeun DevOps nyaéta fitur branching, fitur umbul.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Intina, ieu sadayana leres dina cara sorangan. Tapi ieu ngan ukur prakték pamungkas anu urang gaduh. Sateuacan ngalih kana prakték ieu, kuring nyarankeun ningali slide ieu, anu nunjukkeun 3 tahapan ngalaksanakeun metodologi Dev-Ops dina proyék anjeun, di perusahaan anjeun.

Slide ieu ogé ngagaduhan nami henteu resmi kadua. Anjeun tiasa milarian online pikeun milarian naon éta 3 Musketeers of DevOps. Ieu mungkin nu bakal manggihan artikel ieu. Naha 3 Musketeers? Handap eta nyebutkeun: jalma, prosés jeung produk, i.e. PPP - Porthos, Porthos sareng Porthos. Ieu mangrupikeun 3 Musketeers of DevOps. Artikel ieu ngajelaskeun dina leuwih jéntré naha ieu téh penting jeung naon entails.

Nalika anjeun ngamimitian ngalaksanakeun budaya DevOps, penting pisan yén éta dilaksanakeun dina urutan ieu.

Mimiti anjeun kedah ngobrol sareng jalma. Sareng anjeun kedah ngajelaskeun ka jalma naon éta sareng kumaha aranjeunna tiasa nampi sababaraha kauntungan tina éta.

Konférénsi kami disebut DotNet Fest. Sareng sakumaha anu diwartoskeun ku panitia, kami utamina ngondang pamiarsa pamekar di dieu, janten kuring ngarepkeun kalolobaan jalma di aula aub dina pangwangunan.

Urang bakal ngobrol ngeunaan jalma, urang bakal ngobrol ngeunaan naon pamekar hayang ngalakukeun unggal poé. Naon anu paling dipikahoyong? Éta rék nulis sababaraha kode anyar, make frameworks newfangled, nyieun fitur anyar. Naon anu paling dipikaresep ku pamekar? Ngalereskeun bug heubeul. Kuring miharep anjeun satuju sareng abdi. Ieu anu dipikahoyong ku pamekar. Aranjeunna hoyong nyerat fitur anyar, aranjeunna henteu hoyong ngalereskeun bug.

Jumlah kutu anu dihasilkeun ku pamekar tangtu gumantung kana kumaha lempeng leungeunna sareng sabaraha aranjeunna tumuwuh tina taktakna, sanés tina kantong imbitna. Tapi sanajan kitu, lamun urang boga proyék badag, kadang eta kajadian nu teu mungkin pikeun ngalacak sagalana, jadi eta bakal nice pikeun urang ngagunakeun sababaraha pendekatan anu bakal nulungan urang nulis kode leuwih stabil sarta kualitas luhur.

Naon anu paling dipikahoyong ku QA? Abdi henteu terang upami aranjeunna aya di aula. Hésé pikeun kuring nyarios yén kuring hoyong QA, sabab kuring henteu pernah. Jeung euweuh ngalanggar ka guys, eta bakal disebutkeun yen kuring miharep kuring pernah bakal. Tapi sanés pikeun alesan yén kuring nganggap karyana henteu aya gunana sareng henteu aya gunana, tapi kusabab kuring henteu nganggap diri kuring jalma anu tiasa ngalakukeun padamelan ieu sacara éfisién, janten kuring moal nyobian ngalakukeunana. Tapi tina naon anu kuring kahartos, anu paling henteu dipikaresep ku QA bakal damel énjing-énjing, teras-terasan ngajalankeun sababaraha jinis tés régrési, ngalangkungan bug anu sami anu aranjeunna dilaporkeun ka pamekar 3 sprints katukang sareng nyarios: "Iraha anjeun bakal , Monsieur D 'Artagnan, ngalereskeun bug ieu.' Sareng Monsieur D'Artagnan ngawaler anjeunna: "Leres, leres, leres, kuring parantos ngalereskeunana." Na kumaha kajadian nu kuring dibereskeun hiji bug jeung dijieun 5 sapanjang jalan.

Jalma anu ngadukung solusi ieu dina produksi hoyong solusi ieu tiasa dianggo tanpa bug, supados aranjeunna henteu kedah reboot server unggal dinten Jumaah, nalika sadaya jalma normal angkat ka bar. Pamekar deployed on Jumaah, admins calik nepi ka Saptu, nyobian pikeun meunangkeun deployment ieu nepi na dibereskeun.

Sareng nalika anjeun ngajelaskeun ka jalma yén aranjeunna ditujukeun pikeun ngarengsekeun masalah anu sami, anjeun tiasa ngaléngkah ka formalisasi prosés. Hal ieu kacida penting. Naha? Kusabab nalika urang nyarios "formalisasi," penting pikeun anjeun ngajelaskeun kumaha prosés anjeun lumangsung sahenteuna dina napkin. Anjeun kedah ngartos yén upami anjeun, contona, nyebarkeun ka lingkungan QA atanapi lingkungan produksi, teras éta salawasna lumangsung dina urutan ieu; dina tahap ieu urang ngajalankeun, contona, tes unit otomatis sareng tes UI. Saatos deployment, urang pariksa naha deployment lumangsung ogé atawa goréng. Tapi anjeun parantos gaduh daptar tindakan anu jelas anu kedah diulang-ulang deui nalika anjeun nyebarkeun produksi.

Sareng nalika prosés anjeun diformalkeun, anjeun mimiti milih produk anu bakal ngabantosan anjeun ngajadikeun otomatis prosés ieu.

Hanjakal, kuring sering pisan ningali ieu lumangsung sabalikna. Pas aya anu nguping kecap "DevOps", aranjeunna langsung nyarankeun masang Jenkins, sabab yakin yén pas aranjeunna masang Jenkins, aranjeunna bakal ngagaduhan DevOps. Aranjeunna dipasang Jenkins, baca "Kumaha" artikel dina ramatloka Jenkins, diusahakeun eusian prosés kana artikel Kumaha mun ieu, lajeng sumping ka jalma sarta ngagulung jalma leuwih, nyebutkeun yen buku nyebutkeun yen anjeun kudu ngalakukeun hal eta ku cara kieu, jadi urang ngalakukeun eta cara kieu.

Éta sanés yén Jenkins mangrupikeun alat anu goréng. Abdi henteu hartosna nyarios kitu. Tapi ieu ngan salah sahiji produk. Sareng produk mana anu anjeun anggo kedah janten kaputusan terakhir anjeun, sareng sanés hartosna anu munggaran anjeun. Produk anjeun henteu kedah didorong ku palaksanaan budaya sareng pendekatan. Ieu penting pisan pikeun ngarti, naha kuring nyéépkeun waktos dina slide ieu sareng ngajelaskeun sadayana ieu salami lami.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Hayu urang ngobrol ngeunaan prakték DevOps sacara umum. Naon éta aranjeunna? Naon bédana? Kumaha coba aranjeunna dina? Naha aranjeunna penting?

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Praktek munggaran anu anjeun kantos kantos nguping disebut Integrasi Kontinyu. Panginten batur dina proyék gaduh Integrasi Kontinyu (CI).

Masalah pangbadagna nyaéta yén paling sering nalika kuring naros ka jalma: "Naha anjeun gaduh CI dina proyék éta?" sarta manéhna nyebutkeun: "Sumuhun,"Lajeng nalika kuring nanya naon anu anjeunna laksanakeun, anjeunna ngajelaskeun ka kuring pancen sakabéh prosés automation. Ieu teu sagemblengna bener.

Kanyataanna, prakték CI ngan ditujukeun pikeun ngahijikeun kode anu ditulis ku jalma anu béda-béda kana sababaraha jinis dasar kode tunggal. Éta hungkul.

Marengan CI, biasana aya prakték sanés sapanjang jalan - sapertos Continuous Deployment, Release Management, tapi urang bakal ngobrol ngeunaan éta engké.

CI sorangan ngabejaan urang yen jalma béda nulis kode jeung kode ieu kudu terus terpadu kana basa kode tunggal.

Naon anu masihan kami sareng naha éta penting? Upami urang gaduh DotNet, maka éta saé, éta mangrupikeun basa anu disusun, urang tiasa nyusun aplikasi urang. Upami éta kompilasi, maka ieu mangrupikeun tanda anu saé. Ieu henteu hartosna nanaon acan, tapi éta tanda alus kahiji yén urang sahenteuna bisa compile.

Teras urang tiasa ngajalankeun sababaraha tés, anu ogé prakték anu misah. Tés sadayana héjo - ieu mangrupikeun tanda anu saé anu kadua. Tapi deui, ieu teu hartosna nanaon.

Tapi naha anjeun bakal ngalakukeun ieu? Sakabeh prak-prakan anu bakal diomongkeun ayeuna mah mawa nilai anu kira-kira sarua, nyaéta kira-kira mangpaat anu sarua jeung diukur ogé kira-kira sarua.

Kahiji, éta ngidinan Anjeun pikeun nyepetkeun pangiriman. Kumaha ieu ngamungkinkeun anjeun nyepetkeun pangiriman? Lamun urang nyieun sababaraha parobahan anyar dina basa kode urang, urang bisa langsung nyobian ngalakukeun hal kalawan kode ieu. Kami henteu ngantosan dugi ka dinten Kemis sabab dinten Kemis kami ngaleupaskeun ka QA Environment, kami ngalakukeun éta di dieu sareng di dieu.

Kuring bakal ngabejaan Anjeun hiji carita hanjelu tina kahirupan kuring. Jaman baheula, kuring masih ngora jeung ganteng. Ayeuna kuring geus ngora, geulis tur pinter, sarta modest. Sababaraha waktu ka tukang kuring keur di proyek. Kami ngagaduhan tim ageung sakitar 30 pamekar. Sareng kami ngagaduhan proyék Perusahaan anu ageung anu dikembangkeun sakitar 10 taun. Sareng urang ngagaduhan cabang anu béda. Dina Repository kami ngagaduhan cabang dimana pamekar leumpang. Sareng aya cabang anu nampilkeun versi kode anu aya dina produksi.

Cabang produksi éta 3 bulan di tukangeun cabang anu sayogi pikeun pamekar. Naon ieu hartosna? Ieu ngandung harti yén pas kuring boga bug wae nu mana anu ka produksi alatan lepat pamekar, sabab diidinan, sarta alatan kasalahan QA, sabab nempo eta, mangka ieu hartina lamun kuring narima a tugas pikeun hotfix pikeun produksi, lajeng kuring kudu gulung deui parobahan kode kuring 3 sababaraha bulan kapengker. Kuring kudu apal naon kuring kungsi 3 sababaraha bulan kapengker jeung nyoba ngalereskeun eta aya.

Upami anjeun teu acan gaduh pangalaman ieu, anjeun tiasa nyobian éta dina proyék bumi anjeun. Hal utama anu, ulah coba eta dina hiji komérsial. Tulis sababaraha garis kode, hilap ngeunaan aranjeunna salami genep bulan, teras uih deui sareng cobian gancang ngajelaskeun naon éta garis kode sareng kumaha anjeun tiasa ngalereskeun atanapi ngaoptimalkeunana. Ieu pangalaman pisan, seru pisan.

Upami urang gaduh prakték Integrasi Kontinyu, maka ieu ngamungkinkeun urang pikeun pariksa ku sababaraha alat otomatis di dieu sareng ayeuna, pas kuring parantos nyerat kode kuring. Ieu bisa jadi teu masihan kuring gambar pinuh, Tapi Tapi, éta bakal miceun sahenteuna sababaraha resiko. Sareng upami aya bug poténsial, kuring bakal terang ngeunaan éta ayeuna, nyaéta, sacara harfiah dina sababaraha menit. Abdi henteu kedah ngagulung deui 3 bulan. Kuring ngan bakal perlu gulung deui 2 menit. A mesin kopi alus malah moal boga waktu pikeun brew kopi dina 2 menit, jadi éta geulis cool.

Ieu boga nilai nu bisa diulang waktu sanggeus waktu dina unggal proyék, i.e. teu ngan hiji anjeun nyetél éta. Anjeun tiasa ngulang prakték sorangan sareng CI sorangan bakal diulang pikeun unggal parobihan anyar anu anjeun lakukeun pikeun proyék éta. Hal ieu ngamungkinkeun anjeun ngaoptimalkeun sumberdaya sabab tim anjeun damel langkung éfisién. Anjeun moal deui gaduh kaayaan dimana bug datang ka anjeun tina kode anu anjeun damel sareng 3 sababaraha bulan kapengker. Anjeun moal deui gaduh gentos kontéks nalika anjeun calik sareng nyéépkeun dua jam munggaran nyobian ngartos naon anu kajantenan teras teras lebet kana hakekat kontéks sateuacan anjeun ngamimitian ngabenerkeun hiji hal.

Kumaha urang tiasa ngukur kasuksésan atanapi kagagalan prakték ieu? Lamun ngalaporkeun ka boss badag naon urang dilaksanakeun dina proyék CI, anjeunna uninga bla bla bla. Kami ngalaksanakeunana, OKÉ, tapi naha, naon anu dibawa ka kami, kumaha urang ngukur éta, kumaha leres atanapi henteu leres urang ngalaksanakeunana?

Anu kahiji nyaéta, hatur nuhun kana CI, urang tiasa nyebarkeun langkung sering, sareng langkung sering persis kusabab kode urang berpotensi langkung stabil. Dina cara anu sami, waktos urang mendakan kasalahan dikirangan sareng waktos pikeun ngabenerkeun kasalahan ieu dikirangan ku alesan yén kami nampi jawaban tina sistem di dieu sareng ayeuna, naon anu salah sareng kode kami.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Prakték anu sanés anu urang gaduh nyaéta prakték Uji Otomatis, anu paling sering hadir sareng prakték CI. Maranéhna silih tempas.

Naon anu penting pikeun ngarti di dieu? Kadé ngartos yen tés urang béda. Sareng unggal tés otomatis ditujukeun pikeun ngarengsekeun masalahna sorangan. Simkuring gaduh, contona, Unit tés anu ngamungkinkeun urang pikeun nguji modul misah, i.e. Kumaha gawéna dina vakum? Ieu alus.

Kami ogé gaduh tés integrasi anu ngamungkinkeun urang ngartos kumaha modul anu béda-béda ngahijikeun. Éta ogé alus.

Urang tiasa gaduh tes otomatisasi UI anu ngamungkinkeun urang mariksa kumaha hasil karya sareng UI nyumponan sarat anu disetél ku palanggan, jsb.

Tes khusus anu anjeun jalankeun tiasa mangaruhan sabaraha sering anjeun ngajalankeunana. Unit tés biasana ditulis pondok tur leutik. Sareng aranjeunna tiasa diluncurkeun sacara teratur.

Upami urang nyarioskeun tes otomatisasi UI, langkung saé upami proyék anjeun alit. Tés otomatisasi UI anjeun tiasa nyandak sababaraha waktos anu nyukupan. Tapi biasana tés otomatisasi UI mangrupikeun hal anu peryogi sababaraha jam dina proyék ageung. Tur éta alus lamun éta sababaraha jam. Hiji-hijina hal nyaéta yén teu aya gunana pikeun ngajalankeunana pikeun unggal ngawangun. Éta asup akal pikeun ngajalankeun aranjeunna wengi. Sareng nalika sadayana sumping damel énjing-énjing: duanana panguji sareng pamekar, aranjeunna nampi sababaraha jinis laporan yén kami ngajalankeun autotest UI wengi sareng nampi hasil ieu. Sarta di dieu, hiji jam gawé hiji server anu bakal pariksa yen produk Anjeun meets sababaraha sarat bakal laér leuwih murah ti hiji jam gawé ti insinyur QA sarua, sanajan anjeunna insinyur QA Junior anu dianggo pikeun dahareun jeung nuhun. Sadayana sami, sajam operasi mesin bakal langkung mirah. Ieu naha éta asup akal pikeun investasi di dinya.

Abdi gaduh proyék sanés anu kuring parantos damel. Kami ngagaduhan sprint dua minggu dina proyék ieu. proyék éta badag, penting pikeun sektor finansial, sarta kasalahan teu bisa dijieun. Sareng saatos ngutruk dua minggu, siklus pangembangan diteruskeun ku prosés tés, anu nyandak 4 minggu deui. Coba bayangkeun skala tragedi. Urang nulis kode salila dua minggu, lajeng urang ngalakukeun eta ala CodeFreeze, paket kana versi anyar tina aplikasi, sarta gulung kaluar ka testers. Testers nguji éta pikeun sejen 4 minggu, i.e. Nalika aranjeunna nguji éta, urang gaduh waktos nyiapkeun dua versi deui pikeun aranjeunna. Ieu mangrupikeun kasus anu hanjelu.

Sareng kami nyarioskeun ka aranjeunna yén upami anjeun hoyong langkung produktif, masuk akal pikeun anjeun ngalaksanakeun prakték Uji Otomatis, sabab ieu anu nganyenyeri anjeun di dieu, ayeuna.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Praktek Deployment Kontinyu. Hébat, anjeun parantos ngawangun. Ieu geus alus. Kode anjeun geus disusun. Ayeuna bakal langkung saé pikeun nyebarkeun wangunan ieu dina sababaraha lingkungan. Sebutkeun dina lingkungan pikeun pamekar.

Naha éta penting? Mimiti, anjeun tiasa ningali kumaha suksés anjeun kalayan prosés panyebaran éta sorangan. Kuring geus patepung proyék kawas kieu, nalika kuring nanya: "Kumaha anjeun nyebarkeun versi anyar tina aplikasi?", guys ngabejaan kuring: "Urang ngumpul jeung pak kana arsip pos. Urang kirimkeun ka admin ku mail. Admin ngaunduh sareng ngalegaan arsip ieu. Sareng sadaya kantor mimiti ngadoakeun yén server bakal nyandak versi énggal.

Hayu urang mimitian ku hal basajan. Salaku conto, aranjeunna hilap nempatkeun CSS dina arsip atanapi hilap ngarobih hashtag dina nami file java-script. Sareng nalika urang nyuhunkeun ka server, browser nyangka yén éta parantos ngagaduhan file java-script ieu sareng mutuskeun henteu ngaunduhana. Tur aya versi heubeul, hal ieu leungit. Sacara umum, tiasa seueur masalah. Ku alatan éta, prakték Deployment Kontinyu ngamungkinkeun anjeun sahenteuna nguji naon anu bakal kajadian upami anjeun nyandak gambar rujukan anu bersih sareng diunggah ka lingkungan énggal anu bersih. Anjeun tiasa ningali dimana ieu nuju.

Ogé, mun anjeun ngahijikeun kode antara silih, i.e. antara paréntah, ieu ngidinan Anjeun pikeun ogé ningali kumaha eta Sigana on UI.

Salah sahiji masalah anu lumangsung dimana loba vanili java-script dipaké nyaéta yén dua pamekar rashly ngadéklarasikeun variabel kalawan ngaran anu sarua dina obyék jandela. Lajeng, gumantung kana tuah Anjeun. Saha file java-script anu ditarik kadua bakal nimpa parobahan anu sanés. Ieu ogé pohara seru. Anjeun asup: hiji hal lumaku pikeun hiji jalma, nu sejen teu dianggo pikeun sejen. Tur éta "endah" lamun eta sadayana kaluar dina produksi.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Praktek salajengna anu urang gaduh nyaéta prakték Pulihkeun Otomatis, nyaéta ngagulung deui kana versi aplikasi sateuacana.

Naha ieu penting pikeun pamekar? Aya kénéh nu apal kana jauh, jauh 90s, nalika komputer éta badag sarta program éta leutik. Sareng hiji-hijina jalan pikeun pangwangunan wéb nyaéta ngalangkungan PHP. Henteu yén PHP mangrupikeun basa anu goréng, sanaos éta.

Tapi masalahna béda. Nalika urang nyebarkeun versi anyar tina situs php urang, kumaha urang nyebarkeun éta? Paling sering urang muka Manajer Jauh atawa hal sejenna. Sareng unggah file ieu ka FTP. Sarta kami ujug-ujug sadar yen urang tadi sababaraha leutik, bug leutik, contona, urang poho nempatkeun titik koma atawa poho pikeun ngarobah sandi pikeun database, tur aya hiji sandi pikeun database, nu aya dina host lokal. Sareng urang mutuskeun pikeun gancang nyambung ka FTP sareng ngédit file di dinya. Ieu ngan seuneu! Ieu naon populér di 90s.

Tapi, mun can nempo kalénder, taun 90-an geus ampir 30 taun ka tukang. Ayeuna sagalana geus lumangsung saeutik béda. Sareng cobian bayangkeun skala tragedi nalika aranjeunna nyarioskeun ka anjeun: "Kami nyebarkeun produksi, tapi aya anu salah di dinya. Ieu login sareng kecap akses FTP anjeun, sambungkeun ka produksi sareng gancang ngalereskeunana di dinya. Upami anjeun Chuck Norris, ieu bakal tiasa dianggo. Lamun henteu, mangka anjeun risiko yén lamun ngalereskeun hiji bug, anjeun bakal nyieun 10 leuwih. Ieu persis naha prakték ieu rolling deui ka versi saméméhna ngidinan Anjeun pikeun ngahontal loba.

Malah lamun hal goréng kumaha bae meunang kana prod wae, lajeng éta goréng, tapi teu fatal. Anjeun tiasa gulung deui ka versi sateuacanna anjeun gaduh. Sebutkeun cadanganna, upami langkung gampil ditingali dina terminologi éta. Anjeun tiasa gulung deui ka versi saméméhna ieu, sarta pamaké masih bakal tiasa dianggo kalayan produk Anjeun, tur anjeun bakal boga waktu panyangga nyukupan. Anjeun tiasa kalem, tanpa rurusuhan, nyandak sadayana ieu sareng nguji sacara lokal, ngalereskeunana, teras unggah versi énggal. Bener asup akal pikeun ngalakukeun ieu.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Ayeuna hayu urang coba ngagabungkeun kumaha bae dua prakték saméméhna babarengan. Kami bakal nampi anu katilu anu disebut Manajemén Pelepasan.

Lamun urang ngobrol ngeunaan deployment Kontinyu dina formulir klasik na, urang nyebutkeun yén urang kudu narik kode ti sababaraha cabang ti gudang, compile sarta nyebarkeun eta. Alus lamun urang boga lingkungan nu sarua. Upami urang gaduh sababaraha lingkungan, ieu hartosna urang kedah narik kode unggal waktos, bahkan tina komitmen anu sami. Kami bakal narik éta unggal waktos, kami bakal ngawangun unggal waktos sareng kami bakal nyebarkeunana ka lingkungan énggal. Firstly, ieu téh waktu, sabab ngawangun hiji proyék, lamun boga hiji badag tur asalna ti 90an, éta bisa nyandak sababaraha jam.

Salian ti éta, aya deui kasedih. Lamun anjeun ngawangun, malah dina mesin sarua, anjeun bakal ngawangun sumber anu sarua, anjeun masih teu boga jaminan yén mesin ieu dina kaayaan anu sarua sakumaha anu kasebut salila ngawangun panungtungan.

Sebutkeun aya anu sumping sareng ngapdet DotNet pikeun anjeun atanapi, sabalikna, aya anu mutuskeun pikeun ngahapus hiji hal. Teras anjeun gaduh disonansi kognitif yén tina komitmen ieu dua minggu ka tukang kami ngawangun gedong sareng sadayana saé, tapi ayeuna sigana sapertos mesin anu sami, komitmen anu sami, kode anu sami anu urang nyobian ngawangun, tapi éta henteu jalan. . Anjeun bakal nganyahokeun ieu kanggo waktos anu lami sareng sanés kanyataan yén anjeun bakal terang. Sahenteuna, anjeun bakal ngarusak saraf anjeun pisan.

Ku alatan éta, prakték Manajemén Release nyarankeun ngenalkeun abstraksi tambahan anu disebut gudang artefak atanapi galeri atanapi perpustakaan. Anjeun tiasa nelepon deui naon rék.

Gagasan utama nyaéta pas urang gaduh sababaraha jinis komitmen di dinya, sebutkeun, dina cabang anu kami siap nyebarkeun ka lingkungan anu béda, kami ngumpulkeun aplikasi tina komitmen ieu sareng sadayana anu kami butuhkeun pikeun aplikasi ieu, kami bungkus éta. kana arsip pos sareng simpen dina sababaraha panyimpenan anu tiasa dipercaya. Sareng tina panyimpenan ieu urang tiasa nampi arsip pos ieu iraha waé.

Teras we nyandak sareng sacara otomatis nyebarkeun ka lingkungan dev. Urang balapan di dinya, sareng upami sadayana saé, maka urang nyebarkeun ka panggung. Upami sadayana leres, maka urang nyebarkeun arsip anu sami pikeun produksi, binari anu sami, disusun persis sakali.

Sajaba ti éta, lamun urang boga galeri kawas ieu, eta oge mantuan kami alamat resiko nu urang kajawab dina slide panungtungan nalika urang ngobrol ngeunaan rollback kana versi saméméhna. Upami anjeun teu kahaja nyebarkeun anu salah, anjeun salawasna tiasa nyandak vérsi anu sanés ti galeri ieu sareng ngahapuskeunana ka lingkungan ieu ku cara anu sami. Ieu ngamungkinkeun anjeun gampang ngagulung deui ka versi sateuacana upami aya anu salah.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Aya prakték hébat sejen. Anjeun sareng abdi sadayana ngartos yén nalika urang ngagulung deui aplikasi ka versi sateuacana, ieu tiasa hartosna yén urang ogé peryogi infrastruktur tina versi sateuacana.

Nalika urang ngobrol ngeunaan infrastruktur maya, seueur jalma anu nyangka yén ieu mangrupikeun hal anu diatur ku admin. Sareng upami anjeun peryogi, sebutkeun, pikeun kéngingkeun server énggal dimana anjeun badé nguji versi énggal tina aplikasi anjeun, maka anjeun kedah nyerat tikét ka admin atanapi devops. Devops bakal nyandak 3 minggu pikeun ieu. Sareng saatos 3 minggu aranjeunna bakal nyarios yén kami parantos dipasang mesin virtual pikeun anjeun, sareng hiji inti, dua gigabyte RAM sareng server Windows tanpa DotNet. Anjeun nyarios: "Tapi kuring hoyong DotNet." Aranjeunna: "Ok, balik deui dina 3 minggu."

Gagasanna nyaéta ku ngagunakeun Infrastruktur salaku prakték Kode, anjeun tiasa ngarawat infrastruktur virtual anjeun salaku sumber daya sanés.

Panginten, upami aya diantara anjeun anu ngembangkeun aplikasi dina DotNet, anjeun panginten kantos nguping ngeunaan perpustakaan anu disebut Entity Framework. Sareng anjeun tiasa nguping yén Entity Framework mangrupikeun salah sahiji pendekatan anu aktip didorong ku Microsoft. Pikeun damel sareng database, ieu mangrupikeun pendekatan anu disebut Code First. Ieu nalika anjeun ngajelaskeun dina kode kumaha anjeun hoyong database anjeun katingal. Lajeng anjeun nyebarkeun aplikasi. Ieu nyambung ka database, eta sorangan nangtukeun mana tabel aya na nu tabel henteu, sarta nyieun sagalana nu peryogi.

Anjeun tiasa ngalakukeun hal anu sami sareng infrastruktur anjeun. Henteu aya bédana antara naha anjeun peryogi database pikeun proyék atanapi naha anjeun peryogi server Windows pikeun proyék. Ieu ngan sumberdaya a. Sareng anjeun tiasa ngajadikeun otomatis nyiptakeun sumberdaya ieu, anjeun tiasa ngajadikeun otomatis konfigurasi sumberdaya ieu. Sasuai, unggal waktos Anjeun hoyong nguji sababaraha konsép anyar, sababaraha pendekatan anyar, anjeun moal kudu nulis tikét ka devops, anjeun bisa kalayan gampang nyebarkeun hiji infrastruktur terasing pikeun diri tina témplat siap-dijieun, ti Aksara siap-dijieun tur nerapkeun eta. aya sagala percobaan Anjeun. Anjeun tiasa ngahapus ieu, kéngingkeun sababaraha hasil sareng ngalaporkeun langkung seueur ngeunaan éta.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Prakték salajengna, anu ogé aya sareng ogé penting, tapi anu dianggo ku sababaraha urang, nyaéta Pangimeutan Kinerja Aplikasi.

Abdi hoyong nyarios ngan hiji hal ngeunaan Pangimeutan Kinerja Aplikasi. Naon anu paling penting ngeunaan prakték ieu? Ieu mangrupikeun Pangimeutan Kinerja Aplikasi sami sareng ngalereskeun apartemen. Ieu sanés kaayaan ahir, éta mangrupikeun prosés. Anjeun kudu ngalakukeun eta rutin.

Dina cara anu saé, éta hadé pikeun ngalaksanakeun Pangimeutan Kinerja Aplikasi dina ampir unggal wangunan, sanaos, sakumaha anu anjeun ngartos, ieu henteu salawasna mungkin. Tapi, sahenteuna, éta kedah dilaksanakeun pikeun unggal sékrési.

Naha éta penting? Kusabab upami anjeun ujug-ujug ngalaman serelek dina pagelaran, maka anjeun kedah jelas ngartos kunaon. Lamun tim anjeun boga, sebutkeun, sprints dua minggu, lajeng sahenteuna sakali unggal dua minggu anjeun kudu nyebarkeun aplikasi anjeun ka sababaraha server misah, dimana anjeun boga processor jelas dibereskeun, RAM, disk, jsb Jeung ngajalankeun eta tes kinerja sarua. . Anjeun meunang hasilna. Tempo kumaha eta geus robah ti ngutruk saméméhna.

Tur upami Anjeun salah manggihan yén drawdown turun sharply handap wae, éta bakal hartosna yén éta ngan kusabab parobahan anu lumangsung salila dua minggu kaliwat. Ieu bakal ngamungkinkeun anjeun pikeun ngaidentipikasi sareng ngalereskeun masalah langkung gancang. Sareng deui, ieu kira-kira métrik anu sami dimana anjeun tiasa ngukur kumaha suksés anjeun ngalakukeunana.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Prakték salajengna anu urang gaduh nyaéta prakték Manajemén Konfigurasi. Aya saeutik pisan anu nyandak ieu serius. Tapi percanten ka kuring, ieu saleresna mangrupikeun hal anu serius.

Aya carita lucu nembe. Lalaki sumping ka kuring sareng nyarios: "Bantu kami ngalaksanakeun audit kaamanan pikeun aplikasi kami." Urang nempo kode babarengan pikeun lila, aranjeunna ngawartoskeun kuring ngeunaan aplikasi nu, Drew diagram. Jeung tambah atawa dikurangan sagalana éta logis, kaharti, aman, tapi aya hiji TAPI! Aranjeunna ngagaduhan file konfigurasi dina kontrol sumberna, kalebet produksi sareng database IP, kalayan login sareng kecap akses pikeun nyambungkeun kana database ieu, jsb.

Sareng kuring nyarios: "Guys, oke, anjeun parantos nutup lingkungan produksi anjeun nganggo firewall, tapi kanyataan yén anjeun gaduh login sareng kecap akses pikeun database produksi langsung dina kontrol sumber sareng pamekar naon waé anu tiasa maca éta mangrupikeun résiko kaamanan anu ageung. . Sareng henteu masalah kumaha super aman aplikasi anjeun tina sudut pandang kode, upami anjeun ngantepkeunana dina kontrol sumber, maka anjeun moal pernah lulus audit mana waé. Éta naon kuring ngawangkong ngeunaan.

Manajemén konfigurasi. Urang tiasa gaduh konfigurasi anu béda dina lingkungan anu béda. Salaku conto, urang tiasa gaduh login sareng kecap akses anu béda pikeun database pikeun QA, demo, lingkungan produksi, jsb.

Konfigurasi ieu ogé tiasa otomatis. Éta kudu salawasna misah ti aplikasi sorangan. Naha? Kusabab anjeun ngawangun aplikasi sakali, lajeng aplikasi nu teu paduli naha anjeun nyambung ka server SQL via IP misalna hiji atawa kitu jeung kitu hiji IP, sakuduna dianggo sami. Ku alatan éta, lamun ujug-ujug salah sahiji anjeun masih hardcoding string sambungan dina kode, teras inget yen kuring bakal manggihan anjeun sarta ngahukum anjeun lamun manggihan diri dina proyék nu sami sareng abdi. Ieu salawasna disimpen dina konfigurasi misah, contona, dina web.config.

Sareng konfigurasi ieu parantos diatur nyalira, nyaéta ieu mangrupikeun waktos nalika pamekar sareng pangurus tiasa sumping sareng calik di kamar anu sami. Sareng pamekar tiasa nyarios: "Tingali, ieu mangrupikeun binari aplikasi kuring. Aranjeunna dianggo. Aplikasi butuh database pikeun jalan. Di dieu gigireun binaries aya file. Dina file ieu, widang ieu jawab login, ieu pikeun sandi, ieu pikeun IP. Sebarkeun ka mana waé." Tur éta basajan tur jelas ka admin. Anjeunna tiasa nyebarkeun éta di mana waé ku ngatur konfigurasi ieu.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Sareng prakték anu terakhir anu kuring hoyong ngobrolkeun nyaéta prakték anu aya hubunganana pisan sareng méga. Sareng éta mawa pangaruh maksimal upami anjeun damel di méga. Ieu mangrupikeun panyabutan otomatis lingkungan anjeun.

Kuring terang aya sababaraha jalma dina konperénsi ieu ti tim anu kuring damel. Sareng sareng sadaya tim anu kuring damel, kami nganggo prakték ieu.

Naha? Tangtosna, éta bakal langkung saé upami unggal pamekar ngagaduhan mesin virtual anu tiasa dianggo 24/7. Tapi panginten ieu mangrupikeun warta pikeun anjeun, panginten anjeun henteu nengetan, tapi pamekar nyalira henteu tiasa dianggo 24/7. A pamekar biasana dianggo 8 jam sapoé. Malah lamun manehna datang ka dianggo mimiti, anjeunna boga dahar beurang badag salila manéhna indit ka gim. Hayu éta 12 jam sapoé nalika pamekar sabenerna ngagunakeun sumberdaya ieu. Numutkeun undang-undang urang, urang gaduh 5 tina 7 dinten dina saminggu anu dianggap dinten damel.

Sasuai, dina weekdays mesin ieu teu kudu dianggo 24 jam, tapi ngan 12, sarta dina weekends mesin ieu teu kudu dianggo pisan. Ieu bakal sigana nu sagalana basajan pisan, tapi naon anu penting pikeun nyebutkeun dieu? Ku ngalaksanakeun prakték saderhana ieu dina jadwal dasar ieu, éta ngamungkinkeun anjeun ngirangan biaya ngajaga lingkungan ieu ku 70%, nyaéta anjeun nyandak harga dev anjeun, QA, demo, lingkungan sareng dibagi ku 3.

Patarosan na, naon anu kudu dipigawé kalayan sesa duit? Salaku conto, pamekar kedah mésér ReSharper upami aranjeunna henteu acan. Atawa boga pihak cocktail. Upami anjeun saacanna ngagaduhan hiji lingkungan dimana dev sareng QA grazed, sareng éta, ayeuna anjeun tiasa ngadamel 3 anu béda anu bakal diasingkeun, sareng jalma-jalma moal saling ngaganggu.

Prakték DevOps pangsaéna pikeun pamekar. Anton Boyko (2017)

Ngeunaan slide kalawan pangukuran kinerja kontinyu, kumaha urang bisa ngabandingkeun kinerja lamun urang boga 1 rékaman dina database dina proyék, dua bulan engké aya sajuta? Kumaha ngartos naha sareng naon gunana pikeun ngukur kinerja?

Ieu mangrupikeun patarosan anu saé, sabab anjeun kedah ngukur kinerja dina sumber anu sami. Nyaéta, anjeun gulung kaluar kode anyar, anjeun ngukur kinerja dina kode anyar. Contona, anjeun kedah nguji skenario kinerja béda, hayu urang nyebutkeun rék nguji kumaha aplikasi ngajalankeun dina beban lampu, dimana aya 1 pamaké sarta ukuran database 000 gigabytes. Anjeun ngukur éta sareng ngagaduhan nomerna. Salajengna urang nyandak skenario sejen. Contona, 5 pamaké, ukuran database 5 terabyte. Kami nampi hasil sareng émut.

Naon anu penting di dieu? Nu penting di dieu nyaeta gumantung kana skenario, volume data, jumlah pamaké simultaneous, jsb, Anjeun bisa ngajalankeun kana wates nu tangtu. Contona, nepi ka wates kartu jaringan, atawa wates hard drive, atawa wates kamampuhan processor. Ieu naon anu penting pikeun anjeun ngartos. Dina skenario béda anjeun ngajalankeun kana wates nu tangtu. Sareng anjeun kedah ngartos nomer nalika anjeun pencét éta.

Urang ngobrol ngeunaan ngukur kinerja di lingkungan test husus? Nyaeta, ieu teu produksi?

Leres, ieu sanés produksi, ieu mangrupikeun lingkungan tés, anu sok sami supados anjeun tiasa ngabandingkeunana sareng pangukuran sateuacana.

Kahartos nuhun!

Upami teu aya patarosan, sigana urang tiasa réngsé. Hatur nuhun!

sumber: www.habr.com

Tambahkeun komentar