Ki jan nou te fè nwaj FaaS andedan Kubernetes ak te genyen Hackathon Tinkoff la

Ki jan nou te fè nwaj FaaS andedan Kubernetes ak te genyen Hackathon Tinkoff la
Kòmanse ane pase a, konpayi nou an te kòmanse òganize hackathon. Premye konpetisyon an te gen anpil siksè, nou te ekri sou li nan Atik. Dezyèm Hackathon an te fèt nan mwa fevriye 2019 e li pa t gen mwens siksè. Sou objektif yo nan kenbe lèt la pa tèlman lontan de sa писал òganizatè.

Patisipan yo te bay yon travay olye enteresan ak libète konplè nan chwazi yon pil teknoloji pou aplikasyon li. Li te nesesè pou aplike yon platfòm pou pran desizyon pou deplwaman pratik fonksyon kliyan ki fè nòt ki te kapab travay ak yon koule rapid nan aplikasyon, kenbe tèt ak chay lou, ak sistèm nan tèt li te fasil évolutive.

Travay la se pa trivial epi yo ka rezoud nan plizyè fason, jan nou te konvenki nan pandan demonstrasyon an nan prezantasyon final yo nan pwojè patisipan yo. Te gen 6 ekip 5 moun nan Hackathon a, tout patisipan yo te gen bon pwojè, men platfòm nou an te vin pi konpetitif la. Nou gen yon pwojè trè enteresan, ki mwen ta renmen pale sou nan atik sa a.

Solisyon nou an se yon platfòm ki baze sou achitekti san sèvè andedan Kubernetes, ki diminye tan li pran pou pote nouvo karakteristik nan pwodiksyon an. Li pèmèt analis yo ekri kòd nan yon anviwònman ki bon pou yo epi deplwaye li nan pwodiksyon san patisipasyon enjenyè ak devlopè yo.

Ki sa ki fè nòt

Tinkoff.ru, tankou anpil konpayi modèn, gen nòt kliyan. Scoring se yon sistèm evalyasyon kliyan ki baze sou metòd estatistik analiz done.

Pou egzanp, yon kliyan tounen vin jwenn nou ak yon demann bay li yon prè, oswa louvri yon kont antreprenè endividyèl avèk nou. Si nou planifye pou bay li yon prè, Lè sa a, nou bezwen evalye solvabilite li, epi si kont lan se yon antreprenè endividyèl, Lè sa a, nou bezwen asire w ke kliyan an pa pral fè tranzaksyon fwod.

Baz pou pran desizyon sa yo se modèl matematik ki analize tou de done ki soti nan aplikasyon an li menm ak done ki soti nan depo nou an. Anplis de nòt, metòd estatistik menm jan an ka itilize tou nan sèvis la nan jenere rekòmandasyon endividyèl pou nouvo pwodwi pou kliyan nou yo.

Metòd yon evalyasyon konsa kapab aksepte yon varyete D' done. Ak nan kèk pwen nou ka ajoute yon nouvo paramèt nan opinyon an, ki, ki baze sou rezilta yo nan analiz sou done istorik, ap ogmante pousantaj la konvèsyon nan sèvi ak sèvis la.

Nou kenbe yon richès nan done sou relasyon kliyan, ak volim nan enfòmasyon sa a ap toujou ap grandi. Pou fè nòt yo travay, pwosesis done mande tou règ (oswa modèl matematik) ki pèmèt ou byen vit deside kiyès pou apwouve yon aplikasyon, ki moun ki refize, ak ki moun ki ofri yon koup plis pwodwi, evalye enterè potansyèl yo.

Pou travay la nan men nou, nou deja itilize yon sistèm espesyalize pou pran desizyon IBM WebSphere ILOG JRules BRMS, ki, ki baze sou règ yo mete pa analis, teknològ ak devlopè, deside si yo apwouve oswa refize yon pwodwi bankè an patikilye nan kliyan an.

Gen anpil solisyon pare-fè sou mache a, tou de modèl ki fè nòt ak sistèm pou pran desizyon tèt yo. Nou itilize youn nan sistèm sa yo nan konpayi nou an. Men, biznis la ap grandi, divèsifye, tou de kantite kliyan ak kantite pwodwi yo ofri yo ap ogmante, ak ansanm ak sa a, lide ap parèt sou fason yo amelyore pwosesis la pran desizyon ki egziste deja. Se vre wi, moun k ap travay ak sistèm ki egziste deja gen anpil lide sou kòman yo fè li pi senp, pi bon, pi pratik, men pafwa lide soti nan deyò yo itil. Nouvo Hackathon an te òganize nan objektif pou kolekte ide son.

Travay

Hackathon a te fèt 23 fevriye. Yo te ofri patisipan yo yon travay konba: devlope yon sistèm pou pran desizyon ki te dwe satisfè yon kantite kondisyon.

Nou te di ki jan sistèm ki egziste deja fonksyone ak ki difikilte ki rive pandan operasyon li yo, osi byen ke ki objektif biznis platfòm devlope a ta dwe pouswiv. Sistèm nan dwe gen yon tan-a-mache rapid pou devlope règ pou kòd travay analis yo vin nan pwodiksyon pi vit posib. Ak pou koule nan fèk ap rantre nan aplikasyon yo, tan an pou pran desizyon yo ta dwe gen tandans nan yon minimòm. Epitou, sistèm nan ap devlope dwe gen kapasite kwa-vann yo nan lòd yo bay kliyan an opòtinite pou achte lòt pwodwi konpayi yo si yo apwouve pa nou epi yo gen enterè potansyèl nan men kliyan an.

Li klè ke li enposib ekri yon pwojè pare pou lage lannwit lan ki pral sètènman antre nan pwodiksyon, epi li se byen difisil yo kouvri tout sistèm nan, kidonk nou te mande yo aplike omwen yon pati nan li. Yo te etabli yon kantite kondisyon ke pwototip la dwe satisfè. Li te posib eseye tou de pou kouvri tout egzijans yo nan antye, ak travay an detay sou seksyon endividyèl nan platfòm la ap devlope.

Kòm pou teknoloji, tout patisipan yo te bay libète konplè nan chwa. Li te posib yo sèvi ak nenpòt konsèp ak teknoloji: Difizyon done, aprantisaj machin, apwovizyone evènman, gwo done ak lòt moun.

Solisyon nou an

Apre yon ti brase lide, nou te deside ke yon solisyon FaaS ta ideyal pou konplete travay la.

Pou solisyon sa a, li te nesesè pou jwenn yon kad ki apwopriye pou san sèvè pou aplike règ sistèm desizyon y ap devlope a. Depi Tinkoff aktivman itilize Kubernetes pou jesyon enfrastrikti, nou te gade plizyè solisyon pare ki baze sou li, mwen pral di w plis sou li pita.

Pou jwenn solisyon ki pi efikas, nou te gade pwodwi a ap devlope nan je itilizatè li yo. Itilizatè prensipal yo nan sistèm nou an se analis ki enplike nan devlopman règ. Règ yo dwe deplwaye sou sèvè a, oswa, tankou nan ka nou an, deplwaye nan nwaj la, pou pran desizyon ki vin apre. Soti nan pèspektiv yon analis, workflow sanble sa a:

  1. Analis la ekri yon script, règ, oswa modèl ML ki baze sou done ki soti nan depo a. Kòm yon pati nan hackathon a, nou deside sèvi ak Mongodb, men chwa nan sistèm depo done pa enpòtan isit la.
  2. Apre yo fin teste règ yo devlope sou done istorik, analis la telechaje kòd li nan panèl administratè a.
  3. Pou asire vèsyon, tout kòd pral ale nan depo Git.
  4. Atravè panèl admin la li pral posib yo deplwaye kòd la nan nwaj la kòm yon modil fonksyonèl ki pa sèvè.

Premye done kliyan yo dwe pase atravè yon sèvis anrichisman espesyalize ki fèt pou anrichi demann inisyal la ak done ki soti nan depo a. Li te enpòtan pou aplike sèvis sa a nan yon fason ke li ta travay ak yon depo sèl (ki soti nan ki analis la pran done lè yo devlope règ) pou kenbe yon estrikti done inifye.

Menm anvan Hackathon a, nou te deside sou fondasyon an Serverless ke nou ta itilize. Jodi a, gen anpil teknoloji sou mache a ki aplike apwòch sa a. Solisyon ki pi popilè nan achitekti Kubernetes yo se Fision, Open FaaS ak Kubeless. Genyen menm bon atik ak deskripsyon yo ak analiz konparatif.

Apre peze tout avantaj ak dezavantaj yo, nou te chwazi Fisyon. Fondasyon Serverless sa a byen fasil pou jere epi li satisfè kondisyon travay la.

Pou travay ak Fision, ou bezwen konprann de konsèp debaz: fonksyon ak anviwònman. Yon fonksyon se yon moso kòd ki ekri nan youn nan lang ki genyen yon anviwònman Fision. Lis anviwònman ki aplike nan kad sa a gen ladan Python, JS, Go, JVM ak anpil lòt lang ak teknoloji popilè.

Fizyon tou kapab fè fonksyon divize an plizyè fichye, pre-pake nan yon achiv. Operasyon Fision nan yon gwoup Kubernetes asire pa gous espesyalize, ki jere pa fondasyon an tèt li. Pou kominike avèk gwoup gous yo, yo dwe bay chak fonksyon pwòp wout li, epi kote ou ka pase paramèt GET oswa demann kò nan ka yon demann POST.

Kòm yon rezilta, nou te planifye pou jwenn yon solisyon ki ta pèmèt analis yo deplwaye script règ devlope san patisipasyon enjenyè ak devlopè yo. Apwòch ki dekri a tou elimine nesesite pou devlopè yo reekri kòd analis nan yon lòt lang. Pou egzanp, pou sistèm aktyèl la pran desizyon nou itilize, nou dwe ekri règ nan teknoloji trè espesyalize ak lang, sijè ki abòde lan ki trè limite, epi gen tou yon depandans fò sou sèvè aplikasyon an, depi tout règ labank bouyon. yo deplwaye nan yon sèl anviwònman. Kòm yon rezilta, deplwaye nouvo règ li nesesè yo lage tout sistèm nan.

Nan solisyon pwopoze nou an, pa gen okenn nesesite lage règ yo ka fasil deplwaye nan klike sou yon bouton. Epitou, jesyon enfrastrikti nan Kubernetes pèmèt ou pa panse sou chaj ak dekale pwoblèm sa yo rezoud soti nan bwat la. Ak itilizasyon yon sèl depo done elimine nesesite pou konpare done an tan reyèl ak done istorik, ki senplifye travay analis la.

Sa nou genyen

Depi nou te vini nan Hackathon a ak yon solisyon pare-fè (nan imajinasyon nou an), tout sa nou te fè se te konvèti tout panse nou an liy nan kòd.

Kle nan siksè nan nenpòt Hackathon se preparasyon ak yon plan ki byen ekri. Se poutèt sa, premye bagay nou te fè se te deside ki modil achitekti sistèm nou an ta konpoze ak ki teknoloji nou ta itilize.

Achitekti pwojè nou an te jan sa a:

Ki jan nou te fè nwaj FaaS andedan Kubernetes ak te genyen Hackathon Tinkoff la
Dyagram sa a montre de pwen antre, analis la (itilizatè prensipal sistèm nou an) ak kliyan an.

Pwosesis travay la estriktire konsa. Analis la devlope yon fonksyon règ ak yon fonksyon anrichisman done pou modèl li a, sere kòd li a nan yon depo Git, epi li deplwaye modèl li nan nwaj la atravè aplikasyon administratè a. Ann konsidere kòman yo pral rele fonksyon deplwaye a epi pran desizyon sou demann k ap fèk ap rantre nan men kliyan yo:

  1. Kliyan an ranpli yon fòm sou sit entènèt la epi voye demann li bay kontwolè a. Yon aplikasyon ki bezwen pran yon desizyon vini nan opinyon sistèm lan epi li anrejistre nan baz done a nan fòm orijinal li.
  2. Apre sa, demann anvan tout koreksyon an voye pou anrichisman, si sa nesesè. Ou ka konplete demann inisyal la ak done tou de nan sèvis ekstèn ak nan depo a. Rekèt anrichi ki kapab lakòz yo estoke tou nan baz done a.
  3. Fonksyon analis la te lanse, ki pran yon rechèch anrichi kòm opinyon epi li pwodui yon solisyon, ki ekri tou nan depo a.

Nou deside sèvi ak MongoDB kòm yon depo nan sistèm nou an akòz depo done ki oryante sou dokiman an nan fòm dokiman JSON, depi sèvis anrichisman yo, ki gen ladan demann orijinal la, rasanble tout done atravè kontwolè REST.

Se konsa, nou te gen 24 èdtan pou aplike platfòm la. Nou distribye wòl yo avèk siksè chak manm ekip te gen pwòp zòn responsablite pa l nan pwojè nou an:

  1. Panno admin devan pou travay analis la, atravè ki li te kapab telechaje règ nan sistèm kontwòl vèsyon an nan script ekri, chwazi opsyon pou anrichi done opinyon ak edite script règ sou entènèt.
  2. Admin backend, ki gen ladan API REST pou devan an ak entegrasyon ak VCS.
  3. Mete kanpe enfrastrikti nan Google Cloud ak devlope yon sèvis pou anrichi done sous.
  4. Yon modil pou entegre aplikasyon an admin ak fondasyon an Serverless pou deplwaman ki vin apre règ yo.
  5. Scripts nan règ pou teste pèfòmans nan tout sistèm nan ak agrégation nan analytics sou aplikasyon fèk ap rantre (desizyon yo pran) pou demonstrasyon final la.

Ann kòmanse nan lòd.

Frontend nou an te ekri nan Angilè 7 lè l sèvi avèk Twous UI bankè a. Vèsyon final la nan panèl admin te sanble tankou sa a:

Ki jan nou te fè nwaj FaaS andedan Kubernetes ak te genyen Hackathon Tinkoff la
Depi te gen ti tan, nou te eseye aplike sèlman fonksyonalite kle yo. Pou deplwaye yon fonksyon nan gwoup Kubernetes, li te nesesè yo chwazi yon evènman (yon sèvis pou ki yon règ bezwen yo dwe deplwaye nan nwaj la) ak kòd la nan fonksyon an ki aplike lojik pou pran desizyon. Pou chak deplwaman yon règ pou sèvis yo chwazi a, nou te ekri yon jounal evènman sa a. Nan panèl admin ou ta ka wè mòso bwa tout evènman yo.

Tout kòd fonksyon yo te estoke nan yon repozitwa Git aleka, ki tou te dwe mete nan panèl la admin. Pou vèsyon kòd la, tout fonksyon yo te estoke nan diferan branch nan repozitwa a. Panèl administratè a bay tou kapasite pou fè ajisteman nan scripts ekri, se konsa ke anvan deplwaye yon fonksyon nan pwodiksyon, ou ka pa sèlman tcheke kòd ekri a, men tou, fè chanjman ki nesesè yo.

Ki jan nou te fè nwaj FaaS andedan Kubernetes ak te genyen Hackathon Tinkoff la
Anplis de fonksyon règ yo, nou menm tou nou aplike kapasite pou anrichi done sous yo piti piti lè l sèvi avèk fonksyon anrichisman, kòd la ki te tou scripts nan ki li te posib pou yo ale nan depo done a, rele sèvis twazyèm pati ak fè kalkil preliminè. . Pou demontre solisyon nou an, nou kalkile siy zodiac kliyan an ki kite demann lan epi detèmine operatè mobil li lè l sèvi avèk yon sèvis REST twazyèm pati.

Backend platfòm la te ekri an Java epi aplike kòm yon aplikasyon Spring Boot. Okòmansman, nou te planifye pou itilize Postgres pou estoke done admin, men, kòm yon pati nan hackathon a, nou te deside limite tèt nou nan yon senp H2 yo nan lòd yo ekonomize tan. Sou backend la, entegrasyon ak Bitbucket te aplike pou vèsyon anrichisman rechèch fonksyon yo ak règ scripts. Pou entegrasyon ak repozitwa Git aleka, nou itilize JGit bibliyotèk, ki se yon kalite wrapper sou kòmandman CLI, ki pèmèt ou egzekite nenpòt enstriksyon git lè l sèvi avèk yon koòdone lojisyèl pratik. Se konsa, nou te gen de depo separe pou fonksyon anrichisman ak règ, ak tout scripts yo te divize an repèrtwar. Atravè UI a li te posib yo chwazi dènye komite nan yon script nan yon branch abitrè nan depo a. Lè w fè chanjman nan kòd la atravè panèl administratè a, yo te kreye komèt kòd ki chanje a nan depo aleka.

Pou aplike lide nou an, nou te bezwen enfrastrikti apwopriye. Nou deside deplwaye gwoup Kubernetes nou an nan nwaj la. Chwa nou se te Google Cloud Platform. Fondasyon Fision san sèvè a te enstale sou yon gwoup Kubernetes, ke nou te deplwaye nan Gcloud. Okòmansman, sèvis anrichisman done sous yo te aplike kòm yon aplikasyon Java separe ki vlope nan yon Pod andedan gwoup k8s la. Men, apre yon demonstrasyon preliminè nan pwojè nou an nan mitan hackathon la, nou te rekòmande fè sèvis la anrichisman pi fleksib bay opòtinite pou yo chwazi ki jan yo anrichi done yo anvan tout koreksyon nan aplikasyon fèk ap rantre. Epi nou pa te gen okenn chwa men fè sèvis anrichisman an tou san sèvè.

Pou travay ak Fision, nou te itilize Fision CLI, ki dwe enstale sou tèt Kubernetes CLI. Deplwaye fonksyon nan yon gwoup k8s se byen senp, ou jis bezwen bay yon wout entèn ak antre nan fonksyon an pou pèmèt trafik fèk ap rantre si gen aksè deyò gwoup la. Deplwaye yon fonksyon anjeneral pa pran plis pase 10 segonn.

Prezantasyon final pwojè a ak rezime

Pou montre kouman sistèm nou an fonksyone, nou mete yon fòm senp sou yon sèvè aleka kote ou ka soumèt yon aplikasyon pou youn nan pwodwi bank la. Pou mande w, ou te oblije antre inisyal ou, dat nesans ou ak nimewo telefòn ou.

Done ki soti nan fòm kliyan an te ale nan kontwolè a, ki an menm tan voye demann pou tout règ ki disponib, li te deja anrichi done yo dapre kondisyon yo espesifye, epi sove yo nan yon depo komen. An total, nou te deplwaye twa fonksyon ki pran desizyon sou aplikasyon k ap fèk ap rantre yo ak 4 sèvis anrichisman done. Apre soumèt aplikasyon an, kliyan an te resevwa desizyon nou an:

Ki jan nou te fè nwaj FaaS andedan Kubernetes ak te genyen Hackathon Tinkoff la
Anplis de refi oswa apwobasyon, kliyan an te resevwa tou yon lis lòt pwodwi, demann pou ki nou te voye an paralèl. Sa a se ki jan nou demontre posiblite pou kwa-sale nan platfòm nou an.

Te gen yon total de 3 pwodwi bank fiktif ki disponib:

  • Kredi.
  • Jwèt
  • Ipotèk.

Pandan demonstrasyon an, nou te deplwaye fonksyon prepare ak script anrichisman pou chak sèvis.

Chak règ te egzije pwòp ansanm done D'. Se konsa, pou apwouve yon ipotèk, nou kalkile siy zodiac kliyan an epi konekte sa a ak lojik kalandriye linè a. Pou apwouve yon jwèt, nou tcheke ke kliyan an te rive nan laj majorite, epi bay yon prè, nou te voye yon demann nan yon sèvis ekstèn louvri pou detèmine operatè selilè a, epi yo te pran yon desizyon sou li.

Nou te eseye fè demonstrasyon nou an enteresan ak entèaktif, tout moun prezan te kapab ale nan fòm nou an epi tcheke disponiblite sèvis fiksyon nou yo pou yo. Ak nan fen prezantasyon an, nou te demontre analiz de aplikasyon nou te resevwa yo, ki te montre konbyen moun ki te itilize sèvis nou an, kantite apwobasyon, ak refi.

Pou kolekte analiz sou entènèt, nou anplis deplwaye yon zouti BI sous louvri Metabaz epi vise li nan inite depo nou an. Metabase pèmèt ou bati ekran ak analiz sou done ki enterese nou ou jis bezwen anrejistre yon koneksyon nan baz done a, chwazi tab (nan ka nou an, koleksyon done, depi nou itilize MongoDB), epi presize jaden ki enterese nou; .

Kòm yon rezilta, nou te jwenn yon bon pwototip nan yon platfòm pou pran desizyon, ak pandan demonstrasyon an, chak moun ki koute te kapab pèsonèlman tcheke pèfòmans li yo. Yon solisyon enteresan, yon pwototip fini ak yon demonstrasyon siksè te pèmèt nou genyen, malgre konpetisyon fò nan lòt ekip yo. Mwen sèten ke yon atik enteresan ka ekri tou sou pwojè chak ekip.

Sous: www.habr.com

Add nouvo kòmantè