.NET Caput in Linux, DevOps in equis

DevOps ut potuimus elaboravimus. VIII ex nobis fuerunt, et Vasya frigidissima in Fenestra fuit. Subito Vasya discessit, et mihi munus est deducendi novum consilium quod per Fenestrae evolutionem suppletum est. Cum totam Fenestram in tabula evolutionis evolutionis proieci, intellexi condicionem esse doloris...

Hoc est quomodo incipit fabula Alexander Sinchinova on DevOpsConf. Cum princeps Fenestra artifex societatis reliquisset, Alexander mirabatur quid nunc faceret. Linux vertas sane! Alexander narrabit quomodo instituerit exemplum et partem Fenestrae evolutionis ad Linux creare curavit utens exemplo perfecti propositi pro 100 finem utentium.

.NET Caput in Linux, DevOps in equis

Quomodo facile et sine labore consilium RPM tradent utentes TFS, PUPUS, Linux.NET nucleum? Quomodo sustineas versionem incepti database, si turmae progressus audiunt verba Postgres et Volcanus primum, et notificata est perendie? Quomodo cum Docker integrare? Quomodo promovere .NET tincidunt deserere Fenestra et smoothies in favorem Puppet et Linux? Quomodo conflictationes ideologicae solvendae sunt, si neque vis, neque cupiditas, neque opes ad Fenestram in productione conservandam? De hoc, tum de Deploy Web, probatione CI, de exercitiis utendi TFS in inceptis existentibus, et, utique, de fractis fustibus et solutionibus operandis, in transcripto relationis Alexandri.


Ita, Vasya discessit, labor in me est, tincidunt impatienter furcis exspectant. Cum tandem intellexi Vasya reddi non posse, ad negotia descendi. In primis, aestimavi recipis Win VMs in nostra classe. Octoginta pro Fenestra non erat.

.NET Caput in Linux, DevOps in equis

Cum DevOps active elaboramus, intellexi aliquid mutandum esse in accessu ad novam applicationem tradendam. Una unica solutio fuit, si fieri potest, omnia ad Linux transferre. Google me adiuvit - tum .Net iam Linux delata est et intellexi hanc solutionem esse!

Cur .NET nucleus in conjunctione cum Linux?

Huius rei plures fuerunt rationes. Inter "pecuniam" et "non stipendium", plerique secundum me similem eligent. Licentia MSDB circiter $1 constat, classem machinis virtualis in Fenestra centum dollariis constat. Magna enim societas haec magna impensa est. Ille est cur Peculium - prima causa. Non maximae, sed significantium.

Fenestrae virtualis machinis plus opibus capiunt quam fratres suos Linux. sunt onerati. Data scala magna comitatu Linux elegimus.

Ratio simpliciter integratur in existentibus CI .. Nos progressivos DevOps consideramus, utimur Bamboo, Jenkins et GitLab CI, itaque maxime laboris nostri in Linux currit.

Ultima ratio est opportunus comitatus. Opus est impedimentum demittere ut noti "procuratores" - guys qui partem technicam intellegunt, servitium continuum obtineant et officia e linea secunda servent. Iam familiares erant cum Linux acervo, ideo multo facilius est ad intellegendum, sustentandum et ad novum productum conservandum quam ad augendas facultates ad eandem functionem programmatis in Fenestra suggestu intelligendam.

commodum

Primus - commodum novae solutionis pro developers. Non omnes parati erant ad mutandum, praesertim postquam verbum Linux dictum est. Tincidunt deliciarum Visual Studio, TFS cum autotests pro conventibus et venustatibus volunt. Quomodo traditio productionis occurrat, illis non interest. Ideo consuetum processum mutare decrevimus et omnia in Fenestra evolutionis immutata relinquere.

Novum project opus ci existentium integrate in. Iam ibi cancellos erant et omne opus faciendum attentis parametris configurationis systematis administrationis, signa traditionis acceptae et systemata vigilantia.

Otium subsidii et operandiut conditio pro limine minimi introitus omnium novorum participantium a diversis divisionibus ac subsidii genere.

Deadline - hesterno die.

Vincere Development Group

Quid in Fenestra turma laborat cum tum?

.NET Caput in Linux, DevOps in equis

Nunc confidenter possum dicere IdentityServer4 est frigidum liberum alternative ADFS cum similibus facultatibus, seu quid? Entity Framework Core - paradisus de elit, in quo scribendo SQL scripta molestare non debes, sed interrogationes in datorum in terminis OOP describe. Sed tunc, in discussione consilii actionis, inspexi hunc acervum quasi cuneiformem Sumerianum, solum PostgreSQL et Git agnoscens.

Illo tempore naviter fuimus utentes PUPUS ut configuratione, administratione ratio. In maxime inceptis nostris usi sumus C. GitLab, elastica,Libratum summus onus muneris utens HAProxy viverra omnia cum Zabbix, ligamenta grafana ΠΈ Prometheum, Here Jaegeratque haec omnia ferreis nebat HPESXi on VMware. Quisque id scit - classici generis.

.NET Caput in Linux, DevOps in equis

Intueamur et experiamur quid acciderit antequam has omnes interventus incepimus.

Quid accidit?

TFS ratio satis valida est quae non solum codicem ab elit ad ultimam machinae productionem liberat, sed etiam ad flexibilem integrationem variis officiis destinatam habet - ut CI in plano crucis provideat.

.NET Caput in Linux, DevOps in equis
Antea hae fenestrae solidae erant. TFS usus est pluribus agentibus aedificandis, quae multa incepta convenire solebant. Unumquodque agens 3-4 operarios habet ad opera parallela et processus optimize. Deinde, secundum consilia dimittere, TFS aedifica in Fenestra applicationis servo recenter coctus tradidit.

Quid nos assequi volumus?

Utimur TFS ad partum et progressionem, et applicationem in Linux servo applicationis currunt, et est quaedam species magica inter eas. Hoc Magia Box et ibi sal opere praecurre. Priusquam secernam, separabo, et pauca de applicatione dicam.

project

Applicatio praebet functionality ad tractandas chartas PROMUTUUS.

.NET Caput in Linux, DevOps in equis

Client

Duo genera utentium fuerunt. primus accessum per colligationem in utendo an SSL SHA-II libellum. U secundus accessum erat usus et clavem.

HAProxy

Inde petitio clientis ad HAProxy perrexit, quae sequentes difficultates solvit;

  • prima auctoritas;
  • SSL terminatio;
  • incedit HTTP petitiones;
  • precibus passim.

Cliens certificatorium per catenam verificatum est. Nos - imperium et hoc possumus praestare, cum ipsi testimonium dant clientibus.

Ad tertium attende, paulo post ad illud revertemur.

backend

Linux tergum facere instituerunt. Replicatio cum datorum mutuatur, necessariam privilegiorum catalogum onerat ac deinde, prout privilegiis usoris authentici habet, accessum praebet ad documenta oeconomica signanda et ad executionem mittenda vel relationem quandam generandam.

PECULIUM cum HAProxy

Praeter duos contextus quos quisque client navigavit, erat etiam contextus identitatis. IdentityServer4 Modo te permittit ut aperias, hoc est analogum liberum et potentem pro ADFS' - Active Directory Foederatio Services.

Petitio identitatis pluribus gradibus processit. Primus gradus - Lorem obtinuit in backendquae cum hoc servo communicavit et praesentiam clientis repressit. Si non inventa, petitio reddita est ad contextum ex quo erat, sed cum redirectio, et cum redirectio ad identitatem ibat.

Secundus gradus est ad auctoritatem paginam in IdentityServer, ubi client descripserunt, et quod diu expectatum signum apparuit in database IdentityServer.

Tertius gradus - ad clientem redirected retro contextui ex quo.

.NET Caput in Linux, DevOps in equis

IdentityServer4 pluma habet: redit responsio ad petitionem reditus per HTTP. Quantumvis contendimus cum servo instituendo, quantumvis documentis nos illustravimus, quotiescumque petitionem clientis initialem accepimus cum domicilio per HTTPS venientem, et IdentityServer eundem contextum reddidit, sed cum HTTP. Consternati sumus! Haec omnia per contextum identitatis HAProxy transtulimus, et in capitis capite HTTP protocollum ad HTTPS temperandum habuimus.

Quid est melius et ubi servabas?

Pecuniam liberam servavimus solutionem liberam permittentes ad coetum utentium, facultatum, cum IdentityServer4 nodi in segmento separato non ponemus, sed ea una cum backend identidem servo in qua applicationis tergum currit. .

Quomodo operari debet?

Ita, ut pollicitus sum β€” Magic Box. Iam intellegimus certos nos esse ad Linux permovendos. Eamus opera specifica quae solutiones requiruntur.

.NET Caput in Linux, DevOps in equis

PUPPA manifestat. Ad servitium et applicationem configurationis liberare et administrare, mixturae frigidae scribenda erant. Plumbum volumen diserte ostendit quam cito et efficaciter factum sit.

Partus modus. Vexillum RPM. Omnes sciunt in Linux ea carere non posse, sed consilium ipsum, post conventum, institutum fuit imaginum exsecutabilium DLL. Earum erant res admodum difficiles circiter CL. Sola solutio harmonica est binarii in RPM involucrum et applicationem ex eo explicandi.

Versione. Saepius emittere habuimus, et decernere debebamus quomodo sarcina nomen formaret. Haec quaestio est de gradu integrationis cum TFS. Habuimus procuratorem in Linux constructum. Cum TFS negotium mittit ad agenti tractatori - operario - aedificandi, etiam fasciculum variabilium emittit, qui in ambitu tracti processum finiunt. Hae variabiles ambitus continent nomen aedificatum, nomen versionis, aliasque variabiles. Plura de hac lege in sectione "Aedificationis RPM involucrum".

Occasus sursum TFS descendit ad erigendum Pipeline. Antea collegimus omnes fenestras inceptas in Fenestra agentium, nunc agentis Linux apparet - agens aedificatum, quod in coetu aedificandi coetus includi debet, quibusdam artificiis locupletatum, et quid genus inceptis in hoc agente aedificato aedificabitur. ac modice Pipeline.

IdentityServer. ADFS non est nostra via, imus pro Open Source.

per partes transeamus.

Magia Box

Constat ex quatuor partibus.

.NET Caput in Linux, DevOps in equis

Linux agente aedifica. Linux, quia eam aedificamus - logica est. Haec pars tribus gradibus fiebat.

  • Configurare operarios neque solum, quoniam opus erat, consilium exspectabatur.
  • Inaugurare .NET Caput 1.x *. Cur 1.x cum 2.0 iam in promptuario vexillum praesto est? Quia cum progressionem incepimus, versio stabilis erat 1.09, et consilium in eo facere placuit.
  • Git 2.x.

RPM-reconditarium. RPM fasciculis alicubi condiendis opus erat. Ponebatur nos repositorio eodem RPM corporato uti, quod omnibus Linux exercitibus praesto est. Id fecerunt. Reconditorium server configuratur web hamo quae recepta est RPM sarcina ex certo loco. Versio involucrum relatum est ad interretialem ab Aedifico agente.

GitLab. Attendite! GitLab hic non ab tincidunt, sed ab operationibus department ad applicationem versionum, involucrum versiones moderandas, monitor omnium machinorum Linux status, et recipe - omnia PUPUS manifestat.

PUPUS β€” quaestiones omnes controversias resolvit et conformationem quam vis e Gitlab tradit exacte tradit.

Incipimus dive. Quomodo DLL traditio ad RPM opus?

Delivery DDL ad RPM

Dicamus nos habere .NET progressionem petra stella. Visual Studio utitur et ramum emissio creat. Postea, Git eam imposuisti, et Git hic est TFS ens, id est, applicatio repositorium cum quo opera elit.

.NET Caput in Linux, DevOps in equis

Post quem TFS videt novam committere advenisse. Quod app? In TFS occasus titulus est indicans quantas facultates peculiaris agentis aedificationis habeat. In hoc casu videt nos .NET Core incepto construere et eligere agentem Linux ex stagno aedificatum.

Agens aedificate accipit fontes et downloads necessarias aut meritis colligati ex .NET repositorium, npm, etc. et, aedificato applicatione ipsa et fasciculo subsequente, sarcinam RPM ad repositorium RPM mittit.

Sed contra est quod sic fit. Negotiationes department fectum directe implicat in rollout propositi: mutat versiones fasciculorum in Hiera in reposito ubi schedula reponitur, post quem PUPUS triggers Yumnovam sarcinam e repositorio arcessit, et nova applicatione parata est.

.NET Caput in Linux, DevOps in equis

Omnia in verbis simplicia sunt, sed quid intus in ipso agente aedificato?

Packaging DLL RPM

Inceptis fontibus recepta et negotium aedificandum ex TFS. Aedificate agente incipit aedificare consilium a fontibus. Convenerunt consilii est available ut paro DLL filesquae in archivo zip fasciculi ad redigendum onus in tabella ratiocinari possunt.

ZIP archivum abiecisse ad RPM aedificare sarcina presul. Deinde scriptura initialis variabilium ambitum praebet, versionem aedificatam invenit, versionem projectam, viam ad directorium aedificandi, et RPM-aedificandum currit. Postquam constructum completum est, sarcina divulgata est locus repositioquae sita est in agente aedifica.

Deinde, ex agente aedificato servo in RPM repositorium JSON petitio mittitur significans nomen versionis et constructum. Webhook, de quo antea dixi, hanc ipsam sarcinam e promptuario locali in conditorio aedificato downloads et novum coetum ad institutionem praesto facit.

.NET Caput in Linux, DevOps in equis

Quorsum haec praecipua sarcina traditio schema ad RPM repositorium? Cur non possum statim sarcinam coactam ad repositorium mittere? Est enim haec conditio ad salutem praestandam. Hoc missionis facultatem limitat fasciculis alienigenarum fasciculis RPM fasciculis servienti omnibus Linux machinis patens.

Database versioning

In consultatione cum quadrigis evolutionis, guys MS SQL propius esse evenit, sed in plerisque non-Fenestris inceptis PostgreSQL totis viribus iam utentes eramus. Cum iam omnia solvissemus omittere decrevimus, PostgreSQL hic quoque uti coepimus.

.NET Caput in Linux, DevOps in equis

In hac parte narrare vobis volo quomodo database versionesvimus et quomodo inter Volcanum et Entity Framework Core elegimus. Intueamur pros et cons.

ΠœΠΈΠ½ΡƒΡΡ‹

Flyway modo vadit una via, nos non possumus revolvere β€” Hoc incommodum est notabile. Eam cum Entity Framework Core comparare potes aliis modis - secundum elit commodo. Meministis nos hoc in fronte ponere, et iudicium principale non fuit aliquid mutare progressionem in Fenestra.

Nam Flyway us quaedam opus erat fasciaut guys non scribere SQL queries. Multo propinquiores sunt ad operandum in terminis OOP. Mandata scripsimus de obiectis datorum operandis, quaesitum SQL generatum et exsecutum est. Nova versio datorum parata est, probata - omnia denique, omnia opera.

Entity Framework Core habet minus - sub oneribus queries builds suboptimal SQLac deductio in datorum notabilis esse potest. Sed quia officium altum non habemus, onus centum RPS non computamus, haec pericula suscepimus et quaestionem nobis futuris delegavimus.

ΠŸΠ»ΡŽΡΡ‹

Entity Framework Core operatur ex arca et facile evolvereet Flyway Facile integrat in existentium CI. Sed id commodo tincidunt :)

Roll-sursum procedure

Pupula videt mutationem in versionis sarcinae venire, incluso illo qui migrationis reus est. Primum, sarcinam instituit, quae scripta migrationum et functionality datorum relatas continet. Post haec applicatio quae cum datorum operando restatitur. Sequitur institutionem reliquarum partium. Ordo quo fasciculi installantur et applicationes emittuntur, in PUPPE manifesto describitur.

Applicationes notitiarum sensitivarum utuntur, ut signa, tesserae datorum, haec omnia in config a domino Puppet trahunt, ubi in forma encrypta reponuntur.

TFS difficultates

Postquam decrevimus et cognovimus omnia vere operata esse nobis, decrevi intueri quid ageretur cum conventibus in TFS totum ad progressionem conciliandam in aliis inceptis - utrum cito vel non edificaremus/dimitteremus, et significantes problems cum celeritate inventa.

Una e praecipuorum inceptis 12-15 minuta conveniendi accipit - quod diu est, sic vivere non potes. Velox analysis ostendit gravem drawdown in I/O, et hoc erat in vestitu.

Post componentem componentem dividendo, tres focos identificavi. Primis - "Kaspersky antivirus"qui fontes lustrat in omnibus Fenestra Agentibus aedifica. Secundus - Fenestra Indexer. Is non debilis erat, et omnia in tempore reali indicata sunt in agentibus aedificandis in processu instituti.

Tertia - Npm install. Evenit ut in plurimis Pipelines hac missione exacta usi sumus. Cur malus est? In modum procedendi Npm curritur cum dependentia in arbore formatur lock.json sarcina,, ubi versiones fasciculorum quae in ambitu construendi adhibebuntur referuntur. In downside est quod Npm install trahit recentissimas versiones sarcinarum a Internet omni tempore, et hoc multum temporis in casu magni propositi.

Tincidunt interdum experimentum machinae localis ad probandum quomodo particularis pars vel totum consilium operatur. Aliquando evenit omnia localiter frigide, sed congregaverunt illud, evolvit illud, et nihil operatum est. Incipimus quid sit quaestio - yeah, variae versiones fasciculorum cum clientela.

arbitrium

  • Fontes in AV exceptiones.
  • Inactivare indexing.
  • dies npm ci*.

Commoda npm ci sumus Colligimus dependentiam aliquando arbor, et occasionem praebendi elit current list of packagescum qua possit localiter quantum voluerit. Hoc salvet tempus tincidunt qui codicem scribunt.

configuratione

Nunc pauca de reposito configuratione. Historice utimur Nexus ad repositoria administrandi, comprehendo Internum REPO. Hoc repositorium internum continet omnia membra quae ad usus interni utimur, exempli gratia, vigilantia auto-scripta.

.NET Caput in Linux, DevOps in equis

Nos quoque utimur NuGet, ut melius habet caching ad alios mancipes sarcinas comparati.

exitum

Postquam ipsum Agentes aedificandi optimized est, mediocris temporis spatium ab 12 minutis ad 7 reductum est.

Si omnes machinas numeramus quas pro Fenestra uti potuimus, sed ad Linux in hoc incepto mutavimus, circiter $ 10 servavimus, et id solum de licentiis, et plus si contenti rationem consideremus.

consilia

Pro altera parte, in optimizing codice partus laborare decrevimus.

Docker switching ad imaginem prebuild. TFS frigidum est cum multis plugins quae te permittunt in Pipeline integrare, inclusa congregatione felis fundatae, dicas imaginem Docker. Facere hoc felis in eodem uno lock.json sarcina,. Si compositio componentium usus est ut consilium aedificandi aliquo modo mutat, novam Docker imaginem aedificamus. Postea vasculum cum applicatione collectae explicari solebat. Hoc nunc non est, sed in Kubernetes architecturae parvae servitutis mutandae molimur, quae in societate nostra actuose crescit et solutiones productionis diu inservivit.

summary

Omnes hortor ut Fenestram proiciant, sed non est quod eam coquere nescio. Ratio est maxime Opensource solutiones Linux acervus. Esne bene nisi opibus. Opinor, futurum pertinet ad solutiones Open Source de Linux cum valida communitate.

Loquens profile Alexandri Sinchinov in GitHub.

DevOps Conf colloquium est de integratione evolutionis, probationis et operationis processuum professionalium a professionalibus. Quam ob rem id est quod Alexander loquebatur? perficiatur et operetur, et in die perficiendi duo prospere solvunt. On DevOps Conf at RIT++ Die 27 maii et 28 magis similes casus ab medicis erunt. Potes adhuc salire in ultima raeda et referre fama aut tolle tuum tempus ut libri tessera. Occurre nobis in Skolkovo!

Source: www.habr.com