Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Gambar: Unsplash

Halo sadayana! Kami insinyur automation ti perusahaan Téhnologi Positip sarta kami ngarojong ngembangkeun produk parusahaan: urang ngarojong sakabéh pipa assembly ti commit of a garis kode ku pamekar jeung publikasi produk rengse tur lisensi dina server update. Sacara informal, urang disebut insinyur DevOps. Dina artikel ieu, urang hoyong ngobrol ngeunaan tahapan téhnologis tina prosés produksi software, kumaha urang ningali aranjeunna sarta kumaha urang mengklasifikasikan aranjeunna.

Tina bahan anjeun bakal diajar ngeunaan pajeulitna koordinasi pangembangan multi-produk, ngeunaan naon peta téknologi sareng kumaha éta ngabantosan pikeun nyegerkeun sareng réplikasi solusi, naon tahapan utama sareng léngkah-léngkah prosés pangwangunan, kumaha daérah tanggung jawab. antara DevOps sareng tim di perusahaan kami.

Ngeunaan Chaos sareng DevOps

Sakeudeung, konsép DevOps kalebet alat sareng jasa pangembangan, ogé metodologi sareng prakték pangsaéna pikeun dianggo. Hayu urang tunggal kaluar global tujuanna tina palaksanaan ide DevOps di perusahaan kami: ieu mangrupikeun pangurangan anu konsisten dina biaya produksi sareng pangropéa produk dina istilah kuantitatif (jam-jam atanapi jam mesin, CPU, RAM, Disk, jsb.). Cara panggampangna tur paling atra pikeun ngurangan biaya sakabéh pangwangunan di tingkat sakabéh pausahaan ngaminimalkeun biaya ngajalankeun tugas serial has dina sagala tahapan produksi. Tapi naon tahapan ieu, kumaha cara misahkeunana tina prosés umum, léngkah naon anu aranjeunna diwangun?

Nalika perusahaan ngembangkeun hiji produk, sadayana langkung atanapi kirang jelas: biasana aya peta jalan umum sareng skéma pamekaran. Tapi naon anu kudu dilakukeun nalika garis produk ngalegaan sareng langkung seueur produk? Dina glance kahiji, maranéhna boga prosés sarupa jeung garis assembly, sarta "manggihan X Bedana" kaulinan dina log jeung Aksara dimimitian. Tapi kumaha upami parantos aya 5+ proyék dina pamekaran aktip sareng ngadukung sababaraha versi anu dikembangkeun salami sababaraha taun diperyogikeun? Naha urang hoyong nganggo deui jumlah maksimal solusi dina pipa produk atanapi urang siap nyéépkeun artos pikeun pangwangunan anu unik pikeun masing-masing?

Kumaha carana manggihan kasaimbangan antara uniqueness jeung solusi serial?

Patarosan ieu mimiti timbul sateuacan urang beuki sering saprak 2015. Jumlah produk naek, sareng urang nyobian ngalegaan departemen automation kami (DevOps), anu ngadukung jalur perakitan produk ieu, ka minimum. Dina waktu nu sarua, urang hayang ngayakeun réplikasi saloba mungkin solusi antara produk. Barina ogé, naha ngalakukeun hal anu sarua dina sapuluh produk dina cara béda?

Diréktur Pangwangunan: "Guys, urang tiasa kumaha bae evaluate naon DevOps lakukeun pikeun produk?"

urang: "Kami henteu terang, kami henteu naroskeun patarosan sapertos kitu, tapi indikator naon anu kedah dipertimbangkeun?"

Diréktur Pangwangunan: "Saha anu terang! Pikirkeun…”

Saperti dina éta pilem kawentar: "Abdi di hotél! .." - "Euh ... Dupi anjeun nunjukkeun kuring jalan?" Dina réfléksi, urang sumping ka kacindekan yén urang mimitina kudu mutuskeun dina kaayaan ahir produk; ieu jadi tujuan kahiji urang.

Janten, kumaha anjeun nganalisis belasan produk sareng tim anu lumayan ageung tina 10 dugi ka 200 urang sareng nangtoskeun métrik anu tiasa diukur nalika réplikasi solusi?

1: 0 pikeun Chaos, atanapi DevOps dina taktak

Urang mimitian ku usaha pikeun nerapkeun diagram IDEF0 sarta sagala rupa diagram prosés bisnis ti séri BPwin. Kabingungan dimimitian sanggeus kuadrat kalima tahap salajengna tina proyék salajengna, sarta kuadrat ieu pikeun tiap proyék bisa digambar dina buntut hiji python panjang dina 50+ léngkah. Kuring ngarasa hanjelu jeung hayang lolong di bulan - teu pas sacara umum.

tugas produksi has

Proses produksi modél mangrupikeun padamelan anu rumit sareng painstaking: anjeun kedah ngumpulkeun, ngolah sareng nganalisa seueur data tina sababaraha departemén sareng ranté produksi. Anjeun tiasa maca langkung seueur ngeunaan ieu dina tulisan "Modeling prosés produksi di perusahaan IT".

Nalika urang ngamimitian modeling prosés produksi urang, urang boga tujuan husus - nepikeun ka unggal pagawe kalibet dina ngembangkeun produk parusahaan urang, sarta manajer proyék:

  • kumaha produk sareng komponenana, mimitian ti komitmen garis kode, ngahontal palanggan dina bentuk pamasang sareng pembaruan,
  • sumber daya naon anu disayogikeun pikeun tiap tahapan produksi produk,
  • jasa naon anu kalibet dina unggal tahapan,
  • kumaha wewengkon tanggung jawab pikeun tiap tahapan diwatesan,
  • kontrak naon anu aya di lawang sareng kaluar unggal tahapan.

Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Ngaklik gambar bakal muka dina ukuran pinuh

Karya kami di perusahaan dibagi kana sababaraha daérah fungsional. Arah infrastruktur kalibet dina optimasi operasi sadaya "beusi" sumberdaya departemén, kitu ogé automation tina deployment mesin virtual jeung lingkunganana. Arah ngawaskeun nyadiakeun 24/7 kontrol kinerja jasa; kami ogé nyadiakeun monitoring salaku layanan pikeun pamekar. Arah workflow nyadiakeun tim kalawan parabot pikeun ngatur ngembangkeun sarta prosés nguji, analisa kaayaan kode, sarta meunang analytics on proyék. Tungtungna, arah webdev nyayogikeun publikasi sékrési dina server update GUS sareng FLUS, ogé lisénsi produk nganggo jasa LicenseLab. Pikeun ngadukung pipa produksi, kami nyetél sareng ngajaga seueur jasa pangrojong anu béda pikeun pamekar (anjeun tiasa ngadangukeun carita ngeunaan sababaraha di antarana dina patepang lami: Op! DevOps! 2016 и Op! DevOps! 2017). Urang ogé ngamekarkeun parabot automation internal, kaasup solusi open source.

Salila lima taun katukang, karya urang geus akumulasi loba tipe sarua jeung operasi rutin, sarta pamekar urang ti departemén séjén utamana asalna ti nu disebut. tugas has, leyuran nu pinuh atawa sawaréh otomatis, teu ngabalukarkeun kasusah pikeun performers sarta teu merlukeun jumlah signifikan gawé. Babarengan wewengkon ngarah, kami nganalisa tugas-tugas sapertos sareng tiasa ngaidentipikasi kategori padamelan individu, atanapi léngkah produksi, tahapan dibagi kana léngkah-léngkah anu teu bisa dipisahkeun, sareng sababaraha tahapan nambahan ranté prosés produksi.

Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Conto pangbasajanna ranté téknologi nyaéta tahapan perakitan, panyebaran sareng uji unggal produk urang dina perusahaan. Sabalikna, contona, tahap ngawangun diwangun ku sababaraha léngkah anu misah: ngaunduh sumber tina GitLab, nyiapkeun katergantungan sareng perpustakaan pihak ka-3, uji unit sareng analisis kode statik, ngalaksanakeun skrip ngawangun dina GitLab CI, nyebarkeun artefak dina gudang dina. Artifactory sareng generasi catetan pelepasan ngalangkungan alat ChangelogBuilder internal kami.

Anjeun tiasa maca ngeunaan tugas DevOps has dina tulisan kami anu sanés ngeunaan Habré: "Pangalaman pribadi: kumaha sistem Integrasi Kontinyu kami"Jeung"Otomatisasi prosés pamekaran: kumaha urang ngalaksanakeun ideu DevOps di Positive Technologies".

Loba ranté produksi has ngabentuk prosés manufaktur. Pendekatan standar pikeun ngajelaskeun prosés nyaéta ngagunakeun modél IDEF0 fungsional.

Conto modeling prosés manufaktur CI

Urang nengetan husus ka ngembangkeun proyék baku pikeun sistem integrasi kontinyu. Ieu ngamungkinkeun pikeun ngahontal ngahijikeun proyék, nyorot anu disebut ngaleupaskeun skéma ngawangun kalawan promosi.

Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Kieu kumaha jalanna. Kabéh proyék kasampak has: aranjeunna kaasup konfigurasi tina rakitan nu digolongkeun kana Repository snapshot di Artifactory, nu satutasna aranjeunna deployed tur diuji dina bangku test, lajeng diwanohkeun ka Repository release. Ladenan Artifactory mangrupikeun titik distribusi tunggal pikeun sadaya artefak ngawangun antara tim sareng jasa anu sanés.

Upami urang nyederhanakeun sareng ngageneralisasikeun skéma pelepasan urang, maka éta kalebet léngkah-léngkah ieu:

  • assembly produk cross-platform,
  • deployment pikeun nguji bangku,
  • ngajalankeun tés fungsional sareng anu sanés,
  • promosikeun wangunan anu diuji pikeun ngaleupaskeun repositori di Artifactory,
  • publikasi release diwangun dina server update,
  • pangiriman rakitan sareng apdet kana produksi,
  • ngaluncurkeun pamasangan sareng ngapdet produk.

Contona, anggap model téhnologis skéma release has ieu (hereinafter saukur Modél) dina bentuk model IDEF0 fungsi. Éta ngagambarkeun tahapan utama prosés CI kami. model IDEF0 ngagunakeun disebut notasi ICOM (Input-Control-Output-Mekanisme) pikeun ngajelaskeun naon sumberdaya anu dipaké dina unggal tahapan, dumasar kana naon aturan jeung sarat gawé anu dipigawé, naon kaluaran, sarta naon mékanisme, jasa atawa jalma ngalaksanakeun tahap nu tangtu.

Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Ngaklik gambar bakal muka dina ukuran pinuh

Sakumaha aturan, leuwih gampang pikeun nguraikeun sareng detil pedaran prosés dina modél fungsional. Tapi sakumaha jumlah elemen tumuwuh, janten beuki loba hésé ngartos hal di antarana. Tapi dina pangwangunan nyata aya ogé tahap bantu: monitoring, sertifikasi produk, automation prosés gawé, jeung sajabana. Kusabab masalah skala anu kami ngantunkeun pedaran ieu.

Lahirna harepan

Dina hiji buku, urang datang di sakuliah peta Soviét heubeul ngajéntrékeun prosés téhnologis (anu, ku jalan, masih dipaké kiwari di loba pausahaan-milik nagara jeung universitas). Antosan, antosan, sabab urang ogé boga workflow a!.. Aya tahapan, hasil, metrics, sarat, indikator, jeung saterusna jeung saterusna… Naha henteu coba nerapkeun flowsheets kana pipelines produk urang ogé? Aya rarasaan: “Ieu! Kami parantos mendakan benang anu leres, waktosna pikeun narik éta saé!

Dina tabel saderhana, urang mutuskeun pikeun ngarékam produk ku kolom, sareng tahapan téknologi sareng léngkah-léngkah pipa produk ku barisan. Milestones mangrupikeun hal anu ageung, sapertos léngkah ngawangun produk. Sareng léngkah-léngkah anu langkung alit sareng langkung rinci, sapertos léngkah-léngkah ngaunduh kodeu sumber ka server ngawangun atanapi léngkah nyusun kode.

Di persimpangan baris sareng kolom peta, urang nempatkeun status pikeun tahapan sareng produk anu khusus. Pikeun status, sakumpulan kaayaan ditetepkeun:

  1. Teu aya data - atanapi henteu pantes. Perlu nganalisa paménta pikeun tahap dina produk. Boh analisa anu parantos dilaksanakeun, tapi tahapan ayeuna henteu diperyogikeun atanapi henteu diyakinkeun sacara ékonomis.
  2. Ditunda - atanapi henteu relevan ayeuna. Tahap dina pipa diperyogikeun, tapi teu aya kakuatan pikeun palaksanaan taun ieu.
  3. Direncanakeun. Tahap ieu direncanakeun pikeun dilaksanakeun taun ieu.
  4. Dilaksanakeun. Tahap dina pipa dilaksanakeun dina volume anu diperyogikeun.

Ngeusian tabel dimimitian proyék ku proyék. Mimiti, tahapan sareng léngkah tina hiji proyék diklasifikasikeun sareng statusna dirékam. Teras aranjeunna nyandak proyék salajengna, ngalereskeun status di jerona sareng nambihan tahapan sareng léngkah anu leungit dina proyék sateuacana. Hasilna, urang ngagaduhan tahapan sareng léngkah-léngkah sadaya jalur produksi sareng statusna dina proyék khusus. Tétéla hal sarupa jeung matriks kompetensi pipa produk. Kami disebut matriks sapertos peta téknologi.

Kalayan bantosan peta téknologi, kami sacara logis koordinat sareng tim rencana kerja pikeun taun sareng target anu badé dihontal babarengan: tahapan mana anu urang tambahkeun kana proyék taun ieu, sareng anu mana anu urang tinggalkeun engké. Ogé, dina kursus damel, urang tiasa gaduh perbaikan dina tahapan anu parantos réngsé pikeun ngan ukur hiji produk. Teras urang dilegakeun peta urang sareng ngenalkeun perbaikan ieu salaku tahapan atanapi léngkah énggal, teras urang nganalisis unggal produk sareng milari kamungkinan réplikasi perbaikan éta.

Aranjeunna tiasa ngabantah ka urang: "Ieu sadayana, tangtosna, saé, ngan ku waktosna jumlah léngkah sareng tahapan bakal ageung pisan. Kumaha jadina?

Kami parantos ngenalkeun pedaran standar sareng cukup lengkep ngeunaan sarat pikeun tiap tahapan sareng léngkah, supados aranjeunna kahartos ku sadayana dina perusahaan dina cara anu sami. Kana waktu, sakumaha perbaikan diwanohkeun, hiji hambalan bisa diserep kana tahap atawa hambalan sejen, lajeng maranéhna bakal "runtuh". Dina waktos anu sami, sadaya sarat sareng nuansa téknologi cocog sareng sarat tina tahap generalisasi atanapi léngkah.

Kumaha meunteun pangaruh réplikasi solusi? Kami nganggo pendekatan anu saderhana pisan: urang ngaitkeun biaya modal awal pikeun palaksanaan tahapan anyar kana biaya produk umum taunan, teras dibagi ku sadayana nalika ngayakeun réplikasi.

Bagian tina pamekaran parantos ditingalikeun salaku tonggak sareng léngkah dina peta. Urang tiasa mangaruhan pangurangan biaya produk ngaliwatan ngenalkeun otomatisasi pikeun tahapan anu biasa. Sanggeus éta, anggap we parobahan dina ciri kualitatif, metrics kuantitatif jeung kauntungan narima tim (dina man-jam atawa mesin-jam tabungan).

Peta téhnologis tina prosés produksi

Upami urang nyandak sadaya tahapan sareng léngkah urang, encode aranjeunna sareng tag sareng dilegakeun kana hiji ranté, teras éta bakal janten panjang pisan sareng teu kaharti (ngan pisan "buntut python" anu urang bahas di awal tulisan) :

[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]

Ieu mangrupikeun tahapan ngawangun produk [Build], nyebarkeun aranjeunna pikeun nguji server [Deploy], nguji [Test], promosi ngawangun pikeun ngaleupaskeun repositori dumasar kana hasil uji [Promote], ngahasilkeun sareng nyebarkeun lisensi [Lisensi], penerbitan [ Nyebarkeun] dina server update GUS sarta pangiriman ka server update FLUS, instalasi tur ngamutahirkeun komponén produk dina infrastruktur customer urang ngagunakeun Manajemén Konfigurasi Produk [Pasang], kitu ogé kumpulan telemétri [Telemétri] ti produk dipasang.

Salian ti éta, tahapan anu misah tiasa dibédakeun: ngawaskeun kaayaan infrastruktur [InfMonitoring], versi kode sumber [SourceCodeControl], ngawangun persiapan lingkungan [Nyiapkeun], manajemén proyék [Workflow], nyayogikeun tim alat komunikasi [Komunikasi], sertifikasi produk [ Sertifikasi] sarta mastikeun swasembada prosés CI [CISelfSufficiency] (Contona, kamerdikaan majelis ti Internét). Puluhan léngkah dina prosés urang malah moal dianggap, sabab pisan husus.

Éta bakal langkung gampil ngartos sareng ningali sadaya prosés produksi upami dibere dina bentuk peta téhnologis; Ieu tabel dimana tahap produksi individu jeung hambalan decomposed tina Modél ditulis dina baris, sarta dina kolom pedaran naon anu dipigawé dina unggal tahapan atawa hambalan. Tekenan utama disimpen dina sumberdaya nu nyadiakeun unggal tahapan, sarta delimitasi wewengkon tanggung jawab.

Peta pikeun urang mangrupakeun jenis classifier. Ieu ngagambarkeun bagian téhnologis badag produksi produk. Hatur nuhun kana éta, janten langkung gampang pikeun tim automation kami pikeun berinteraksi sareng pamekar sareng ngarencanakeun babarengan palaksanaan tahapan automation, ogé ngartos naon biaya sareng sumber tenaga kerja (manusa sareng hardware) anu diperyogikeun pikeun ieu.

Di jero perusahaan kami, peta sacara otomatis dihasilkeun tina citakan jinja salaku file HTML biasa, teras diunggah ka server GitLab Pages. Potret layar sareng conto peta anu lengkep tiasa ditingali link.

Ngatur rusuh: Nempatkeun hal dina urutan kalayan bantuan peta téhnologis

Ngaklik gambar bakal muka dina ukuran pinuh

Pondokna, peta téhnologis mangrupakeun gambaran umum tina prosés produksi, nu ngagambarkeun jelas digolongkeun blok jeung fungsionalitas has.

Struktur peta jalan urang

Peta diwangun ku sababaraha bagian:

  1. Wewengkon judul - ieu mangrupikeun pedaran umum peta, konsép dasar diwanohkeun, sumber daya utama sareng hasil tina prosés produksi ditetepkeun.
  2. Dashboard - di dieu anjeun tiasa ngontrol tampilan data pikeun produk individu, kasimpulan tahapan anu dilaksanakeun sareng léngkah umum pikeun sadaya produk disayogikeun.
  3. Peta téhnologis - pedaran tabular tina prosés téhnologis. Dina peta:
    • kabéh tahapan, léngkah jeung kode maranéhanana dibikeun;
    • pedaran anu pondok tur lengkep ngeunaan tahapan dibere;
    • sumber input sareng jasa anu dianggo dina unggal tahapan dituduhkeun;
    • hasil unggal tahapan sareng léngkah anu misah dituduhkeun;
    • daérah tanggung jawab pikeun tiap tahapan sareng léngkah dituduhkeun;
    • sumberdaya teknis, kayaning HDD (SSD), RAM, vCPU, sarta man-jam diperlukeun pikeun ngarojong karya dina tahap ieu, duanana dina momen ayeuna - kanyataanana, sarta dina mangsa nu bakal datang - rencana a, geus ditangtukeun;
    • pikeun tiap produk, eta dituduhkeun mana hambalan téhnologis atawa léngkah pikeun eta geus dilaksanakeun, rencanana pikeun palaksanaan, teu relevan atawa teu dilaksanakeun.

Nyieun kaputusan dumasar kana peta téhnologis

Saatos nalungtik peta, anjeun tiasa nyandak sababaraha tindakan - gumantung kana peran karyawan di perusahaan (manajer pamekaran, manajer produk, pamekar atanapi panguji):

  • ngartos tahapan naon anu leungit dina produk atanapi proyék nyata, sareng meunteun kabutuhan palaksanaanna;
  • ngawates daérah tanggung jawab antara sababaraha departemén upami aranjeunna damel dina tahap anu béda;
  • satuju kana kontrak di lawang na kaluar tina tahapan;
  • ngahijikeun tahapan gawé anjeun kana prosés pangwangunan sakabéh;
  • leuwih akurat assess kabutuhan sumberdaya nu nyadiakeun unggal tahapan.

Nyimpulkeun sakabéh di luhur

routing nyaeta serbaguna, extensible sarta gampang pikeun ngajaga. Éta langkung gampang pikeun ngembangkeun sareng ngajaga déskripsi prosés dina bentuk ieu tibatan dina modél IDEF0 akademik anu ketat. Sajaba ti éta, déskripsi tabular leuwih basajan, leuwih akrab, jeung hadé terstruktur ti model fungsional.

Pikeun palaksanaan téknis léngkah, urang gaduh alat internal khusus CrossBuilder - alat lapisan antara sistem CI, jasa sareng infrastruktur. Pamekar henteu kedah motong sapédahna: dina sistem CI kami, cukup pikeun ngajalankeun salah sahiji skrip (nu disebut tugas) alat CrossBuilder, anu bakal ngaéksekusi éta leres, kalayan nganggap fitur infrastruktur urang. .

hasil

Tulisan tétéla rada panjang, tapi ieu téh bisa dilawan nalika ngajéntrékeun modeling prosés kompléks. Tungtungna, abdi hoyong ngalereskeun sakeudeung gagasan utama urang:

  • Tujuan pikeun nerapkeun ideu DevOps di perusahaan kami nyaéta pikeun ngirangan biaya produksi sareng pangropéa produk perusahaan sacara konsisten dina istilah kuantitatif (jam-man atanapi jam mesin, vCPU, RAM, Disk).
  • Cara pikeun ngirangan biaya pangwangunan sadayana nyaéta ngaminimalkeun biaya ngalaksanakeun tugas séri anu biasa: tahapan sareng léngkah prosés téknologi.
  • Tugas has nyaéta tugas anu solusina pinuh atanapi sawaréh otomatis, henteu ngabalukarkeun kasusah pikeun palaku sareng henteu ngabutuhkeun biaya tenaga kerja anu signifikan.
  • Prosés produksi diwangun ku tahapan, tahapan dibagi kana léngkah-léngkah anu teu bisa dipisahkeun, nyaéta pancén has tina skala sareng ruang lingkup anu béda.
  • Ti tugas has disparate kami geus datang ka ranté téhnologis kompléks jeung model multi-tingkat tina prosés produksi, nu bisa digambarkeun ku model IDEF0 fungsi atawa peta téhnologis basajan.
  • Peta téhnologis mangrupakeun representasi tabular tina tahapan jeung léngkah tina prosés produksi. Hal pangpentingna: peta ngidinan Anjeun pikeun nempo sakabeh proses dina entirety na, dina potongan badag kalayan kamungkinan detailing aranjeunna.
  • Dumasar kana peta téhnologis, kasebut nyaéta dimungkinkeun pikeun meunteun kabutuhan pikeun ngawanohkeun tahapan dina produk nu tangtu, delineate wewengkon tanggung jawab, satuju kana kontrak dina inputs na kaluaran tahapan, sarta leuwih akurat assess kabutuhan sumberdaya.

Dina tulisan di handap ieu, kami bakal ngajelaskeun langkung rinci alat téknis naon anu dianggo pikeun ngalaksanakeun tahapan téknologi anu tangtu dina peta urang.

Panulis artikel:

sumber: www.habr.com

Tambahkeun komentar