Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Gambar: Unsplash

Halo kabeh! We are automation engineers saka perusahaan Teknologi Positif lan kita ndhukung pangembangan produk perusahaan: kita ndhukung kabeh pipa perakitan saka komit baris kode dening pangembang kanggo publikasi produk rampung lan lisensi ing server nganyari. Secara informal, kita diarani insinyur DevOps. Ing artikel iki, kita arep ngomong babagan tahapan teknologi proses produksi piranti lunak, kepiye kita ndeleng lan kepiye klasifikasi.

Saka materi sampeyan bakal sinau babagan kerumitan koordinasi pangembangan multi-produk, babagan apa peta teknologi lan cara mbantu nyepetake lan niru solusi, apa tahapan lan langkah-langkah utama proses pangembangan, kepiye wilayah tanggung jawab antarane DevOps lan tim ing perusahaan kita.

Babagan Chaos lan DevOps

Secara ringkes, konsep DevOps kalebu alat lan layanan pangembangan, uga metodologi lan praktik paling apik sing digunakake. Ayo dadi siji metu global tujuane saka implementasine ide DevOps ing perusahaan kita: iki minangka pangurangan sing konsisten ing biaya produksi lan pangopènan produk kanthi kuantitatif (jam-jam utawa jam mesin, CPU, RAM, Disk, lsp.). Cara sing paling gampang lan paling jelas kanggo nyuda biaya pembangunan ing tingkat kabeh perusahaan yaiku minimalake biaya kanggo nindakake tugas serial khas ing kabeh tahap produksi. Nanging apa tahapan kasebut, carane misahake saka proses umum, langkah-langkah apa sing kalebu?

Nalika perusahaan ngembangake siji produk, kabeh luwih jelas: biasane ana peta dalan umum lan skema pembangunan. Nanging apa sing kudu ditindakake nalika garis produk berkembang lan luwih akeh produk? Ing kawitan marketing, padha duwe pangolahan padha lan baris Déwan lan game "golek X beda" ing log lan Tulisan wiwit. Apa yen wis ana 5+ proyek ing pangembangan aktif lan dhukungan kanggo sawetara versi sing dikembangake sajrone pirang-pirang taun dibutuhake? Apa kita pengin nggunakake maneh minangka akeh solusi sabisa ing pipelines produk utawa kita siap kanggo nglampahi dhuwit ing pembangunan unik kanggo saben?

Carane golek imbangan antarane uniqueness lan solusi serial?

Pitakonan kasebut wiwit muncul ing ngarep kita luwih asring wiwit taun 2015. Jumlah produk saya tambah, lan kita nyoba nggedhekake departemen otomatisasi (DevOps), sing ndhukung jalur perakitan produk kasebut, kanthi minimal. Ing wektu sing padha, kita pengin niru pirang-pirang solusi ing antarane produk. Sawise kabeh, kenapa nindakake perkara sing padha ing sepuluh produk kanthi cara sing beda-beda?

Direktur Pengembangan: "Wong lanang, apa kita bisa ngevaluasi apa sing ditindakake DevOps kanggo produk?"

Kita: "Ora ngerti, kita ora takon pitakonan kaya ngono, nanging indikator apa sing kudu dipikirake?"

Direktur Pengembangan: “Sapa ngerti! Mikir…”

Kaya ing film sing misuwur: "Aku ing hotel! .." - "Eh ... Apa sampeyan bisa nuduhake dalan?" Ing refleksi, kita teka ing kesimpulan sing pisanan kudu mutusake ing negara pungkasan produk; iki dadi gol pisanan kita.

Dadi, kepiye sampeyan nganalisa rolas produk kanthi tim sing cukup gedhe saka 10 nganti 200 wong lan nemtokake metrik sing bisa diukur nalika niru solusi?

1: 0 kanggo Chaos, utawa DevOps ing pundhak

Kita miwiti kanthi nyoba aplikasi diagram IDEF0 lan macem-macem diagram proses bisnis saka seri BPwin. Kebingungan wiwit sawise kothak kaping lima saka tataran sabanjuré saka project sabanjuré, lan kothak iki kanggo saben project bisa digambar ing buntut saka python dawa ing 50+ langkah. Aku rumangsa sedhih lan pengin nguwuh ing rembulan - umume ora cocog.

Tugas produksi khas

Proses produksi model minangka proyek sing rumit lan angel banget: sampeyan kudu ngumpulake, ngolah lan nganalisa akeh data saka macem-macem departemen lan rantai produksi. Sampeyan bisa maca liyane babagan iki ing artikel "Pemodelan proses produksi ing perusahaan IT".

Nalika kita miwiti modeling proses produksi kita, kita duwe goal tartamtu - kanggo ngirim kanggo saben karyawan melu ing pangembangan produk perusahaan kita, lan manager project:

  • carane produk lan komponen, wiwit saka commit saka baris kode, tekan customer ing wangun installers lan nganyari,
  • sumber daya apa sing diwenehake kanggo saben tahapan produksi produk,
  • layanan apa sing ditindakake ing saben tahap,
  • carane wilayah tanggung jawab kanggo saben tahap diwatesi,
  • kontrak apa ana ing ngleboke lan metu saka saben tataran.

Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Ngeklik gambar bakal mbukak kanthi ukuran lengkap.

Pakaryan kita ing perusahaan dipérang dadi sawetara wilayah fungsional. Arah infrastruktur melu optimalisasi operasi kabeh sumber daya "wesi" departemen, uga otomatisasi panyebaran mesin virtual lan lingkungane. Arah ngawasi nyedhiyakake kontrol kinerja layanan 24/7; kita uga nyedhiyakake pemantauan minangka layanan kanggo pangembang. Arah alur kerja nyedhiyakake tim kanthi alat kanggo ngatur proses pangembangan lan tes, nganalisa kahanan kode, lan entuk analitik babagan proyek. Lan pungkasane, arah webdev nyedhiyakake publikasi rilis ing server nganyari GUS lan FLUS, uga lisensi produk nggunakake layanan LicenseLab. Kanggo ndhukung saluran produksi, kita nyiyapake lan njaga macem-macem layanan dhukungan kanggo pangembang (sampeyan bisa ngrungokake crita babagan sawetara ing rapat-rapat lawas: Op! DevOps! 2016 и Op! DevOps! 2017). Kita uga ngembangake alat otomatisasi internal, kalebu solusi open source.

Sajrone limang taun kepungkur, pakaryan kita wis nglumpukake akeh jinis lan operasi rutin sing padha, lan pangembang saka departemen liyane utamane teka saka sing diarani tugas khas, solusi sing lengkap utawa sebagian otomatis, ora nyebabake kesulitan kanggo para pemain lan ora mbutuhake karya sing akeh. Bebarengan karo wilayah utama, kita nganalisa tugas kasebut lan bisa ngenali kategori kerja individu, utawa langkah produksi, tahapan kasebut dipérang dadi langkah-langkah sing ora bisa dipisahake, lan sawetara tahapan ditambahake rantai proses produksi.

Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Conto paling gampang saka rantai teknologi yaiku tahap perakitan, penyebaran lan uji coba saben produk ing perusahaan. Contone, tataran mbangun kasusun saka pirang-pirang langkah khas sing kapisah: ngundhuh sumber saka GitLab, nyiapake dependensi lan perpustakaan pihak katelu, testing unit lan analisis kode statis, nglakokake skrip mbangun ing GitLab CI, nerbitake artefak ing repositori ing Artifactory lan generasi cathetan rilis liwat alat ChangelogBuilder internal kita.

Sampeyan bisa maca babagan tugas DevOps khas ing artikel liyane babagan Habré: "Pengalaman pribadi: kaya apa sistem Integrasi Terus-terusan"Lan"Otomasi proses pangembangan: kepiye cara ngetrapake ide DevOps ing Teknologi Positif".

Akeh ranté produksi sing khas dibentuk proses produksi. Pendekatan standar kanggo njlentrehake proses yaiku nggunakake model IDEF0 fungsional.

Conto modeling proses manufaktur CI

Kita menehi perhatian khusus kanggo pangembangan proyek standar kanggo sistem integrasi sing terus-terusan. Iki ndadekake iku bisa kanggo entuk manunggalaken proyek, nyorot sing disebut nerbitake skema mbangun kanthi promosi.

Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Mangkene cara kerjane. Kabeh proyèk katon khas: padha kalebu konfigurasi rakitan sing tiba ing repositori gambar asli seko ing Artifactory, sawise kang disebarake lan dites ing bangku test, lan banjur munggah menyang gudang release. Layanan Artifactory minangka titik distribusi siji kanggo kabeh artefak mbangun antarane tim lan layanan liyane.

Yen kita nyederhanakake lan nggawe umum skema rilis, mula kalebu langkah-langkah ing ngisor iki:

  • perakitan produk lintas platform,
  • nyebar menyang bangku uji,
  • tes fungsional lan tes liyane,
  • promosi bangunan sing diuji kanggo ngeculake repositori ing Artifactory,
  • publikasi rilis dibangun ing server nganyari,
  • pangiriman rakitan lan nganyari produksi,
  • miwiti instalasi lan nganyari produk.

Contone, nimbang model teknologi skema release khas iki (sabanjuré mung Model) ing wangun model IDEF0 fungsi. Iki nggambarake tahapan utama proses CI kita. model IDEF0 nggunakake supaya disebut- Notasi ICOM (Input-Control-Output-Mekanisme) kanggo njlèntrèhaké apa sumber daya digunakake ing saben tataran, adhedhasar apa aturan lan syarat karya dileksanakake, apa output, lan apa mekanisme, layanan utawa wong ngleksanakake tataran tartamtu.

Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Ngeklik gambar bakal mbukak kanthi ukuran lengkap.

Minangka aturan, luwih gampang decompose lan rinci deskripsi proses ing model fungsional. Nanging nalika nomer unsur mundak akeh, iku dadi liyane lan liyane angel kanggo ngerti soko ing wong. Nanging ing pangembangan nyata ana uga tahap tambahan: ngawasi, sertifikasi produk, otomatisasi proses kerja, lan liya-liyane. Amarga masalah skala kita nilar katrangan iki.

Lair Pangarep-arep

Ing sawijining buku, kita nemokake peta Soviet lawas sing njlentrehake proses teknologi (sing, kanthi cara, isih digunakake saiki ing akeh perusahaan lan universitas negara). Ngenteni, ngenteni, amarga kita uga duwe alur kerja!.. Ana tahapan, asil, metrik, syarat, indikator, lan liya-liyane… Yagene ora nyoba ngetrapake lembar alur menyang pipa produk kita uga? Ana rasa: “Iki! Kita wis nemokake benang sing bener, wektune kanggo narik kanthi apik!

Ing tabel prasaja, kita mutusake kanggo ngrekam produk kanthi kolom, lan tahapan teknologi lan langkah-langkah pipa produk kanthi baris. Milestones soko gedhe, kayata langkah mbangun produk. Lan langkah-langkah sing luwih cilik lan luwih rinci, kayata langkah ngundhuh kode sumber menyang server mbangun utawa langkah nyusun kode kasebut.

Ing persimpangan baris lan kolom ing peta, kita nyelehake status kanggo tahap lan produk tartamtu. Kanggo status, sakumpulan negara ditetepake:

  1. Ora ana data - utawa ora pantes. Sampeyan perlu kanggo nganalisa dikarepake kanggo tataran ing produk. Salah siji analisis wis dileksanakake, nanging tataran saiki ora perlu utawa ora ekonomi sabdho.
  2. Ditundha - utawa ora relevan saiki. Tahap ing pipa dibutuhake, nanging ora ana pasukan kanggo implementasine ing taun iki.
  3. Rencana. Tahap kasebut direncanakake kanggo implementasine ing taun iki.
  4. Dilaksanakake. Tahap ing pipa dileksanakake ing volume sing dibutuhake.

Isi ing tabel wiwit project dening project. Kaping pisanan, tahapan lan langkah siji proyek diklasifikasikake lan statuse dicathet. Banjur dheweke njupuk proyek sabanjure, ndandani status kasebut lan nambahake tahapan lan langkah-langkah sing ilang ing proyek sadurunge. Akibaté, kita entuk tahapan lan langkah kabeh pipa produksi lan statuse ing proyek tartamtu. Ternyata kaya matriks kompetensi pipa produk. Kita diarani matriks kasebut minangka peta teknologi.

Kanthi bantuan peta teknologi, kita kanthi logis koordinasi karo tim rencana kerja kanggo taun kasebut lan target sing pengin digayuh bebarengan: tahapan apa sing ditambahake ing proyek taun iki, lan apa sing bakal ditindakake mengko. Uga, sajrone karya, kita bisa uga duwe dandan ing tahapan sing wis rampung mung kanggo siji produk. Banjur kita nggedhekake peta lan ngenalake dandan iki minangka tahapan utawa langkah anyar, banjur analisa kanggo saben produk lan ngerteni kemungkinan kanggo niru perbaikan kasebut.

Dheweke bisa mbantah kita: "Iki kabeh, mesthi apik, mung kanthi wektu, jumlah langkah lan tahapan bakal dadi gedhe banget. Carane dadi?

Kita wis ngenalake deskripsi standar lan cukup lengkap babagan syarat kanggo saben tahapan lan langkah, supaya bisa dingerteni kabeh wong ing perusahaan kanthi cara sing padha. Swara wektu, minangka dandan sing ngenalaken, langkah bisa digunakke menyang tataran utawa langkah liyane, lan banjur bakal "ambruk". Ing wektu sing padha, kabeh syarat lan nuansa teknologi cocog karo syarat tahap utawa langkah generalisasi.

Kepiye cara ngevaluasi efek replikasi solusi? Kita nggunakake pendekatan sing gampang banget: kita ngubungake biaya modal awal kanggo implementasine tahap anyar kanggo biaya produk umum taunan, lan banjur dibagi kabeh nalika replikasi.

Bagean pangembangan wis ditampilake minangka tonggak sejarah lan langkah-langkah ing peta. Kita bisa mengaruhi nyuda biaya produk liwat introduksi otomatisasi kanggo tahapan khas. Sawisé iku, kita nimbang owah-owahan ing karakteristik kualitatif, metrik kuantitatif lan bathi ditampa dening tim (ing wong-jam utawa mesin-jam tabungan).

Peta teknologi proses produksi

Yen kita njupuk kabeh tahapan lan langkah-langkah, encode karo tag lan nggedhekake dadi siji rantai, mula bakal dadi dawa banget lan ora bisa dingerteni (mung "buntut python" sing kita rembugan ing wiwitan artikel) :

[Production] — [InfMonitoring] — [SourceCodeControl] — [Prepare] — [PrepareLinuxDocker] — [PrepareWinDocker] — [Build] — [PullSourceCode] — [PrepareDep] — [UnitTest] — [CodeCoverage] — [StaticAnalyze] — [BuildScenario] — [PushToSnapshot] — [ChangelogBuilder] — [Deploy] — [PrepareTestStand] — [PullTestCode] — [PrepareTestEnv] — [PullArtifact] — [DeployArtifact] — [Test] — [BVTTest] — [SmokeTest] — [FuncTest] — [LoadTest] — [IntegrityTest] — [DeliveryTest] — [MonitoringStands] — [TestManagement] — [Promote] — [QualityTag] — [MoveToRelease] — [License] — [Publish] — [PublishGUSFLUS] — [ControlVisibility] — [Install] — [LicenseActivation] — [RequestUpdates] — [PullUpdates] — [InitUpdates] — [PrepareEnv] — [InstallUpdates] — [Telemetry] — [Workflow] — [Communication] — [Certification] — [CISelfSufficiency]

Iki minangka tahapan mbangun produk [Mbangun], nyebarake kanggo nguji server [Deploy], nguji [Test], promosi mbangun kanggo ngeculake repositori adhedhasar asil tes [Promote], ngasilake lan nerbitake lisensi [Lisensi], nerbitake [ Nerbitake] ing server nganyari GUS lan pangiriman kanggo server nganyari FLUS, instalasi lan nganyari komponen produk ing infrastruktur customer nggunakake Manajemen Konfigurasi Product [Instal], uga koleksi telemetri [Telemetri] saka produk diinstal.

Kajaba iku, tahapan sing kapisah bisa dibedakake: pemantauan negara infrastruktur [InfMonitoring], versi kode sumber [SourceCodeControl], mbangun persiapan lingkungan [Prepare], manajemen proyek [Workflow], nyedhiyakake tim alat komunikasi [Komunikasi], sertifikasi produk [ Sertifikasi] lan njamin swasembada pangolahan CI [CISelfSufficiency] (contone, kamardikan saka majelis saka Internet). Welasan langkah ing proses kita ora bakal dianggep, amarga padha banget spesifik.

Bakal luwih gampang kanggo mangerteni lan ndeleng kabeh proses produksi yen diwenehi ing wangun peta teknologi; iki tabel kang orane tumrap sekolah produksi individu lan langkah decomposed saka Model ditulis ing larik, lan ing kolom gambaran saka apa wis rampung ing saben tataran utawa langkah. Emphasis utama diselehake ing sumber daya sing nyedhiyani saben tataran, lan delimitasi wilayah tanggung jawab.

Peta kanggo kita minangka jinis klasifikasi. Iki nggambarake bagean teknologi gedhe saka produksi produk. Thanks kanggo iki, dadi luwih gampang kanggo tim otomasi kita kanggo sesambungan karo pangembang lan bebarengan ngrancang implementasine tahapan otomatisasi, uga ngerti apa biaya tenaga kerja lan sumber daya (manungsa lan hardware) bakal dibutuhake.

Ing njero perusahaan kita, peta kasebut kanthi otomatis digawe saka template jinja minangka file HTML biasa, banjur diunggah menyang server GitLab Pages. Gambar kanthi conto peta sing digawe kanthi lengkap bisa dideleng link.

Ngatur Chaos: Nyetel samubarang kanthi bantuan peta teknologi

Ngeklik gambar bakal mbukak kanthi ukuran lengkap.

Ing cendhak, peta teknologi minangka gambaran umum saka proses produksi, sing nggambarake pamblokiran sing diklasifikasikake kanthi jelas kanthi fungsi khas.

Struktur peta dalan kita

Peta kasebut kalebu sawetara bagean:

  1. Wilayah judhul - ing kene ana gambaran umum peta, konsep dhasar ditetepake, sumber daya utama lan asil proses produksi ditetepake.
  2. Dashboard - ing kene sampeyan bisa ngontrol tampilan data kanggo produk individu, ringkesan tahapan sing ditindakake lan langkah-langkah umum kanggo kabeh produk diwenehake.
  3. Peta teknologi - gambaran tabular saka proses teknologi. Ing peta:
    • kabeh tahapan, langkah lan kode sing diwenehi;
    • deskripsi singkat lan lengkap babagan tahapan diwenehi;
    • sumber daya input lan layanan sing digunakake ing saben tataran dituduhake;
    • asil saben tahapan lan langkah sing kapisah dituduhake;
    • area tanggung jawab kanggo saben tahapan lan langkah dituduhake;
    • sumber daya technical, kayata HDD (SSD), RAM, vCPU, lan man-jam perlu kanggo ndhukung karya ing tataran iki, loro ing wayahe saiki - kasunyatan, lan ing mangsa - rencana, wis ditemtokake;
    • kanggo saben produk, dituduhake tahap utawa langkah teknologi sing wis ditindakake, direncanakake kanggo implementasine, ora relevan utawa ora ditindakake.

Pengambilan keputusan adhedhasar peta teknologi

Sawise mriksa peta, sampeyan bisa nindakake sawetara tumindak - gumantung saka peran karyawan ing perusahaan (manajer pangembangan, manajer produk, pangembang utawa tester):

  • ngerti tahapan sing ilang ing produk utawa proyek nyata lan netepake kabutuhan implementasine;
  • mbatesi wilayah tanggung jawab ing antarane sawetara departemen yen padha kerja ing tahapan sing beda;
  • setuju karo kontrak ing lawang mlebu lan metu saka tahapan;
  • nggabungake tataran karya menyang proses pembangunan sakabèhé;
  • luwih akurat netepake perlu kanggo sumber daya sing nyedhiyani saben orane tumrap sekolah.

Summarizing kabeh ndhuwur

Nuntun punika Versatile, extensible lan gampang kanggo njaga. Luwih gampang ngembangake lan njaga katrangan babagan proses ing wangun iki tinimbang model IDEF0 akademik sing ketat. Kajaba iku, deskripsi tabel luwih prasaja, luwih akrab, lan luwih apik tinimbang model fungsional.

Kanggo implementasi teknis langkah-langkah kasebut, kita duwe alat internal khusus CrossBuilder - alat lapisan antarane sistem CI, layanan lan infrastruktur. Pangembang ora perlu ngethok mancal: ing sistem CI kita, cukup kanggo mbukak salah sawijining skrip (tugas sing disebut) alat CrossBuilder, sing bakal ditindakake kanthi bener, kanthi nganggep fitur infrastruktur kita. .

Hasil

Artikel kasebut dadi cukup dawa, nanging iki ora bisa dihindari nalika njlentrehake pemodelan proses kompleks. Pungkasane, aku pengin ndandani ide utama kita kanthi ringkes:

  • Tujuan kanggo ngetrapake ide DevOps ing perusahaan kita yaiku nyuda biaya produksi lan pangopènan produk perusahaan kanthi konsisten kanthi kuantitatif (jam-jam utawa jam mesin, vCPU, RAM, Disk).
  • Cara kanggo nyuda biaya pembangunan sakabèhé yaiku nyuda biaya kanggo nindakake tugas serial sing khas: tahapan lan langkah-langkah proses teknologi.
  • Tugas khas minangka tugas sing solusi kanthi otomatis utawa sebagian, ora nyebabake kesulitan kanggo para pemain lan ora mbutuhake biaya tenaga kerja sing signifikan.
  • Proses produksi kasusun saka tahapan, tahapan dibagi dadi langkah-langkah sing ora bisa dipisahake, yaiku tugas khas kanthi skala lan ruang lingkup sing beda.
  • Saka tugas standar sing terisolasi, kita wis teka menyang rantai teknologi kompleks lan model multi-level proses produksi, sing bisa diterangake kanthi model IDEF0 fungsional utawa peta teknologi sing luwih gampang.
  • Peta teknologi minangka representasi tabel saka tahapan lan langkah-langkah proses produksi. Sing paling penting: peta ngidini sampeyan ndeleng kabeh proses kanthi lengkap, kanthi potongan gedhe kanthi kemungkinan rinci.
  • Adhedhasar peta teknologi, sampeyan bisa netepake kabutuhan kanggo ngenalake tahapan ing produk tartamtu, nemtokake wilayah tanggung jawab, setuju kontrak ing input lan output tahapan, lan luwih akurat netepake kabutuhan sumber daya.

Ing artikel ing ngisor iki, kita bakal njlèntrèhaké kanthi luwih rinci apa piranti teknis sing digunakake kanggo ngetrapake tahapan teknologi tartamtu ing peta kita.

Penulis artikel:

Source: www.habr.com

Add a comment