ViennaNET: seata de leabharlannan airson an backend

Hello a h-uile duine!

Tha sinn nar coimhearsnachd de luchd-leasachaidh .NET aig Raiffeisenbank agus tha sinn airson bruidhinn mu sheata de leabharlannan bun-structair stèidhichte air .NET Core airson microservices a chruthachadh gu luath le aon eag-shiostam. Thug iad gu Open Source e!

ViennaNET: seata de leabharlannan airson an backend

Pàirt de dh'eachdraidh

Uair dhe na h-uairean bha pròiseact mòr monolithic againn, a thionndaidh mean air mhean gu bhith na sheata de mhicro-sheirbheisean (faodaidh tu leughadh mu fheartan a’ phròiseis seo ann an an artaigil seo). Anns a ’phròiseas, thachair sinn ris an duilgheadas nuair a bha sinn a’ cruthachadh meanbh-sheirbheisean ùra, gu tric bha againn ri grunn fhuasglaidhean bun-structair a chopaigeadh - leithid stèidheachadh logadh, obrachadh le stòr-dàta, WCF, msaa. Bha aon sgioba ag obair air a 'phròiseact seo, agus bha a h-uile duine mar-thà eòlach air dòigh-obrach stèidhichte airson a bhith ag obair le bun-structair. Mar sin, dhealaich sinn an còd cumanta ann an stòr air leth, phaisg sinn na leabharlannan cruinnichte ann am pasganan Nuget agus chuir sinn iad anns an stòr Nuget a-staigh againn.

Chaidh ùine seachad, mean air mhean chaidh am pròiseact a sgaradh, agus bha miann ann modalan ùra taobh teachdaiche a chruthachadh air frèam JS ùr-nodha agus an ruith sa bhrobhsair. Thòisich sinn a’ gluasad bho WCF/SOAP gu REST/HTTP, agus mar sin bha feum againn air leabharlannan ùra gus seirbheisean a chuir air bhog gu sgiobalta stèidhichte air AspNet WebApi. Chaidh a’ chiad dreach air an .Net Framework 4.5 a dhèanamh leis an ailtire againn cha mhòr air a ghlùinean san ùine shaor aige, ach a-mach às a’ bhogsa bha e comasach seirbheis a chuir air bhog le trì loidhnichean ann am Program.cs anns an robh cead (NTLM), logadh, Swagger, IoC/DI air stèidhichte air Castle Windsor, teachdaichean HTTP gnàthaichte a bhios a’ cur air adhart diofar chinn-cinn gus logadh deireadh-gu-deireadh a sholarachadh tron ​​phròiseact gu lèir. Agus dh’ fhaodadh an rud gu lèir seo a bhith air a rèiteachadh gu dìreach ann am faidhle rèiteachaidh na seirbheis.

Ach, cha robh a h-uile dad rèidh: bha an leabharlann seo gu math sùbailte a thaobh toirt a-steach modalan ùra. Mar eisimpleir, nam feumadh tu bathar meadhanach sònraichte a chuir ris, dh'fheumadh tu co-chruinneachadh ùr a chruthachadh agus sealbhachadh bhon chlas bunaiteach a tha a 'ruith na seirbheis, rud a bha gu math mì-ghoireasach. Gu fortanach, cha robh mòran chùisean mar sin ann.

An linn Docker agus Kubernetes

Tha an t-àm air tighinn nuair a ràinig tonn Docker agus Kubernetes sinn, air an do choimhead sinn gu dlùth: às deidh a h-uile càil, bha e na dheagh chothrom tòiseachadh air gluasad nas fhaide air adhart air na teicneòlasan, ann an .Net Core. Tha seo a’ ciallachadh gum feum sinn bun-structar ùr airson seirbheisean a ruith: tha cuid de leabharlannan air imrich bhon .Net Framework gu .Net Standard agus .Net Core gu pragtaigeach gun atharrachaidhean, cuid le leasachaidhean beaga. Ach gu ìre mhòr bha mi airson ath-obrachadh a dhèanamh air a’ ghnìomhachd co-cheangailte ri bhith a’ cur air bhog seirbheisean air AspNet Core.

B’ e a’ chiad rud a bheachdaich sinn air bun-bheachd a bheireadh air falbh prìomh ana-cothrom an tionndaidh roimhe: dìth sùbailteachd. Mar sin, chaidh co-dhùnadh an siostam leabharlainn gu lèir a dhèanamh cho neo-eisimeileach agus cho modular 'sa ghabhas agus na seirbheisean a tha riatanach airson comas-gnìomh mar neach-togail a chruinneachadh.

Is e am prìomh amas dòigh-obrach aonaichte a chruthachadh a mhìnicheas mar a nì thu eadar-obrachadh le stòran-dàta, busaichean agus seirbheisean eile. Dh’ fheuch sinn ri aonachadh a dhèanamh luath agus gun phian, agus dh’ fhaodadh luchd-leasachaidh fòcas a chuir air sgrìobhadh loidsig gnìomhachais seach bun-structar - tha e deiseil mu thràth. Bidh stòr coitcheann a’ cuideachadh le bhith ag adhartachadh eòlas eadar-obrachaidh taobh a-staigh sgiobaidhean: nuair a thathas a’ cleachdadh bun-structaran a-staigh glè choltach, tha e nas fhasa a dhol còmhla ri pròiseas leasachaidh sgioba eile agus eòlas iomlaid.

Agus carson a tha feum againn air Open Source?

Tha sinn airson inbheachd ar n-eòlais a nochdadh agus fios air ais de chàileachd àrd fhaighinn: bidh e comasach dha neach taobh a-muigh a’ bhanca rudeigin dhiubh fhèin a thoirt leat. Tha ùidh againn cuideachd ann an leasachadh cleachdaidhean airson a bhith ag obair le microservices agus DDD air .NET sa ghnìomhachas; is dòcha gum bi cuideigin airson pàirtean sònraichte den fhrèam a ghabhail thairis.

Gu fìrinneach, ViennaNET

A-nis leig dhuinn sùil nas mionaidiche. Tha an còd stòr slàn air a phostadh an seo.

ViennaNET.WebApi.*

Anns an t-seata seo de leabharlannan tha an “root” ViennaNET.WebApi, anns a bheil an clas togail airson seirbheis CompanyHostBuilder, agus seata de rèiteachaidhean ViennaNET.WebApi.Configurators.*, agus leigidh gach fear dhiubh leat cuid de ghnìomhachd a chuir ris agus a rèiteachadh. seirbhis. Am measg nan rèiteachaidhean gheibh thu ceanglaichean airson logadh, diagnosachd, seòrsachan dearbhaidh is ùghdarrais, swagger, msaa.

Tha luchd-togail seirbheis ro-shuidhichte aig ViennaNET.WebApi.Runners.* cuideachd. Leigidh na pacaidean sin leat gun a bhith nad chuimhne a h-uile uair a chruthaicheas tu seirbheis ùr a dh’ fheumas rèiteachaidhean a cheangal. Ach, chan eil iad a’ cuingealachadh gnìomhachd neach-togail seirbheis ann an dòigh sam bith.

ViennaNET.Mediator.*

Leabharlannan a leigeas leat bus eadar-mheadhanach a-staigh a chruthachadh airson òrdughan agus iarrtasan taobh a-staigh seirbheis. Leigidh an dòigh-obrach seo leat an àireamh de in-stealladh DI a lughdachadh gu aon, mar eisimpleir, ann an luchd-riaghlaidh. Air sgàth seo, faodaidh tu diofar sgeadachaidhean a chuir ri iarrtasan, a bhios ag aonachadh an giullachd agus a ’lughdachadh na tha de chòd.

ViennaNET.Validation

Co-chruinneachadh anns a bheil seata de chlasaichean airson riaghailtean dearbhaidh agus sreathan a chruthachadh bhuapa. Tha e gu math goireasach airson dearbhadh fearainn a chuir an gnìomh, oir leigidh e leat cunntas a thoirt air gach suidheachadh gnìomhachais ann an cruth riaghailt sìmplidh agus fa leth.

ViennaNET.Redis

Leabharlann le pasgain airson obair fhreagarrach le Redis mar tasgadan cuimhneachaidh.

ViennaNET.Sònrachaidhean

Co-chruinneachadh anns a bheil clasaichean a bhios a’ buileachadh pàtran an t-Sònrachaidh.

Chan e seo a h-uile rud a tha nar seata. Chì thu an còrr ann an stòr GitHub. Tha sinn an dùil na leabharlannan againn a leigeil ma sgaoil airson a bhith ag obair le stòran-dàta gu OpenSource a dh’ aithghearr.

Tapadh leibh airson ur n-aire, tha sinn a 'coimhead air adhart ri ur beachdan agus tarraing iarrtasan.

Source: www.habr.com

Cuir beachd ann