Kadrs no filmas āMÅ«su slepenais Visums: Å Å«nas slÄptÄ dzÄ«veā
InvestÄ«ciju bizness ir viena no sarežģītÄkajÄm jomÄm banku pasaulÄ, jo ir ne tikai aizdevumi, aizÅÄmumi un noguldÄ«jumi, bet arÄ« vÄrtspapÄ«ri, valÅ«tas, preces, atvasinÄtie instrumenti un visa veida sarežģītÄ«ba strukturÄtu produktu veidÄ.
PÄdÄjÄ laikÄ novÄrojam iedzÄ«votÄju finanÅ”u pratÄ«bas pieaugumu. Arvien vairÄk cilvÄku iesaistÄs tirdzniecÄ«bÄ vÄrtspapÄ«ru tirgos. IndividuÄlie investÄ«ciju konti parÄdÄ«jÄs ne tik sen. Tie ļauj tirgoties vÄrtspapÄ«ru tirgos un saÅemt nodokļu atskaitÄ«jumus vai izvairÄ«ties no nodokļu maksÄÅ”anas. Un visi klienti, kas nÄk pie mums, vÄlas pÄrvaldÄ«t savu portfeli un redzÄt pÄrskatus reÄllaikÄ. TurklÄt visbiežÄk Å”is portfelis ir vairÄku produktu, tas ir, cilvÄki ir dažÄdu biznesa lÄ«niju klienti.
TurklÄt pieaug gan Krievijas, gan Ärvalstu regulatoru vajadzÄ«bas.
Lai apmierinÄtu paÅ”reizÄjÄs vajadzÄ«bas un liktu pamatus turpmÄkiem jauninÄjumiem, esam izstrÄdÄjuÅ”i investÄ«ciju biznesa kodolu, kura pamatÄ ir Tarantool.
Daži statistikas dati. Alfa-Bank ieguldÄ«jumu bizness sniedz brokeru pakalpojumus fiziskÄm un juridiskÄm personÄm, lai nodroÅ”inÄtu iespÄju tirgoties dažÄdos vÄrtspapÄ«ru tirgos, depozitÄrija pakalpojumus vÄrtspapÄ«ru glabÄÅ”anai, trasta pÄrvaldÄ«bas pakalpojumus privÄtpersonÄm ar privÄto un lielu kapitÄlu, vÄrtspapÄ«ru emisijas pakalpojumus citiem uzÅÄmumiem. . Alfa-Bank investÄ«ciju bizness ietver vairÄk nekÄ 3 tÅ«kstoÅ”us kotÄjumu sekundÄ, kas tiek lejupielÄdÄti no dažÄdÄm tirdzniecÄ«bas platformÄm. Darba dienas laikÄ tirgos bankas vai tÄs klientu vÄrdÄ tiek noslÄgti vairÄk nekÄ 300 tÅ«kstoÅ”i darÄ«jumu. ÄrÄjÄs un iekÅ”ÄjÄs platformÄs notiek lÄ«dz 5 tÅ«kstoÅ”iem pasÅ«tÄ«jumu izpildes sekundÄ. TajÄ paÅ”Ä laikÄ visi klienti, gan iekÅ”Äjie, gan ÄrÄjie, vÄlas redzÄt savas pozÄ«cijas reÄllaikÄ.
AizvÄsture
Kaut kur no 2000. gadu sÄkuma mÅ«su investÄ«ciju biznesa jomas attÄ«stÄ«jÄs patstÄvÄ«gi: biržas tirdzniecÄ«ba, brokeru pakalpojumi, valÅ«tu tirdzniecÄ«ba, Ärpusbiržas vÄrtspapÄ«ru un dažÄdu atvasinÄto instrumentu tirdzniecÄ«ba. RezultÄtÄ esam iekļuvuÅ”i funkcionÄlo aku slazdÄ. Kas tas ir? Katrai uzÅÄmÄjdarbÄ«bas nozarei ir savas sistÄmas, kas dublÄ viena otras funkcijas. Katrai sistÄmai ir savs datu modelis, lai gan tÄs darbojas ar tiem paÅ”iem jÄdzieniem: darÄ«jumi, instrumenti, darÄ«juma partneri, kotÄcijas utt. Un, katrai sistÄmai attÄ«stoties neatkarÄ«gi, radÄs daudzveidÄ«gs tehnoloÄ£iju zoodÄrzs.
TurklÄt sistÄmu kodu bÄze jau ir diezgan novecojusi, jo daži produkti raduÅ”ies 1990. gadu vidÅ«. Un dažÄs jomÄs tas palÄninÄja izstrÄdes procesu, un radÄs veiktspÄjas problÄmas.
PrasÄ«bas jaunam risinÄjumam
UzÅÄmumi ir sapratuÅ”i, ka tehnoloÄ£iskÄ pÄrveide ir vitÄli svarÄ«ga turpmÄkai attÄ«stÄ«bai. Mums tika doti uzdevumi:
- Apkopojiet visus biznesa datus vienÄ, ÄtrÄ krÄtuvÄ un vienÄ datu modelÄ«.
- MÄs nedrÄ«kstam zaudÄt vai mainÄ«t Å”o informÄciju.
- Ir nepiecieÅ”ams veikt datu versijas, jo jebkurÄ brÄ«dÄ« regulators var pieprasÄ«t statistiku par iepriekÅ”Äjiem gadiem.
- Mums ir ne tikai jÄienes jaunas, modernas DBVS, bet arÄ« jÄrada platforma biznesa problÄmu risinÄÅ”anai.
TurklÄt mÅ«su arhitekti izvirza savus nosacÄ«jumus:
- Jaunajam risinÄjumam jÄbÅ«t uzÅÄmuma klases, tas ir, tas jau ir jÄpÄrbauda dažos lielos uzÅÄmumos.
- RisinÄjuma darbÄ«bas režīmam jÄbÅ«t kritiskam. Tas nozÄ«mÄ, ka mums vienlaikus jÄatrodas vairÄkos datu centros un mierÄ«gi jÄpÄrdzÄ«vo viena datu centra darbÄ«bas pÄrtraukums.
- SistÄmai jÄbÅ«t horizontÄli mÄrogojamai. Fakts ir tÄds, ka visas mÅ«su paÅ”reizÄjÄs sistÄmas ir tikai vertikÄli mÄrogojamas, un mÄs jau sasniedzam griestus zemÄ aparatÅ«ras jaudas pieauguma dÄļ. TÄpÄc ir pienÄcis brÄ«dis, kad mums ir nepiecieÅ”ama horizontÄli mÄrogojama sistÄma, lai izdzÄ«votu.
- Cita starpÄ mums teica, ka risinÄjumam jÄbÅ«t lÄtam.
GÄjÄm standarta marÅ”rutu: noformulÄjÄm prasÄ«bas un sazinÄjÄmies ar iepirkumu nodaļu. No turienes mÄs saÅÄmÄm sarakstu ar uzÅÄmumiem, kas kopumÄ ir gatavi to darÄ«t mÅ«su vietÄ. MÄs visiem pastÄstÄ«jÄm par problÄmu, un no seÅ”iem saÅÄmÄm risinÄjumu novÄrtÄjumu.
BankÄ mÄs nevienam nerunÄjam, mums patÄ«k visu pÄrbaudÄ«t paÅ”iem. TÄpÄc mÅ«su konkursa obligÄts nosacÄ«jums bija izturÄt slodzes testus. MÄs formulÄjÄm slodzes testa uzdevumus, un trÄ«s no seÅ”iem uzÅÄmumiem jau ir piekrituÅ”i par saviem lÄ«dzekļiem ieviest prototipu risinÄjumu, kas balstÄ«ts uz atmiÅas tehnoloÄ£ijÄm, lai to pÄrbaudÄ«tu.
Es jums nestÄstÄ«Å”u, kÄ mÄs visu pÄrbaudÄ«jÄm un cik ilgi tas prasÄ«ja, es tikai rezumÄÅ”u: vislabÄko sniegumu slodzes testos parÄdÄ«ja Mail.ru grupas izstrÄdes komandas prototipa risinÄjums, kas balstÄ«ts uz Tarantool. MÄs parakstÄ«jÄm lÄ«gumu un sÄkÄm attÄ«stÄ«bu. No Mail.ru grupas bija Äetri cilvÄki, bet no Alfa-Bank bija trÄ«s izstrÄdÄtÄji, trÄ«s sistÄmu analÄ«tiÄ·i, risinÄjumu arhitekts, produkta Ä«paÅ”nieks un Scrum meistars.
TÄlÄk es jums pastÄstÄ«Å”u par to, kÄ mÅ«su sistÄma attÄ«stÄ«jÄs, kÄ tÄ attÄ«stÄ«jÄs, ko mÄs darÄ«jÄm un kÄpÄc tieÅ”i tÄ.
Attīstība
Pirmais jautÄjums, ko sev uzdevÄm, bija par to, kÄ iegÅ«t datus no mÅ«su paÅ”reizÄjÄm sistÄmÄm. MÄs nolÄmÄm, ka HTTP mums ir diezgan piemÄrots, jo visas paÅ”reizÄjÄs sistÄmas sazinÄs savÄ starpÄ, sÅ«tot XML vai JSON pa HTTP.
MÄs izmantojam Tarantool iebÅ«vÄto HTTP serveri, jo mums nav jÄpÄrtrauc SSL sesijas, un tÄ veiktspÄja mums ir pietiekama.
KÄ jau teicu, visas mÅ«su sistÄmas dzÄ«vo dažÄdos datu modeļos, un ievadÄ mums objekts ir jÄnovieto modelÄ«, kuru mÄs paÅ”i aprakstÄm. Bija vajadzÄ«ga valoda, kas ļÄva pÄrveidot datus. MÄs izvÄlÄjÄmies imperatÄ«vu Lua. Visu datu konvertÄÅ”anas kodu mÄs darbinÄm smilÅ”kastÄ ā tÄ ir droÅ”a vieta, aiz kuras darbojas kods netiek. Lai to izdarÄ«tu, mÄs vienkÄrÅ”i ielÄdÄjam nepiecieÅ”amo kodu, izveidojot vidi ar funkcijÄm, kas neko nevar bloÄ·Ät vai nomest.
PÄc konvertÄÅ”anas ir jÄpÄrbauda, āāvai dati atbilst modelim, kuru veidojam. MÄs ilgi spriedÄm, kÄdam jÄbÅ«t modelim un kÄdÄ valodÄ to aprakstÄ«t. MÄs izvÄlÄjÄmies Apache Avro, jo valoda ir vienkÄrÅ”a un to atbalsta Tarantool. Modeļa un pielÄgotÄ koda jaunÄs versijas var tikt nodotas ekspluatÄcijÄ vairÄkas reizes dienÄ, pat ar slodzi vai bez tÄs, jebkurÄ diennakts laikÄ un ļoti Ätri pielÄgoties izmaiÅÄm.
PÄc pÄrbaudes dati ir jÄsaglabÄ. MÄs to darÄm, izmantojot vshard (mums ir Ä£eogrÄfiski izkliedÄtas shardu kopijas).
TurklÄt specifika ir tÄda, ka lielÄkajai daļai sistÄmu, kas mums sÅ«ta datus, ir vienalga, vai mÄs tos saÅÄmÄm vai nesaÅÄmÄm. TÄpÄc jau no paÅ”a sÄkuma ieviesÄm remonta rindu. Kas tas ir? Ja kÄda iemesla dÄļ objektam netiek veikta datu transformÄcija vai pÄrbaude, mÄs joprojÄm apstiprinÄm saÅemÅ”anu, bet vienlaikus saglabÄjam objektu remonta rindÄ. Tas ir konsekvents un atrodas galvenajÄ biznesa datu noliktavÄ. MÄs nekavÄjoties uzrakstÄ«jÄm tam administratora saskarni, dažÄdus rÄdÄ«tÄjus un brÄ«dinÄjumus. TÄ rezultÄtÄ mÄs nezaudÄjam datus. Pat ja kaut kas ir mainÄ«jies avotÄ, ja ir mainÄ«jies datu modelis, mÄs to nekavÄjoties atklÄsim un varam pielÄgoties.
Tagad jums jÄiemÄcÄs izgÅ«t saglabÄtos datus. MÄs rÅ«pÄ«gi analizÄjÄm savas sistÄmas un redzÄjÄm, ka klasiskajÄ Java un Oracle kaukÄ noteikti ir sava veida ORM, kas pÄrvÄrÅ” datus no relÄcijas uz objektu. TÄtad, kÄpÄc gan uzreiz nedot objektus sistÄmÄm grafika veidÄ? TÄpÄc mÄs ar prieku pieÅÄmÄm GraphQL, kas apmierinÄja visas mÅ«su vajadzÄ«bas. Tas ļauj saÅemt datus grafiku veidÄ un izvilkt tikai to, kas jums Å”obrÄ«d nepiecieÅ”ams. JÅ«s pat varat versijas API ar diezgan lielu elastÄ«bu.
GandrÄ«z uzreiz mÄs sapratÄm, ka ar mÅ«su iegÅ«tajiem datiem nepietiek. IzveidojÄm funkcijas, kuras var saistÄ«t ar modelÄ« esoÅ”ajiem objektiem ā bÅ«tÄ«bÄ aprÄÄ·inÄtos laukus. Tas ir, mÄs pievienojam laukam noteiktu funkciju, kas, piemÄram, aprÄÄ·ina vidÄjo piedÄvÄjuma cenu. Un ÄrÄjais patÄrÄtÄjs, kurÅ” pieprasa datus, pat nezina, ka tas ir aprÄÄ·inÄts lauks.
Ieviesta autentifikÄcijas sistÄma.
Tad mÄs pamanÄ«jÄm, ka mÅ«su lÄmumÄ izkristalizÄjÄs vairÄkas lomas. Loma ir sava veida funkciju apkopotÄjs. Parasti lomÄm ir dažÄdi aprÄ«kojuma lietoÅ”anas profili:
- T-Connect: apstrÄdÄ ienÄkoÅ”os savienojumus, CPU ierobežots, mazs atmiÅas patÄriÅÅ”, bezvalsts.
- IB-Core: pÄrveido datus, ko tas saÅem, izmantojot Tarantool protokolu, tas ir, tas darbojas ar tabulÄm. Tas arÄ« neuzglabÄ stÄvokli un ir mÄrogojams.
- UzglabÄÅ”ana: tikai saglabÄ datus, neizmanto nekÄdu loÄ£iku. Å Ä« loma ievieÅ” vienkÄrÅ”ÄkÄs saskarnes. MÄrogojams, pateicoties vshard.
Tas ir, izmantojot lomas, mÄs atdalÄ«jÄm dažÄdas klastera daļas viena no otras, kuras var mÄrogot neatkarÄ«gi vienu no otras.
TÄtad, esam izveidojuÅ”i asinhronu darÄ«jumu datu plÅ«smas ierakstu un remonta rindu ar administratora interfeisu. Ieraksts ir asinhrons no biznesa viedokļa: ja mums ir garantÄts, ka ierakstÄ«sim datus sev, vienalga kur, tad mÄs to apstiprinÄsim. Ja tas neapstiprinÄs, tad kaut kas nogÄja greizi un dati ir jÄnosÅ«ta. Å is ir asinhronais ieraksts.
TestÄÅ”ana
Jau paÅ”Ä projekta sÄkumÄ mÄs nolÄmÄm, ka mÄÄ£inÄsim ieviest testu vadÄ«tu attÄ«stÄ«bu. MÄs rakstÄm vienÄ«bu testus programmÄ Lua, izmantojot tarantool/tap ietvaru, un integrÄcijas testus programmÄ Python, izmantojot pytest ietvaru. TajÄ paÅ”Ä laikÄ integrÄcijas testu rakstÄ«Å”anÄ iesaistÄm gan izstrÄdÄtÄjus, gan analÄ«tiÄ·us.
KÄ mÄs izmantojam testu vadÄ«tu izstrÄdi?
Ja vÄlamies kÄdu jaunu funkciju, vispirms mÄÄ£inÄm tai uzrakstÄ«t testu. Kad atklÄjam kļūdu, vispirms noteikti uzrakstÄm testu un tikai pÄc tam to izlabojam. SÄkumÄ ir grÅ«ti Å”Ädi strÄdÄt, rodas neizpratne no darbinieku puses, pat sabotÄža: "Tagad Ätri izlabosim, darÄ«sim kaut ko jaunu un pÄc tam nosegsim ar testiem." Tikai Å”is āvÄlÄkā gandrÄ«z nekad nenÄk.
TÄpÄc vispirms jÄpiespiež sevi rakstÄ«t kontroldarbus un lÅ«gt to izdarÄ«t citiem. Ticiet man, testu vadÄ«ta attÄ«stÄ«ba sniedz priekÅ”rocÄ«bas pat Ä«stermiÅÄ. JÅ«s jutÄ«siet, ka jÅ«su dzÄ«ve ir kļuvusi vieglÄka. MÄs uzskatÄm, ka 99% koda tagad ir pÄrbaudÄ«ti. Å Ä·iet, ka tas ir daudz, taÄu mums nav nekÄdu problÄmu: testi tiek izpildÄ«ti katrÄ saistÄ«bÄ.
TomÄr visvairÄk mums patÄ«k slodzes pÄrbaude; mÄs to uzskatÄm par vissvarÄ«gÄko un veicam to regulÄri.
Es jums pastÄstÄ«Å”u nelielu stÄstu par to, kÄ mÄs veicÄm vienas no pirmajÄm versijÄm slodzes pÄrbaudes pirmo posmu. MÄs instalÄjÄm sistÄmu izstrÄdÄtÄja klÄpjdatorÄ, ieslÄdzÄm slodzi un saÅÄmÄm 4 tÅ«kstoÅ”us darÄ«jumu sekundÄ. Labs rezultÄts klÄpjdatoram. MÄs to uzstÄdÄ«jÄm uz Äetru serveru virtuÄlÄs slodzes stenda, kas ir vÄjÄks nekÄ ražoÅ”anÄ. Izvietots lÄ«dz minimumam. MÄs to palaižam, un rezultÄts ir sliktÄks nekÄ klÄpjdatorÄ vienÄ pavedienÄ. Å oka saturs.
Mums bija ļoti skumji. MÄs skatÄmies uz servera slodzi, bet izrÄdÄs, ka tie ir dÄ«kstÄvÄ.
MÄs piezvanÄm izstrÄdÄtÄjiem, un viÅi mums, cilvÄkiem, kas nÄk no Java pasaules, paskaidro, ka Tarantool ir viena pavediena. To var efektÄ«vi izmantot tikai viens procesora kodols zem slodzes. PÄc tam katrÄ serverÄ« izvietojÄm maksimÄlo iespÄjamo Tarantool gadÄ«jumu skaitu, ieslÄdzÄm slodzi un jau saÅÄmÄm 14,5 tÅ«kstoÅ”us darÄ«jumu sekundÄ.
Ä»aujiet man paskaidrot vÄlreiz. SakarÄ ar sadalÄ«jumu lomÄs, kas izmanto resursus atŔķirÄ«gi, mÅ«su lomas, kas ir atbildÄ«gas par savienojumu apstrÄdi un datu pÄrveidoÅ”anu, ielÄdÄja tikai procesoru un stingri proporcionÄli slodzei.
Å ajÄ gadÄ«jumÄ atmiÅa tika izmantota tikai ienÄkoÅ”o savienojumu un pagaidu objektu apstrÄdei.
Gluži pretÄji, krÄtuves serveros procesora slodze palielinÄjÄs, taÄu daudz lÄnÄk nekÄ serveros, kas apstrÄdÄ savienojumus.
Un atmiÅas patÄriÅÅ” pieauga tieÅ”i proporcionÄli ielÄdÄto datu apjomam.
Pakalpojumi
Lai izstrÄdÄtu mÅ«su jauno produktu kÄ lietojumprogrammu platformu, mÄs tajÄ izveidojÄm komponentu pakalpojumu un bibliotÄku izvietoÅ”anai.
Pakalpojumi nav tikai nelielas koda daļas, kas darbojas dažos laukos. TÄs var bÅ«t diezgan lielas un sarežģītas struktÅ«ras, kas ir daļa no klastera, pÄrbauda atsauces datus, izpilda biznesa loÄ£iku un sniedz atbildes. MÄs arÄ« eksportÄjam pakalpojumu shÄmu uz GraphQL, un patÄrÄtÄjs saÅem universÄlu piekļuves punktu datiem, ar introspekciju visÄ modelÄ«. Tas ir ļoti Ärti.
TÄ kÄ pakalpojumos ir daudz vairÄk funkciju, nolÄmÄm, ka ir jÄbÅ«t bibliotÄkÄm, kurÄs pÄrvietosim bieži lietoto kodu. Tos pievienojÄm droÅ”ai videi, iepriekÅ” pÄrbaudot, vai tas mums neko nesalauž. Un tagad mÄs varam pieŔķirt funkcijÄm papildu vides bibliotÄku veidÄ.
MÄs vÄlÄjÄmies, lai bÅ«tu platforma ne tikai glabÄÅ”anai, bet arÄ« skaitļoÅ”anai. Un tÄ kÄ mums jau bija daudz kopiju un shardu, mÄs ieviesÄm sava veida sadalÄ«to skaitļoÅ”anu un nosaucÄm to par kartes samazinÄÅ”anu, jo tas izrÄdÄ«jÄs lÄ«dzÄ«gs oriÄ£inÄlajam kartes samazinÄjumam.
VecÄs sistÄmas
Ne visas mÅ«su mantotÄs sistÄmas var mums piezvanÄ«t, izmantojot HTTP, un izmantot GraphQL, lai gan tÄs atbalsta protokolu. TÄpÄc mÄs izveidojÄm mehÄnismu, kas ļauj replicÄt datus Å”ajÄs sistÄmÄs.
Ja mums kaut kas mainÄs, krÄtuves lomÄ tiek aktivizÄti unikÄli aktivizÄtÄji, un ziÅojums ar izmaiÅÄm nonÄk apstrÄdes rindÄ. Tas tiek nosÅ«tÄ«ts uz ÄrÄju sistÄmu, izmantojot atseviŔķu replikatora lomu. Å Ä« loma neglabÄ stÄvokli.
Jauni uzlabojumi
KÄ jÅ«s atceraties, no biznesa viedokļa mÄs veicÄm asinhronu ierakstÄ«Å”anu. TaÄu tad saprata, ka ar to nepietiks, jo ir sistÄmu klase, kurÄm uzreiz jÄsaÅem atbilde par operÄcijas statusu. TÄpÄc mÄs paplaÅ”inÄjÄm savu GraphQL un pievienojÄm mutÄcijas. Tie organiski iekļaujas esoÅ”ajÄ darba ar datiem paradigmÄ. Mums tas ir viens punkts gan lasÄ«Å”anai, gan rakstÄ«Å”anai citai sistÄmu klasei.
SapratÄm arÄ«, ka ar pakalpojumiem vien mums nepietiks, jo ir diezgan smagas atskaites, kuras jÄveido reizi dienÄ, nedÄļÄ, mÄnesÄ«. Tas var aizÅemt ilgu laiku, un ziÅojumi var pat bloÄ·Ät Tarantool notikumu cilpu. TÄpÄc mÄs izveidojÄm atseviŔķas lomas: plÄnotÄjs un skrÄjÄjs. SkrÄjÄji neuzglabÄ stÄvokli. ViÅi veic smagus uzdevumus, kurus mÄs nevaram aprÄÄ·inÄt lidojuma laikÄ. Un plÄnotÄja loma uzrauga Å”o uzdevumu palaiÅ”anas grafiku, kas ir aprakstÄ«ts konfigurÄcijÄ. PaÅ”i uzdevumi tiek glabÄti tajÄ paÅ”Ä vietÄ, kur biznesa dati. Kad pienÄk Ä«stais laiks, plÄnotÄjs paÅem uzdevumu, iedod kÄdam skrÄjÄjam, kurÅ” to saskaita un saglabÄ rezultÄtu.
Ne visi uzdevumi ir jÄveic pÄc grafika. Daži ziÅojumi ir jÄizlasa pÄc pieprasÄ«juma. TiklÄ«dz Ŕī prasÄ«ba tiek izpildÄ«ta, smilÅ”u kastÄ tiek izveidots uzdevums un nosÅ«tÄ«ts skrÄjÄjam izpildei. PÄc kÄda laika lietotÄjs saÅem asinhronu atbildi, ka viss ir aprÄÄ·inÄts un atskaite ir gatava.
SÄkotnÄji mÄs pieturÄjÄmies pie paradigmas visu datu glabÄÅ”anas, to versijas un neizdzÄsÅ”anas. Bet dzÄ«vÄ ik pa laikam tomÄr nÄkas kaut ko izdzÄst, pÄrsvarÄ kÄdu jÄlu vai starpinformÄciju. Pamatojoties uz derÄ«guma termiÅa beigÄm, mÄs izveidojÄm mehÄnismu krÄtuves tÄ«rÄ«Å”anai no novecojuÅ”iem datiem.
TÄpat saprotam, ka agri vai vÄlu pienÄks situÄcija, kad atmiÅÄ nepietiks vietas datu glabÄÅ”anai, bet tomÄr dati ir jÄsaglabÄ. Å iem nolÅ«kiem mÄs drÄ«zumÄ izveidosim diska krÄtuvi.
SecinÄjums
MÄs sÄkÄm ar uzdevumu ielÄdÄt datus vienÄ modelÄ« un pavadÄ«jÄm trÄ«s mÄneÅ”us tÄ izstrÄdei. Mums bija seÅ”as datu piegÄdes sistÄmas. Viss pÄrveidoÅ”anas kods vienÄ modelÄ« ir aptuveni 30 tÅ«kstoÅ”i rindu Lua. Un lielÄkÄ daļa darba vÄl priekÅ”Ä. DažkÄrt pietrÅ«kst motivÄcijas no kaimiÅu kolektÄ«viem, un ir daudz apstÄkļu, kas darbu apgrÅ«tina. Ja kÄdreiz saskaraties ar lÄ«dzÄ«gu uzdevumu, reiziniet laiku, kas jums Ŕķiet normÄls tÄ izpildei, ar trÄ«s vai pat Äetriem.
Atcerieties arÄ«, ka esoÅ”Äs problÄmas biznesa procesos nevar atrisinÄt, izmantojot jaunu DBVS, pat ļoti produktÄ«vu. Ko es domÄju? UzsÄkot savu projektu, radÄ«jÄm klientiem iespaidu, ka tagad ienesÄ«sim jaunu Ätru datu bÄzi un dzÄ«vosim! Procesi ritÄs ÄtrÄk, viss bÅ«s kÄrtÄ«bÄ. PatiesÄ«bÄ tehnoloÄ£ijas neatrisina problÄmas, kas ir biznesa procesiem, jo āābiznesa procesi ir cilvÄki. Un jums ir jÄstrÄdÄ ar cilvÄkiem, nevis tehnoloÄ£ijÄm.
Testu vadÄ«ta izstrÄde agrÄ«nÄ stadijÄ var bÅ«t sÄpÄ«ga un laikietilpÄ«ga. Bet tÄ pozitÄ«vÄ ietekme bÅ«s pamanÄma pat Ä«stermiÅÄ, kad jums nekas nav jÄdara, lai veiktu regresijas testu.
Ir ÄrkÄrtÄ«gi svarÄ«gi veikt slodzes testÄÅ”anu visos izstrÄdes posmos. Jo ÄtrÄk pamanÄ«sit kÄdu trÅ«kumu arhitektÅ«rÄ, jo vieglÄk to bÅ«s novÄrst, kas nÄkotnÄ ietaupÄ«s daudz laika.
Ar Lua nav nekÄ slikta. Ikviens var iemÄcÄ«ties tajÄ rakstÄ«t: Java izstrÄdÄtÄjs, JavaScript izstrÄdÄtÄjs, Python izstrÄdÄtÄjs, priekÅ”gals vai aizmugure. Pat mÅ«su analÄ«tiÄ·i par to raksta.
Kad mÄs runÄjam par to, ka mums nav SQL, tas cilvÄkus biedÄ. āKÄ iegÅ«t datus bez SQL? Vai tas ir iespÄjams? Noteikti. OLTP klases sistÄmÄ SQL nav nepiecieÅ”ams. Ir alternatÄ«va kÄda veida valoda, kas nekavÄjoties atgriež jÅ«s uz dokumentu orientÄtÄ skatÄ. PiemÄram, GraphQL. Un ir alternatÄ«va izkliedÄtÄs skaitļoÅ”anas veidÄ.
Ja saprotat, ka jums bÅ«s jÄveic mÄrogoÅ”ana, izstrÄdÄjiet savu risinÄjumu Tarantool tÄ, lai tas varÄtu darboties paralÄli desmitiem Tarantool gadÄ«jumu. Ja jÅ«s to nedarÄ«sit, vÄlÄk bÅ«s grÅ«ti un sÄpÄ«gi, jo Tarantool var efektÄ«vi izmantot tikai vienu procesora kodolu.
Avots: www.habr.com