Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Toujou soti nan fim nan "Our Secret Universe: The Hidden Life of the Cell"

Biznis envestisman an se youn nan zòn ki pi konplèks nan mond bankè a, paske pa gen sèlman prè, prete ak depo, men tou, sekirite, lajan, negosyan, dérivés ak tout kalite konpleksite nan fòm lan nan pwodwi estriktire.

Dènyèman, nou te wè yon ogmantasyon nan alfabetizasyon finansye nan popilasyon an. Plis ak plis moun ap patisipe nan komès nan mache sekirite yo. Kont envestisman endividyèl yo te parèt pa tèlman lontan de sa. Yo pèmèt ou fè komès sou mache sekirite yo epi swa resevwa dediksyon taks oswa evite peye taks. Ak tout kliyan ki vin jwenn nou vle jere pòtfolyo yo epi wè rapò an tan reyèl. Anplis, pi souvan pòtfolyo sa a se milti-pwodwi, se sa ki, moun yo se kliyan nan divès liy biznis.

Anplis de sa, bezwen regilatè yo, tou de Ris ak etranje, yo ap grandi.

Pou satisfè bezwen aktyèl yo epi mete fondasyon pou amelyorasyon nan lavni, nou devlope yon nwayo biznis envestisman ki baze sou Tarantool.

Kèk estatistik. Biznis envestisman Alfa-Bank la bay sèvis Brokerage pou moun ak antite legal pou bay opòtinite pou fè komès sou plizyè mache sekirite, sèvis depo pou depo sekirite, sèvis jesyon konfyans pou moun ki gen kapital prive ak gwo, sèvis pou bay sekirite pou lòt konpayi. . Biznis envestisman Alfa-Bank la gen ladan plis pase 3 mil quotes pa segonn, ki telechaje soti nan divès platfòm komès. Pandan jounen travay la, plis pase 300 mil tranzaksyon yo konkli sou mache yo sou non bank la oswa kliyan li yo. Jiska 5 mil ekzekisyon lòd pou chak segonn rive sou platfòm ekstèn ak entèn. An menm tan an, tout kliyan, tou de entèn ak ekstèn, vle wè pozisyon yo an tan reyèl.

pre-istwa

Yon kote depi nan konmansman ane 2000 yo, zòn nou yo nan biznis envestisman devlope poukont yo: echanj komès, sèvis koutye, komès lajan, komès san preskripsyon nan sekirite ak divès kalite dérivés. Kòm yon rezilta, nou te tonbe nan pèlen nan byen fonksyonèl. Ki sa li ye? Chak liy nan biznis gen pwòp sistèm li yo ki kopi fonksyon youn ak lòt. Chak sistèm gen pwòp modèl done li yo, byenke yo opere ak menm konsèp yo: tranzaksyon, enstriman, kontrepati, quotes, ak sou sa. Epi kòm chak sistèm evolye poukont yo, yon zou divès teknoloji parèt.

Anplis de sa, baz kòd la nan sistèm yo deja byen demode, paske kèk pwodwi soti nan mitan ane 1990 yo. Ak nan kèk zòn sa a ralanti pwosesis devlopman an, e te gen pwoblèm pèfòmans.

Kondisyon pou yon nouvo solisyon

Biznis yo reyalize ke transfòmasyon teknolojik enpòtan anpil pou plis devlopman. Yo te ba nou travay:

  1. Kolekte tout done biznis nan yon sèl, depo vit ak nan yon modèl done sèl.
  2. Nou pa dwe pèdi oswa chanje enfòmasyon sa yo.
  3. Li nesesè vèsyon done yo, paske nan nenpòt moman regilatè a ka mande pou estatistik pou ane anvan yo.
  4. Nou pa dwe jis pote kèk nouvo DBMS alamòd, men nou dwe kreye yon platfòm pou rezoud pwoblèm biznis yo.

Anplis de sa, achitèk nou yo mete pwòp kondisyon yo:

  1. Nouvo solisyon an dwe antrepwiz-klas, se sa ki, li dwe deja teste nan kèk gwo konpayi yo.
  2. Mòd opere solisyon an ta dwe misyon kritik. Sa vle di ke nou dwe prezan nan plizyè sant done ansanm epi avèk kalm siviv pann nan yon sant done.
  3. Sistèm nan dwe évolutive orizontal. Reyalite a se ke tout sistèm aktyèl nou yo se sèlman vètikal évolutive, epi nou deja frape plafon an akòz kwasans lan ki ba nan pouvwa pyès ki nan konpitè. Se poutèt sa, moman sa a rive lè nou bezwen gen yon sistèm orizontal évolutive pou siviv.
  4. Pami lòt bagay, yo te di nou ke solisyon an te dwe bon mache.

Nou te swiv wout estanda a: nou te fòmile kondisyon yo epi kontakte depatman acha a. Soti nan la nou te resevwa yon lis konpayi ki, an jeneral, yo pare fè sa pou nou. Nou te di tout moun sou pwoblèm nan, epi nou te resevwa yon evalyasyon nan solisyon yo nan men sis nan yo.

Nan bank la, nou pa pran pawòl pèsonn pou li; nou renmen teste tout bagay tèt nou. Se poutèt sa, yon kondisyon obligatwa nan konpetisyon sansib nou an se te pase tès chaj. Nou te fòme travay tès chaj yo, ak twa sou sis konpayi yo te deja dakò aplike yon solisyon pwototip ki baze sou teknoloji nan memwa nan pwòp depans yo nan lòd yo teste li.

Mwen pa pral di ou ki jan nou teste tout bagay ak konbyen tan li te pran, mwen pral jis rezime: pi bon pèfòmans nan tès chaj te montre pa yon solisyon pwototip ki baze sou Tarantool soti nan ekip la devlopman Mail.ru Group. Nou te siyen yon akò e nou te kòmanse devlopman. Te gen kat moun ki soti nan Mail.ru Group, ak nan Alfa-Bank te gen twa devlopè, twa analis sistèm, yon achitèk solisyon, yon pwopriyetè pwodwi ak yon mèt Scrum.

Apre sa, mwen pral di w sou ki jan sistèm nou an te grandi, ki jan li te evolye, ki sa nou te fè ak poukisa egzakteman sa a.

Devlopman

Premye kesyon nou te poze tèt nou se kòman pou nou jwenn done nan sistèm aktyèl nou yo. Nou te deside ke HTTP te byen apwopriye pou nou, paske tout sistèm aktyèl yo kominike youn ak lòt lè yo voye XML oswa JSON sou HTTP.

Nou itilize sèvè HTTP ki bati nan Tarantool paske nou pa bezwen mete fen nan sesyon SSL, epi pèfòmans li ase pou nou.

Kòm mwen te deja di, tout sistèm nou yo ap viv nan modèl done diferan, ak nan opinyon an nou bezwen pote objè a nan modèl la ke nou dekri tèt nou. Yo te bezwen yon lang ki te pèmèt done yo dwe transfòme. Nou te chwazi enperatif Lua. Nou kouri tout kòd konvèsyon done nan yon bwat sab - sa a se yon kote ki an sekirite pi lwen pase ki kòd la kouri pa ale. Pou fè sa, nou tou senpleman chaje kòd ki nesesè yo, kreye yon anviwònman ak fonksyon ki pa ka bloke oswa lage anyen.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Apre konvèsyon, done yo dwe tcheke pou konfòmite ak modèl n ap kreye a. Nou te diskite pou yon tan long ki modèl la ta dwe ye ak ki lang yo itilize pou dekri li. Nou te chwazi Apache Avro paske lang lan senp epi li gen sipò nan men Tarantool. Nouvo vèsyon modèl la ak kòd koutim yo ka mete nan operasyon plizyè fwa pa jou, menm anba chaj oswa san, nenpòt ki lè nan jounen an, epi adapte yo ak chanjman trè vit.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Apre verifikasyon, done yo dwe sove. Nou fè sa lè l sèvi avèk vshard (nou gen replik shards geo-dispèse).

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Anplis, espesifik la se tankou ke pifò sistèm ki voye nou done pa pran swen si nou te resevwa li oswa ou pa. Se poutèt sa nou aplike yon keu reparasyon depi nan kòmansman an. Ki sa li ye? Si pou kèk rezon yon objè pa sibi transfòmasyon done oswa verifikasyon, nou toujou konfime resi, men an menm tan sove objè a nan keu reparasyon an. Li konsistan epi li sitiye nan depo prensipal done biznis la. Nou imedyatman te ekri yon koòdone administratè pou li, divès kalite mezi ak alèt. Kòm yon rezilta, nou pa pèdi done yo. Menm si yon bagay te chanje nan sous la, si modèl done a chanje, nou pral imedyatman detekte li epi yo ka adapte.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Koulye a, ou bezwen aprann kijan pou rekipere done sove. Nou ak anpil atansyon analize sistèm nou yo ak wè ke pil klasik nan Java ak Oracle nesesèman gen kèk kalite ORM ki konvèti done ki soti nan relasyon ak objè. Se konsa, poukisa pa imedyatman bay objè yo nan sistèm nan fòm nan yon graf? Se konsa, nou san pwoblèm mwen tap adopte GraphQL, ki satisfè tout bezwen nou yo. Li pèmèt ou resevwa done nan fòm graf epi rale sèlman sa ou bezwen kounye a. Ou ka menm vèsyon API a ak anpil fleksibilite.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Prèske imedyatman nou reyalize ke done nou t ap ekstrè yo pa t ase. Nou te kreye fonksyon ki ka lye ak objè nan modèl la - esansyèlman, jaden kalkile. Sa vle di, nou tache yon sèten fonksyon nan jaden an, ki, pou egzanp, kalkile pri an mwayèn quote. Ak konsomatè a ekstèn ki mande done yo pa menm konnen ke sa a se yon jaden kalkile.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Aplike yon sistèm otantifikasyon.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Lè sa a, nou remake ke plizyè wòl kristalize nan desizyon nou an. Yon wòl se yon kalite agrégateur de fonksyon. Tipikman, wòl yo gen diferan pwofil itilizasyon ekipman:

  • T-Connect: okipe koneksyon fèk ap rantre, CPU limite, konsomasyon memwa ki ba, apatrid.
  • IB-Core: transfòme done li resevwa yo atravè pwotokòl Tarantool, se sa ki, li opere ak tab. Li tou pa magazen eta epi li se évolutive.
  • Depo: sèlman magazen done, pa sèvi ak okenn lojik. Wòl sa a aplike entèfas ki pi senp yo. Évolutive gras ak vshard.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Sa vle di, lè l sèvi avèk wòl, nou dekouple diferan pati nan gwoup la youn ak lòt, ki ka echèl poukont youn ak lòt.

Se konsa, nou te kreye yon anrejistreman asynchrone tranzaksyon koule done ak yon keu reparasyon ak yon koòdone admin. Anrejistreman an se asynchrone soti nan yon pwen de vi biznis: si nou garanti yo ekri done nan tèt nou, kèlkeswa kote, Lè sa a, nou pral konfime li. Si li pa konfime, Lè sa a, yon bagay te ale mal epi done yo dwe voye. Sa a se anrejistreman asynchrone a.

Tès

Depi nan kòmansman pwojè a, nou te deside ke nou ta eseye aplike devlopman tès kondwi. Nou ekri tès inite nan Lua lè l sèvi avèk fondasyon tarantool/tap, ak tès entegrasyon nan Python lè l sèvi avèk fondasyon an pytest. An menm tan an, nou enplike tou de devlopè ak analis nan ekri tès entegrasyon.

Ki jan nou itilize devlopman ki baze sou tès?

Si nou vle kèk karakteristik nouvo, nou eseye ekri yon tès pou li an premye. Lè nou dekouvri yon ensèk, nou asire w ke ou ekri yon tès an premye, epi sèlman Lè sa a, ranje li. Okòmansman, li difisil pou travay konsa, gen yon enkonpreyansyon nan men anplwaye yo, menm sabotaj: "Ann byen vit ranje li kounye a, fè yon bagay nouvo, ak Lè sa a, kouvri li ak tès." Se sèlman sa a "pita" prèske pa janm vini.

Se poutèt sa, ou bezwen fòse tèt ou ekri tès yo an premye epi mande lòt moun fè li. Kwè m ', tès kondwi devlopman pote benefis menm nan kout tèm. Ou pral santi ke lavi ou vin pi fasil. Nou santi ke 99% nan kòd la kounye a kouvri pa tès yo. Sa a sanble anpil, men nou pa gen okenn pwoblèm: tès kouri sou chak komite.

Sepandan, sa nou renmen plis se tès chaj; nou konsidere li pi enpòtan epi fè li regilyèman.

Mwen pral rakonte w yon ti istwa sou ki jan nou te pote soti nan premye etap nan tès chaj nan youn nan premye vèsyon yo. Nou enstale sistèm nan sou laptop pwomotè a, li vire sou chaj la epi nou te resevwa 4 mil tranzaksyon pou chak segonn. Bon rezilta pou yon laptop. Nou enstale li sou yon ban chaj vityèl nan kat serveurs, pi fèb pase nan pwodiksyon an. Deplwaye nan yon minimòm. Nou kouri li, epi nou jwenn yon rezilta pi mal pase sou yon laptop nan yon sèl fil. Kontni chòk.

Nou te tris anpil. Nou gade chaj sèvè a, men li sanble yo san fè anyen konsa.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Nou rele devlopè yo, epi yo eksplike nou, moun ki soti nan mond lan nan Java, ke Tarantool se yon sèl-threaded. Li ka sèlman efektivman itilize pa yon nwayo processeur anba chaj. Lè sa a, nou te deplwaye kantite maksimòm posib Tarantool enstans sou chak sèvè, vire sou chaj la ak deja resevwa 14,5 mil tranzaksyon pou chak segonn.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Kite m eksplike ankò. Akòz divizyon an nan wòl ki sèvi ak resous yon fason diferan, wòl nou yo responsab pou koneksyon pwosesis ak transfòmasyon done chaje sèlman processeur a, ak entèdi pwopòsyonèl ak chaj la.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Nan ka sa a, yo te itilize memwa sèlman pou trete koneksyon fèk ap rantre ak objè tanporè.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Okontrè, sou serveurs depo, chaj processeur ogmante, men anpil pi dousman pase sou serveurs ki trete koneksyon.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Ak memwa konsomasyon te grandi nan pwopòsyon dirèk ak kantite done chaje.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool

Sèvis

Pou devlope nouvo pwodwi nou an espesyalman kòm yon platfòm aplikasyon, nou te kreye yon eleman pou deplwaye sèvis ak bibliyotèk sou li.

Sèvis yo pa sèlman ti moso kòd ki opere sou kèk jaden. Yo ka byen gwo ak estrikti konplèks ki fè pati yon gwoup, tcheke done referans, kouri lojik biznis ak retounen repons. Nou menm tou nou ekspòte chema sèvis la nan GraphQL, epi konsomatè a resevwa yon pwen aksè inivèsèl nan done yo, ak entwospeksyon atravè tout modèl la. Li trè konfòtab.

Piske sèvis yo genyen anpil plis fonksyon, nou te deside ke ta dwe gen bibliyotèk kote nou pral deplase kòd yo itilize souvan. Nou te ajoute yo nan anviwònman an san danje, li te deja tcheke ke li pa kraze anyen pou nou. Epi, koulye a nou ka bay anviwònman adisyonèl nan fonksyon nan fòm lan nan bibliyotèk.

Nou te vle gen yon platfòm pa sèlman pou depo, men tou pou informatique. Epi kòm nou te deja gen yon pakèt kopi ak shards, nou aplike yon kalite distribye informatique epi yo rele li kat redui, paske li te tounen soti menm jan ak kat orijinal la redwi.

Ansyen sistèm yo

Se pa tout sistèm eritaj nou yo ki ka rele nou sou HTTP epi sèvi ak GraphQL, byenke yo sipòte pwotokòl la. Se poutèt sa, nou te kreye yon mekanis ki pèmèt done yo dwe repwodui nan sistèm sa yo.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Si yon bagay chanje pou nou, deklanche inik yo deklanche nan wòl nan Depo ak mesaj la ak chanjman yo fini nan keu nan pwosesis. Li voye nan yon sistèm ekstèn lè l sèvi avèk yon wòl replikatè separe. Wòl sa a pa sere eta.

Nouvo amelyorasyon

Kòm ou sonje, nan yon pwen de vi biznis, nou te fè anrejistreman asynchrone. Men, Lè sa a, yo reyalize ke li pa ta ase, paske gen yon klas nan sistèm ki bezwen imedyatman resevwa yon repons sou estati a nan operasyon an. Se konsa, nou pwolonje GraphQL nou an ak ajoute mitasyon. Yo òganikman anfòm nan paradigm ki deja egziste nan travay ak done. Pou nou, sa a se yon sèl pwen nan tou de lekti ak ekri pou yon lòt klas nan sistèm.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Nou te reyalize tou ke sèvis poukont yo pa ta ase pou nou, paske gen rapò byen lou ki bezwen bati yon fwa pa jou, yon semèn, yon mwa. Sa a ka pran yon bon bout tan, ak rapò ka menm bloke bouk evènman Tarantool la. Se poutèt sa, nou te kreye wòl separe: pwogramè ak kourè. Kourè yo pa magazen eta. Yo kouri travay lou ke nou pa ka kalkile sou vole. Ak wòl orè a kontwole orè lansman travay sa yo, ki dekri nan konfigirasyon an. Travay yo tèt yo yo estoke nan menm kote ak done biznis yo. Lè bon moman an rive, pwogramè a pran travay la, li bay kèk moun kap kouri, ki konte li epi sove rezilta a.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Se pa tout travay yo bezwen kouri sou yon orè. Gen kèk rapò ki bezwen li sou demann. Le pli vit ke egzijans sa a rive, yo kreye yon travay nan bwat sab la epi yo voye l bay kourè a pou ekzekisyon. Apre kèk tan, itilizatè a resevwa yon repons asynchrone ke tout bagay te kalkile ak rapò a pare.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Okòmansman, nou te respekte paradigm nan estoke tout done, vèsyon li epi yo pa efase li. Men, nan lavi, de tan zan tan ou toujou gen efase yon bagay, sitou kèk enfòmasyon anvan tout koreksyon oswa entèmedyè. Baze sou ekspirasyon, nou te kreye yon mekanis pou netwaye depo a soti nan done demode.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool
Nou konprann tou ke pi bonè oswa pita yon sitiyasyon ap vini lè pa pral gen ase espas pou estoke done nan memwa, men kanmenm done yo dwe estoke. Pou rezon sa yo, nou pral byento fè depo disk.

Ki jan nou bati nwayo biznis envestisman Alfa-Bank la ki baze sou Tarantool

Konklizyon

Nou te kòmanse ak travay la nan chaje done nan yon modèl sèl epi li te pase twa mwa devlope li. Nou te gen sis sistèm ekipman pou done. Tout kòd transfòmasyon an nan yon modèl sèl se apeprè 30 mil liy nan Lua. Ak pi fò nan travay la toujou devan. Pafwa gen yon mank de motivasyon nan men ekip vwazen yo, e gen anpil sikonstans ki konplike travay la. Si ou janm fè fas a yon travay menm jan an, Lè sa a, miltipliye tan ki sanble nòmal pou ou aplikasyon li pa twa, oswa menm kat.

Sonje tou ke pwoblèm ki egziste deja nan pwosesis biznis yo pa ka rezoud lè l sèvi avèk yon nouvo DBMS, menm yon trè pwodiktif. Kisa mwen vle di? Nan kòmansman pwojè nou an, nou te kreye enpresyon nan mitan kliyan ke kounye a nou pral pote yon nouvo baz done rapid epi n ap viv! Pwosesis yo pral pi vit, tout bagay pral byen. An reyalite, teknoloji pa rezoud pwoblèm yo ke pwosesis biznis yo genyen, paske pwosesis biznis yo se moun. Epi ou bezwen travay ak moun, pa teknoloji.

Devlopman tès-kondwi ka douloure ak tan konsome nan premye etap yo. Men, efè pozitif nan li pral aparan menm nan kout tèm, lè ou pa bezwen fè anyen pou fè tès regresyon.

Li trè enpòtan pou fè tès chaj nan tout etap devlopman. Pi bonè ou remake kèk defo nan achitekti a, pi fasil li pral ranje li, ki pral sove ou anpil tan nan lavni an.

Pa gen anyen ki mal ak Lua. Nenpòt moun ka aprann ekri nan li: devlopè Java, devlopè JavaScript, devlopè Python, front-end oswa back-end. Menm analis nou yo ekri sou li.

Lè nou pale sou lefèt ke nou pa gen SQL, li pè moun. "Ki jan ou ka jwenn done san SQL? Èske sa posib? Sètènman. Nan yon sistèm klas OLTP, SQL pa nesesè. Gen yon altènatif nan fòm lan nan yon kalite lang ki imedyatman retounen ou nan yon vi dokiman-oryante. Pou egzanp, GraphQL. Epi gen yon altènatif nan fòm lan nan distribye informatique.

Si ou konprann ke w ap bezwen echèl, Lè sa a, konsepsyon solisyon ou sou Tarantool nan yon fason ke li ka kouri nan paralèl sou plizyè douzèn Tarantool ka. Si ou pa fè sa, li pral difisil ak douloure pita, depi Tarantool ka sèlman efektivman itilize yon nwayo processeur.

Sous: www.habr.com

Add nouvo kòmantè