.NET Core fuq Linux, DevOps fuq iż-żiemel

Żviluppajna DevOps mill-aħjar li stajna. Konna 8 minna, u Vasya kien l-aktar cool fil-Windows. F'daqqa waħda Vasya telaq, u kelli l-kompitu li nniedi proġett ġdid li kien fornut mill-iżvilupp tal-Windows. Meta mort il-munzell kollu tal-iżvilupp tal-Windows fuq il-mejda, indunajt li s-sitwazzjoni kienet uġigħ...

Hekk tibda l-istorja Alexandra Sinchinova fuq DevOpsConf. Meta l-ispeċjalista ewlieni tal-Windows ħalla l-kumpanija, Alexander staqsa x'għandu jagħmel issa. Aqleb għal Linux, ovvjament! Alexander jgħidlek kif irnexxielu joħloq preċedent u jittrasferixxi parti mill-iżvilupp tal-Windows għal Linux billi juża l-eżempju ta 'proġett lest għal 100 utent finali.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Kif faċilment u mingħajr sforz twassal proġett lil RPM billi tuża TFS, Puppet, Linux .NET core? Kif tappoġġja l-verżjoni ta 'database ta' proġett jekk it-tim ta 'żvilupp jisma' l-kliem Postgres u Flyway għall-ewwel darba, u l-iskadenza hija wara għada? Kif tintegra ma' Docker? Kif timmotiva lill-iżviluppaturi .NET biex jabbandunaw Windows u smoothies favur Puppet u Linux? Kif issolvi l-kunflitti ideoloġiċi jekk la jkun hemm is-saħħa, la x-xewqa, u lanqas ir-riżorsi biex iżżomm il-Windows fil-produzzjoni? Dwar dan, kif ukoll dwar Web Deploy, ittestjar, CI, dwar il-prattiki tal-użu tat-TFS fi proġetti eżistenti, u, ovvjament, dwar krozzi miksura u soluzzjonijiet ta 'ħidma, fit-traskrizzjoni tar-rapport ta' Alexander.


Allura, Vasya telaq, il-kompitu huwa fuqi, l-iżviluppaturi qed jistennew bla paċenzja bil-pitchforks. Meta fl-aħħar irrealizzajt li Vasya ma setax jiġi rritornat, ħadt in-negozju. Biex nibda, ivvalutajt il-perċentwal ta 'Win VMs fil-flotta tagħna. Il-punteġġ ma kienx favur il-Windows.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Peress li qed niżviluppaw DevOps b'mod attiv, indunajt li jeħtieġ li tinbidel xi ħaġa fl-approċċ biex titwassal applikazzjoni ġdida. Kien hemm soluzzjoni waħda biss - jekk possibbli, ittrasferixxi kollox għal Linux. Google għenitni - dak iż-żmien .Net kien diġà ġie portat għal Linux, u indunajt li din kienet is-soluzzjoni!

Għaliex .NET qalba flimkien mal-Linux?

Kien hemm diversi raġunijiet għal dan. Bejn "tħallas flus" u "ma tħallasx", il-maġġoranza se tagħżel it-tieni - bħali. Liċenzja għal MSDB tiswa madwar $1; iż-żamma ta’ flotta ta’ magni virtwali Windows tiswa mijiet ta’ dollari. Għal kumpanija kbira din hija spiża kbira. Għalhekk tfaddil - l-ewwel raġuni. Mhux l-aktar importanti, iżda wieħed minn dawk sinifikanti.

Il-magni virtwali tal-Windows jieħdu aktar riżorsi minn ħuthom Linux - huma tqal. Minħabba l-iskala tal-kumpanija kbira, għażilna Linux.

Is-sistema hija sempliċement integrata fis-CI eżistenti. Aħna nqisu lilna nfusna DevOps progressivi, nużaw Bamboo, Jenkins u GitLab CI, għalhekk ħafna mix-xogħol tagħna jimxi fuq Linux.

L-aħħar raġuni hija akkumpanjament konvenjenti. Kellna nnaqqsu l-ostaklu għad-dħul għal "skorti"—il-guys li jifhmu l-parti teknika, jiżguraw servizz mhux interrott, u jżommu s-servizzi mit-tieni linja. Diġà kienu familjari mal-munzell tal-Linux, għalhekk huwa ħafna aktar faċli għalihom li jifhmu, jappoġġjaw u jżommu prodott ġdid milli jonfqu riżorsi addizzjonali biex jifhmu l-istess funzjonalità tas-softwer għall-pjattaforma tal-Windows.

Rekwiżiti

L-ewwel nett - konvenjenza tas-soluzzjoni l-ġdida għall-iżviluppaturi. Mhux kollha kienu lesti għall-bidla, speċjalment wara li l-kelma Linux kienet mitkellma. L-iżviluppaturi jridu Visual Studio favorit tagħhom, TFS b'awtotests għal assemblaġġi u smoothies. Kif isseħħ il-kunsinna għall-produzzjoni mhix importanti għalihom. Għalhekk, iddeċidejna li ma nbiddlux il-proċess tas-soltu u nħallu kollox mhux mibdul għall-iżvilupp tal-Windows.

Proġett ġdid meħtieġ jintegraw fis-CI eżistenti. Il-binarji kienu diġà hemm u x-xogħol kollu kellu jsir b'kont meħud tal-parametri tas-sistema ta 'ġestjoni tal-konfigurazzjoni, standards ta' konsenja aċċettati u sistemi ta 'monitoraġġ.

Faċilità ta 'appoġġ u tħaddim, bħala kundizzjoni għal-limitu minimu tad-dħul għall-parteċipanti ġodda kollha minn diviżjonijiet differenti u d-dipartiment ta 'appoġġ.

Skadenza - bieraħ.

Win Development Group

X'kien jaħdem it-tim tal-Windows dak iż-żmien?

.NET Core fuq Linux, DevOps fuq iż-żiemel

Issa nista' ngħid hekk b'fiduċja IdentityServer4 hija alternattiva ħielsa friska għal ADFS b'kapaċitajiet simili, jew xiex Entity Framework Core - ġenna għal żviluppatur, fejn m'għandekx għalfejn tinkwieta tikteb skripts SQL, iżda tiddeskrivi mistoqsijiet fid-database f'termini OOP. Imma mbagħad, waqt id-diskussjoni tal-pjan ta 'azzjoni, ħarist lejn dan il-munzell bħallikieku kien cuneiform Sumerjan, għaraf biss PostgreSQL u Git.

Dak iż-żmien konna nużaw b'mod attiv Pupazz bħala sistema ta 'ġestjoni tal-konfigurazzjoni. Fil-biċċa l-kbira tal-proġetti tagħna użajna GitLab CI, Elastic, servizzi bbilanċjati ta 'tagħbija għolja bl-użu HAProxy immonitorjat kollox ma Zabbix, ligamenti grafana и Prometheus, Jaeger, u dan kollu kien qed idawwar fuq biċċiet tal-ħadid HPESXi fuq VMware. Kulħadd jafha - klassika tal-ġeneru.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Ejja nħarsu u nippruvaw nifhmu x’ġara qabel bdejna dawn l-interventi kollha.

X'ġara

TFS hija sistema pjuttost qawwija li mhux biss tagħti kodiċi mill-iżviluppatur sal-magna tal-produzzjoni finali, iżda għandha wkoll sett għal integrazzjoni flessibbli ħafna ma 'diversi servizzi - biex tipprovdi CI f'livell ta' cross-platform.

.NET Core fuq Linux, DevOps fuq iż-żiemel
Qabel, dawn kienu twieqi solidi. TFS uża diversi aġenti tal-Bini, li ntużaw biex jiġbru ħafna proġetti. Kull aġent għandu 3-4 ħaddiema biex jipparallelizza l-kompiti u jottimizza l-proċess. Imbagħad, skont il-pjanijiet ta 'rilaxx, TFS wassal il-Bini moħmija friska lis-server tal-applikazzjoni tal-Windows.

X’ridna niksbu?

Aħna nużaw TFS għall-kunsinna u l-iżvilupp, u nħaddmu l-applikazzjoni fuq server tal-Applikazzjoni Linux, u hemm xi tip ta 'maġija bejniethom. Dan Kaxxa Magic u hemm il-melħ tax-xogħol quddiem. Qabel ma nneħħiha, nieħu pass fil-ġenb u ngħid ftit kliem dwar l-applikazzjoni.

Proġett

L-applikazzjoni tipprovdi funzjonalità għall-immaniġġjar ta 'kards imħallsa minn qabel.

.NET Core fuq Linux, DevOps fuq iż-żiemel

klijent

Kien hemm żewġ tipi ta 'utenti. Ewwel kisbu aċċess billi illoggja billi tuża ċertifikat SSL SHA-2. U it-tieni kien hemm aċċess bl-użu ta 'login u password.

HAProxy

Imbagħad it-talba tal-klijent marret għand HAProxy, li solviet il-problemi li ġejjin:

  • awtorizzazzjoni primarja;
  • Terminazzjoni SSL;
  • irfinar tat-talbiet HTTP;
  • talbiet għal xandir.

Iċ-ċertifikat tal-klijent ġie vverifikat tul il-katina. Aħna - awtorità u nistgħu naffordjaw dan, peress li aħna stess noħorġu ċertifikati lill-klijenti tas-servizz.

Oqgħod attent għat-tielet punt, se nerġgħu lura għalih ftit aktar tard.

Backend

Huma ppjanaw li jagħmlu l-backend fuq Linux. Il-backend jinteraġixxi mad-database, jgħabbi l-lista meħtieġa ta 'privileġġi u mbagħad, skond liema privileġġi għandu l-utent awtorizzat, jipprovdi aċċess biex jiffirma dokumenti finanzjarji u jibgħathom għall-eżekuzzjoni, jew jiġġenera xi tip ta' rapport.

Iffrankar b'HAProxy

Minbarra ż-żewġ kuntesti li kull klijent innaviga, kien hemm ukoll kuntest ta 'identità. IdentityServer4 biss jippermettilek tidħol, dan huwa analogu b'xejn u qawwi għal ADFS - Servizzi tal-Federazzjoni tad-Direttorju Attiv.

It-talba għall-identità ġiet ipproċessata f'diversi passi. L-ewwel pass - klijent daħal fis-backend, li kkomunika ma' dan is-server u ċċekkja l-preżenza ta' token għall-klijent. Jekk ma nstabitx, it-talba ġiet ritornata lura għall-kuntest li minnu tkun ġiet, iżda b'redirect, u bir-redirect marret għall-identità.

It-tieni pass - it-talba waslet għall-paġna ta' awtorizzazzjoni f'IdentityServer, fejn il-klijent irreġistra, u dak it-token tant mistenni deher fid-database IdentityServer.

It-tielet pass - il-klijent ġie ridirett lura għall-kuntest li minnu ġie.

.NET Core fuq Linux, DevOps fuq iż-żiemel

IdentityServer4 għandu karatteristika: jirritorna t-tweġiba għat-talba għar-ritorn permezz HTTP. Ma jimpurtax kemm tħabtu biex inwaqqfu s-server, irrispettivament minn kemm iddawwalna lilna nfusna bid-dokumentazzjoni, kull darba li rċevejna talba inizjali tal-klijent b'URL li wasal permezz ta 'HTTPS, u IdentityServer rritorna l-istess kuntest, iżda b'HTTP. Konna ixxukkjati! U ttrasferijna dan kollu permezz tal-kuntest tal-identità għal HAProxy, u fl-intestaturi kellna nimmodifikaw il-protokoll HTTP għal HTTPS.

X'inhu t-titjib u fejn iffrankajt?

Aħna ffrankajna l-flus billi użajna soluzzjoni b'xejn għall-awtorizzazzjoni ta 'grupp ta' utenti, riżorsi, peress li aħna ma poġġiex IdentityServer4 bħala node separat f'segment separat, iżda użajna flimkien mal-backend fuq l-istess server fejn jaħdem il-backend tal-applikazzjoni. .

Kif għandha taħdem

Allura, kif wiegħed - Magic Box. Aħna diġà nifhmu li aħna garantiti li nimxu lejn Linux. Ejja nifformulaw ħidmiet speċifiċi li kienu jeħtieġu soluzzjonijiet.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Manifesti pupazzi. Biex iwasslu u jimmaniġġjaw is-servizz u l-konfigurazzjoni tal-applikazzjoni, kellhom jinkitbu riċetti friski. Roll ta 'lapes juri b'mod elokwenti kemm sar malajr u b'mod effiċjenti.

Metodu ta 'konsenja. L-istandard huwa RPM. Kulħadd jifhem li fil-Linux ma tistax tagħmel mingħajrha, iżda l-proġett innifsu, wara l-assemblaġġ, kien sett ta 'fajls DLL eżekutibbli. Kien hemm madwar 150 minnhom, il-proġett kien pjuttost diffiċli. L-unika soluzzjoni armonjuża hija li tippakkja dan il-binarju f'RPM u tuża l-applikazzjoni minnha.

Verżjoni. Kellna nirrilaxxaw ħafna drabi, u kellna niddeċiedu kif niffurmaw l-isem tal-pakkett. Din hija kwistjoni tal-livell ta 'integrazzjoni ma' TFS. Kellna aġent tal-bini fuq Linux. Meta TFS jibgħat kompitu lil handler - ħaddiem - lill-aġent Ibni, jgħaddih ukoll mazz ta 'varjabbli li jispiċċaw fl-ambjent tal-proċess tal-handler. Dawn il-varjabbli tal-ambjent fihom l-isem Ibni, l-isem tal-verżjoni, u varjabbli oħra. Aqra aktar dwar dan fit-taqsima "Bini pakkett RPM".

Twaqqif ta 'TFS niżlet biex twaqqaf Pipeline. Preċedentement, ġbarna l-proġetti kollha tal-Windows fuq l-aġenti tal-Windows, iżda issa jidher aġent tal-Linux - aġent tal-bini, li jeħtieġ li jiġi inkluż fil-grupp tal-bini, arrikkit b'xi artifacts, u qal liema tip ta 'proġetti se jinbnew fuq dan l-aġent tal-bini. , u b'xi mod timmodifika l-Pipeline.

IdentityServer. L-ADFS mhux il-mod tagħna, sejrin għall-Open Source.

Ejja ngħaddu mill-komponenti.

Kaxxa Magic

Tikkonsisti f'erba' partijiet.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Aġent tal-Linux Build. Linux, għaliex aħna nibnu għaliha - huwa loġiku. Din il-parti saret fi tliet passi.

  • Ikkonfigura l-ħaddiema u mhux waħdu, peress li kien mistenni xogħol imqassam fuq il-proġett.
  • Installa .NET Core 1.x. Għaliex 1.x meta 2.0 huwa diġà disponibbli fir-repożitorju standard? Minħabba li meta bdejna l-iżvilupp, il-verżjoni stabbli kienet 1.09, u ġie deċiż li l-proġett isir ibbażat fuqha.
  • Git 2.x.

RPM-repożitorju. Il-pakketti RPM kellhom jinħażnu x'imkien. Kien preżunt li se nużaw l-istess repożitorju RPM korporattiv li huwa disponibbli għall-hosts kollha tal-Linux. Hekk għamlu. Is-server tar-repożitorju huwa kkonfigurat ganċ tal-web li niżżel il-pakkett RPM meħtieġ mill-post speċifikat. Il-verżjoni tal-pakkett ġiet irrappurtata lill-webhook mill-aġent Ibni.

GitLab. Attenzjoni! GitLab hawnhekk jintuża mhux mill-iżviluppaturi, iżda mid-dipartiment tal-operazzjonijiet biex jikkontrolla l-verżjonijiet tal-applikazzjoni, il-verżjonijiet tal-pakketti, jimmonitorja l-istatus tal-magni Linux kollha, u jaħżen ir-riċetta - il-manifesti kollha Puppet.

Pupazz — issolvi l-kwistjonijiet kontroversjali kollha u tagħti eżattament il-konfigurazzjoni li rridu minn Gitlab.

Nibdew ngħaddu. Kif taħdem il-kunsinna DLL għal RPM?

Kunsinna DDL għal RPM

Ejja ngħidu li għandna rockstar tal-iżvilupp .NET. Juża Visual Studio u joħloq fergħa ta 'rilaxx. Wara dan, ittellah fuq Git, u Git hawnhekk hija entità TFS, jiġifieri, hija r-repożitorju tal-applikazzjoni li miegħu jaħdem l-iżviluppatur.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Wara t-TFS jara li wasal impenn ġdid. Liema app? Fis-settings tat-TFS hemm tikketta li tindika liema riżorsi għandu aġent tal-Bini partikolari. F'dan il-każ, jara li qed nibnu proġett .NET Core u jagħżel aġent Linux Build mill-pool.

L-aġent Ibni jirċievi s-sorsi u jniżżel dak meħtieġ dipendenzi mir-repożitorju .NET, npm, eċċ. u wara li tibni l-applikazzjoni nnifisha u l-ippakkjar sussegwenti, tibgħat il-pakkett RPM lir-repożitorju RPM.

Min-naħa l-oħra, jiġri dan li ġej. L-inġinier tad-dipartiment tal-operazzjonijiet huwa involut direttament fit-tnedija tal-proġett: jibdel il-verżjonijiet tal-pakketti fil Hiera fir-repożitorju fejn tinħażen ir-riċetta tal-applikazzjoni, u wara Puppet triggers yum, iġib il-pakkett il-ġdid mir-repożitorju, u l-verżjoni l-ġdida tal-applikazzjoni hija lesta biex tintuża.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Kollox huwa sempliċi fi kliem, imma x'jiġri ġewwa l-aġent Ibni nnifsu?

Ippakkjar DLL RPM

Irċieva sorsi tal-proġett u kompitu tal-bini minn TFS. Aġent tal-bini jibda jibni l-proġett innifsu minn sorsi. Il-proġett immuntat huwa disponibbli bħala sett Fajls DLL, li huma ppakkjati f'arkivju zip biex inaqqsu t-tagħbija fuq is-sistema tal-fajls.

L-arkivju ZIP jintrema għad-direttorju tal-bini tal-pakkett RPM. Sussegwentement, l-iskrittura Bash jinizjalizza l-varjabbli tal-ambjent, isib il-verżjoni Ibni, il-verżjoni tal-proġett, it-triq għad-direttorju tal-bini, u jmexxi RPM-build. Ladarba l-bini tkun kompluta, il-pakkett jiġi ppubblikat fuq repożitorju lokali, li tinsab fuq l-aġent Ibni.

Sussegwentement, mill-aġent Ibni għas-server fir-repożitorju RPM It-talba JSON tintbagħat li jindika l-isem tal-verżjoni u l-bini. Webhook, li tkellimt dwaru qabel, iniżżel dan il-pakkett stess mir-repożitorju lokali fuq l-aġent Ibni u jagħmel l-assemblaġġ il-ġdid disponibbli għall-installazzjoni.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Għaliex din l-iskema partikolari ta' kunsinna ta' pakketti lir-repożitorju tal-RPM? Għaliex ma nistax nibgħat immedjatament il-pakkett immuntat lir-repożitorju? Il-fatt hu li din hija kundizzjoni biex tiġi żgurata s-sigurtà. Dan ix-xenarju jillimita l-possibbiltà li nies mhux awtorizzati jtellgħu pakketti RPM għal server li huwa aċċessibbli għall-magni Linux kollha.

Verżjoni tad-database

F'konsultazzjoni mat-tim ta 'żvilupp, irriżulta li l-guys kienu eqreb lejn MS SQL, iżda fil-biċċa l-kbira tal-proġetti mhux Windows diġà konna nużaw PostgreSQL bil-qawwa kollha tagħhom. Peress li konna diġà ddeċidejna li nabbandunaw kollox imħallas, bdejna nużaw PostgreSQL hawn ukoll.

.NET Core fuq Linux, DevOps fuq iż-żiemel

F'din il-parti rrid ngħidlek kif verżjonijna d-database u kif għażilna bejn Flyway u Entity Framework Core. Ejja nħarsu lejn il-vantaġġi u l-iżvantaġġi tagħhom.

Cons

Flyway tmur triq waħda biss, aħna ma nistgħux irromblaw lura - dan huwa żvantaġġ sinifikanti. Tista' tqabbelha mal-Entity Framework Core b'modi oħra - f'termini ta' konvenjenza għall-iżviluppatur. Tiftakar li dan poġġejna fuq quddiem, u l-kriterju ewlieni kien li ma nbiddlu xejn għall-iżvilupp tal-Windows.

Għal Flyway magħna kien hemm bżonn xi tip ta’ tgeżwirbiex il-guys ma jiktbux Mistoqsijiet SQL. Huma ħafna eqreb li joperaw f'termini OOP. Aħna ktibna struzzjonijiet biex naħdmu ma 'oġġetti tad-database, ġġenerajna mistoqsija SQL u eżegwijnaha. Il-verżjoni l-ġdida tad-database hija lesta, ittestjata - kollox tajjeb, kollox jaħdem.

Entity Framework Core għandha minus - taħt tagħbijiet tqal dan jibni mistoqsijiet SQL subottimali, u l-ġbid fid-database jista 'jkun sinifikanti. Imma peress li m'għandniex servizz ta 'tagħbija għolja, aħna ma nikkalkulawx it-tagħbija f'mijiet ta' RPS, aċċettajna dawn ir-riskji u ddelegajna l-problema lilna futur.

Pros

Entity Framework Core jaħdem barra mill-kaxxa u huwa faċli biex tiżviluppa, u Flyway Tintegra faċilment fis-CI eżistenti. Imma nagħmluha konvenjenti għall-iżviluppaturi :)

Proċedura ta' roll-up

Puppet jara li ġejja bidla fil-verżjoni tal-pakkett, inkluż dik li hija responsabbli għall-migrazzjoni. L-ewwel, tinstalla pakkett li fih skripts tal-migrazzjoni u funzjonalità relatata mad-database. Wara dan, l-applikazzjoni li taħdem mad-database terġa' tinbeda. Wara tiġi l-installazzjoni tal-komponenti li fadal. L-ordni li fiha l-pakketti huma installati u l-applikazzjonijiet huma mnedija hija deskritta fil-manifest Puppet.

L-applikazzjonijiet jużaw data sensittiva, bħal tokens, passwords tad-database, dan kollu jinġibed fil-konfigurazzjoni minn Puppet master, fejn jinħażnu f'forma kriptata.

problemi TFS

Wara li ddeċidejna u rrealizzajna li kollox kien qed jaħdem għalina, iddeċidejt li nħares lejn dak li kien għaddej bl-assemblaġġi fit-TFS kollu kemm hu għad-dipartiment tal-iżvilupp Win fuq proġetti oħra - kemm jekk konna qed nibnu/nirrilaxxaw malajr jew le, u skoprew problemi sinifikanti bil-veloċità.

Wieħed mill-proġetti ewlenin jieħu 12-15-il minuta biex jinġabar - dak huwa żmien twil, ma tistax tgħix hekk. Analiżi mgħaġġla wriet drawdown terribbli fl-I/O, u dan kien fuq arrays.

Wara li analizzatha komponent b'komponent, identifikajt tliet fokus. L-ewwel - "Kaspersky antivirus", li tiskennja s-sorsi fuq l-aġenti kollha tal-Windows Build. It-tieni - twieqi Indiċier. Ma kienx diżattivat, u kollox kien indiċjat f'ħin reali fuq l-aġenti Ibni matul il-proċess ta 'skjerament.

It-tielet - Installa Npm. Irriżulta li fil-biċċa l-kbira tal-Pipelines użajna dan ix-xenarju eżatt. Għaliex hu ħażin? Il-proċedura ta 'installazzjoni Npm titħaddem meta s-siġra tad-dipendenza tiġi ffurmata package-lock.json, fejn jiġu rreġistrati l-verżjonijiet tal-pakketti li se jintużaw biex jinbena l-proġett. L-iżvantaġġ huwa li Npm install jiġbed l-aħħar verżjonijiet ta 'pakketti mill-Internet kull darba, u dan jieħu ħafna ħin fil-każ ta' proġett kbir.

L-iżviluppaturi kultant jesperimentaw fuq magna lokali biex jittestjaw kif taħdem parti partikolari jew proġett kollu. Xi drabi rriżulta li kollox kien frisk lokalment, iżda assemblawh, ħarġu, u xejn ma ħadem. Nibdew insemmu x'inhi l-problema - iva, verżjonijiet differenti ta 'pakketti b'dipendenzi.

deċiżjoni

  • Sorsi f'eċċezzjonijiet AV.
  • Iddiżattiva l-indiċjar.
  • Mur fuq npm ci.

Il-vantaġġi ta 'npm ci huma li aħna Niġbru s-siġra tad-dipendenza darba, u jkollna l-opportunità li nipprovdu lill-iżviluppatur lista attwali ta' pakketti, li biha jista’ jesperimenta lokalment kemm jħobb. Dan jiffranka l-ħin żviluppaturi li jiktbu kodiċi.

Konfigurazzjoni

Issa ftit dwar il-konfigurazzjoni tar-repożitorju. Storikament nużaw Nexus għall-ġestjoni ta' repożitorji, inkluż REPO Intern. Dan ir-repożitorju intern fih il-komponenti kollha li nużaw għal skopijiet interni, pereżempju, monitoraġġ awto-miktub.

.NET Core fuq Linux, DevOps fuq iż-żiemel

Aħna nużaw ukoll NuGet, peress li għandu caching aħjar meta mqabbel ma 'maniġers ta' pakketti oħra.

Riżultat

Wara li ottimizzajna l-Aġenti tal-Bini, il-ħin medju tal-bini tnaqqas minn 12-il minuta għal 7.

Jekk ngħoddu l-magni kollha li stajna użajna għall-Windows, iżda qalbu għal Linux f'dan il-proġett, iffrankajna madwar $ 10 000. U dan huwa biss fuq il-liċenzji, u aktar jekk nikkunsidraw il-kontenut.

Pjanijiet

Għat-trimestru li jmiss, ippjanajna li naħdmu fuq l-ottimizzazzjoni tal-kunsinna tal-kodiċi.

Taqleb għal immaġni ta' Docker li tinbena minn qabel. TFS hija ħaġa friska b'ħafna plugins li jippermettulek tintegra f'Pipeline, inkluż assemblaġġ ibbażat fuq il-grillu ta ', ngħidu aħna, immaġni Docker. Irridu nagħmlu dan il-grillu għall-istess wieħed package-lock.json. Jekk il-kompożizzjoni tal-komponenti użati biex jinbena l-proġett b'xi mod tinbidel, nibnu immaġni Docker ġdida. Aktar tard jintuża biex jintuża l-kontenitur bl-applikazzjoni immuntata. Dan mhux il-każ issa, iżda qed nippjanaw li naqilbu għal arkitettura ta 'mikroservizz f'Kubernetes, li qed tiżviluppa b'mod attiv fil-kumpanija tagħna u ilha sservi soluzzjonijiet ta' produzzjoni għal żmien twil.

Sommarju

Inħeġġeġ lil kulħadd biex jarmi l-Windows, imma mhux għax ma nafx insajjar. Ir-raġuni hija li l-biċċa l-kbira tas-soluzzjonijiet Opensource huma munzell Linux. inti ok tiffranka r-riżorsi. Fl-opinjoni tiegħi, il-futur jappartjeni għal soluzzjonijiet Open Source fuq Linux b'komunità qawwija.

Profil tal-ispeaker ta' Alexander Sinchinov fuq GitHub.

DevOps Conf hija konferenza dwar l-integrazzjoni ta 'proċessi ta' żvilupp, ittestjar u tħaddim għal professjonisti minn professjonisti. Huwa għalhekk li l-proġett li tkellem dwaru Alexander? implimentati u jaħdmu, u dakinhar tal-prestazzjoni kien hemm żewġ rilaxxi ta 'suċċess. Fuq DevOps Conf f'RIT++ Fis-27 u t-28 ta’ Mejju se jkun hemm saħansitra aktar każijiet simili minn prattikanti. Inti xorta tista 'tiżdied fl-aħħar ġarr u jissottometti rapport jew ħu l-ħin tiegħek tirriserva biljett. Iltaqa magħna fi Skolkovo!

Sors: www.habr.com

Żid kumment