Yadda muka yi girgije FaaS a cikin Kubernetes kuma muka ci Tinkoff hackathon

Yadda muka yi girgije FaaS a cikin Kubernetes kuma muka ci Tinkoff hackathon
Tun daga bara, kamfaninmu ya fara shirya hackathons. Irin wannan gasa ta farko ta yi nasara sosai, mun rubuta game da ita a ciki labarin. Hackathon na biyu ya faru ne a watan Fabrairun 2019 kuma bai yi nasara ba. Game da manufofin riƙe na ƙarshe ba da daɗewa ba ya rubuta mai shiryawa.

An bai wa mahalarta aiki mai ban sha'awa tare da cikakken 'yanci a zabar tarin fasaha don aiwatar da shi. Ya zama dole don aiwatar da tsarin yanke shawara don dacewa da ƙaddamar da ayyuka na ƙima na abokin ciniki wanda zai iya aiki tare da saurin aikace-aikacen aikace-aikace, tsayayya da nauyi mai nauyi, kuma tsarin da kansa ya kasance mai sauƙi.

Aikin ba shi da mahimmanci kuma ana iya warware shi ta hanyoyi da yawa, kamar yadda muka gamsu a lokacin nunin gabatarwar karshe na ayyukan mahalarta. Akwai ƙungiyoyi 6 na mutane 5 a hackathon, duk mahalarta suna da ayyuka masu kyau, amma dandalinmu ya zama mafi yawan gasa. Muna da aiki mai ban sha'awa, wanda zan so in yi magana game da shi a cikin wannan labarin.

Maganin mu shine dandamali wanda ya dogara da tsarin gine-ginen Serverless a cikin Kubernetes, wanda ke rage lokacin da ake ɗauka don kawo sababbin abubuwa don samarwa. Yana ba masu sharhi damar rubuta lamba a cikin yanayin da ya dace da su da tura shi cikin samarwa ba tare da sa hannun injiniyoyi da masu haɓakawa ba.

Me ke zura kwallo

Tinkoff.ru, kamar yawancin kamfanoni na zamani, yana da maki abokin ciniki. Maki ƙima shine tsarin kima na abokin ciniki bisa hanyoyin ƙididdiga na ƙididdigar bayanai.

Misali, abokin ciniki ya juya gare mu tare da neman ba shi rance, ko kuma buɗe asusun ɗan kasuwa ɗaya tare da mu. Idan muka yi shirin ba shi lamuni, to muna buƙatar tantance ƙarfinsa, kuma idan asusun mutum ɗan kasuwa ne, to muna buƙatar tabbatar da cewa abokin ciniki ba zai gudanar da ma'amaloli na yaudara ba.

Tushen yin irin waɗannan shawarwarin su ne ƙirar lissafi waɗanda ke nazarin duka bayanai daga aikace-aikacen kanta da kuma bayanan daga ma'adanar mu. Baya ga zura kwallaye, ana iya amfani da irin waɗannan hanyoyin ƙididdiga a cikin sabis na samar da shawarwarin mutum ɗaya don sabbin samfura ga abokan cinikinmu.

Hanyar irin wannan kima na iya karɓar nau'ikan bayanan shigarwa iri-iri. Kuma a wani lokaci za mu iya ƙara sabon ma'auni zuwa shigarwar, wanda, bisa ga sakamakon bincike akan bayanan tarihi, zai ƙara yawan juzu'i na amfani da sabis.

Muna riƙe ɗimbin bayanai game da dangantakar abokan ciniki, kuma ƙarar wannan bayanin yana girma koyaushe. Don maki don yin aiki, sarrafa bayanai kuma yana buƙatar ƙa'idodi (ko ƙirar lissafi) waɗanda ke ba ku damar yanke shawarar da sauri wanda za ku amince da aikace-aikacen, wanda za ku ƙi, da waɗanda za ku ba da ƙarin samfuran ma'aurata, tantance yuwuwar sha'awar su.

Domin aikin da ke hannunmu, mun riga mun yi amfani da tsarin yanke shawara na musamman IBM WebSphere ILOG JRules BRMS, wanda, bisa ka'idojin da manazarta, masu fasaha da masu haɓakawa suka tsara, sun yanke shawarar ko za su amince ko ƙi wani samfurin banki ga abokin ciniki.

Akwai shirye-shiryen da aka yi da yawa akan kasuwa, duka ƙirar ƙira da tsarin yanke shawara da kansu. Muna amfani da ɗayan waɗannan tsarin a cikin kamfaninmu. Amma kasuwancin yana haɓaka, haɓakawa, duka adadin abokan ciniki da adadin samfuran da aka bayar suna ƙaruwa, kuma tare da wannan, ra'ayoyin suna fitowa kan yadda za a inganta tsarin yanke shawara na yanzu. Tabbas mutanen da ke aiki tare da tsarin da ke akwai suna da ra'ayoyi da yawa game da yadda za a sauƙaƙe shi, mafi kyau, mafi dacewa, amma wani lokacin ra'ayoyin daga waje suna da amfani. An shirya Sabuwar Hackathon tare da manufar tattara ra'ayoyin sauti.

Aiki

An gudanar da hackathon a ranar 23 ga Fabrairu. An ba wa mahalarta aikin yaƙi: don haɓaka tsarin yanke shawara wanda ya dace da yanayi da yawa.

An gaya mana yadda tsarin da ake da shi ke aiki da irin matsalolin da ke tasowa yayin aikinsa, da kuma irin manufofin kasuwanci da dandalin da aka ci gaba ya kamata ya bi. Dole ne tsarin ya kasance yana da saurin lokaci-zuwa kasuwa don haɓaka ƙa'idodi ta yadda ka'idar aiki na manazarta ta shiga cikin samarwa da sauri. Kuma ga kwararar aikace-aikacen da ke shigowa, lokacin yanke shawara ya kamata ya kasance mafi ƙanƙanta. Hakanan, tsarin da ake haɓaka dole ne ya sami damar siyarwar giciye don ba abokin ciniki damar siyan wasu samfuran kamfani idan sun amince da mu kuma suna da yuwuwar sha'awa daga abokin ciniki.

A bayyane yake cewa ba shi yiwuwa a rubuta wani shiri na sakewa da daddare wanda tabbas zai shiga samarwa, kuma yana da wahala a rufe dukkan tsarin, don haka an nemi mu aiwatar da aƙalla ɓangarensa. An kafa wasu buƙatu da yawa waɗanda samfurin dole ne ya cika. Zai yiwu a gwada duka biyu don rufe duk buƙatun gaba ɗaya, da kuma yin aiki daki-daki a kan kowane sassan dandamali da ake haɓakawa.

Dangane da fasaha, duk mahalarta an ba su cikakken 'yancin zaɓi. Yana yiwuwa a yi amfani da kowane ra'ayi da fasaha: yawo bayanai, koyan injin, samar da taron, manyan bayanai da sauransu.

Maganin mu

Bayan ɗan ƙaramin tunani, mun yanke shawarar cewa maganin FaaS zai zama manufa don kammala aikin.

Don wannan bayani, ya zama dole a nemo tsarin da ya dace mara amfani da uwar garken don aiwatar da ka'idodin tsarin yanke shawara da ake haɓaka. Tun da Tinkoff yana amfani da Kubernetes sosai don gudanar da ababen more rayuwa, mun duba hanyoyin da aka yi shirye-shiryen da yawa dangane da shi; Zan ba ku ƙarin bayani game da shi daga baya.

Don nemo mafita mafi inganci, mun kalli samfurin da ake haɓaka ta idanun masu amfani da shi. Babban masu amfani da tsarinmu sune manazarta da ke da hannu a ci gaban mulki. Dole ne a tura dokoki zuwa uwar garken, ko, kamar yadda a cikin yanayinmu, a tura cikin gajimare, don yanke shawara na gaba. Ta fuskar manazarta, tsarin aiki yayi kama da haka:

  1. Manazarci yana rubuta rubutun, ƙa'ida, ko ƙirar ML dangane da bayanai daga sito. A matsayin wani ɓangare na hackathon, mun yanke shawarar amfani da Mongodb, amma zaɓin tsarin adana bayanai ba shi da mahimmanci a nan.
  2. Bayan gwada ƙa'idodin da aka haɓaka akan bayanan tarihi, manazarci yana loda lambar sa zuwa kwamitin gudanarwa.
  3. Don tabbatar da sigar, duk lambar za ta je wuraren ajiyar Git.
  4. Ta hanyar kwamitin gudanarwa zai yiwu a tura lambar a cikin gajimare a matsayin keɓantaccen nau'in Serverless mai aiki.

Bayanan farko daga abokan ciniki dole ne su wuce ta hanyar sabis na Haɓakawa na musamman da aka tsara don wadatar da buƙatun farko tare da bayanai daga ma'ajiyar. Yana da mahimmanci don aiwatar da wannan sabis ɗin ta yadda zai yi aiki tare da ma'ajin ajiya guda ɗaya (wanda mai sharhi ke ɗaukar bayanai lokacin haɓaka ƙa'idodi) don kiyaye tsarin haɗin kai.

Tun kafin hackathon, mun yanke shawarar tsarin tsarin mara amfani da za mu yi amfani da shi. A yau akwai fasahohi da yawa a kasuwa waɗanda ke aiwatar da wannan hanyar. Shahararrun mafita a cikin gine-ginen Kubernetes sune Fission, Open FaaS da Kubeless. Akwai ma labari mai kyau tare da bayanin su da nazarin kwatancen su.

Bayan mun auna duk ribobi da fursunoni, mun zaɓi Fashewa. Wannan tsarin mara amfani yana da sauƙin sarrafawa kuma ya dace da buƙatun aikin.

Don yin aiki tare da Fission, kuna buƙatar fahimtar mahimman ra'ayoyi guda biyu: aiki da yanayi. Aiki wani yanki ne na lamba da aka rubuta a cikin ɗayan yarukan waɗanda ke da yanayin Fission. Jerin mahallin da aka aiwatar a cikin wannan tsarin ya hada da Python, JS, Go, JVM da sauran shahararrun yaruka da fasaha.

Fission kuma yana da ikon aiwatar da ayyuka da aka raba zuwa fayiloli da yawa, an riga an shirya su cikin ma'ajiyar bayanai. Ana tabbatar da aikin Fission a cikin gungu na Kubernetes ta hanyar kwasfa na musamman, waɗanda tsarin da kansa ke sarrafawa. Don yin hulɗa tare da kwas ɗin cluster, kowane aiki dole ne a sanya nasa hanya, kuma zuwa gare ta zaku iya wuce sigogin GET ko buƙatar jiki a yanayin buƙatun POST.

A sakamakon haka, mun shirya don samun mafita wanda zai ba da damar manazarta su tura rubutun ƙa'idodin da aka haɓaka ba tare da halartar injiniyoyi da masu haɓakawa ba. Hanyar da aka kwatanta kuma tana kawar da buƙatar masu haɓakawa don sake rubuta lambar nazari zuwa wani harshe. Misali, don tsarin yanke shawara na yanzu da muke amfani da shi, dole ne mu rubuta dokoki a cikin fasaha na musamman da harsuna, waɗanda iyakarsu ta iyakance, kuma akwai dogaro mai ƙarfi ga uwar garken aikace-aikacen, tunda duk daftarin dokokin banki. ana tura su a wuri guda. A sakamakon haka, don ƙaddamar da sababbin dokoki wajibi ne a saki tsarin gaba ɗaya.

A cikin shawarwarin da muka gabatar, babu buƙatar sakin dokoki; ana iya tura lambar cikin sauƙi a danna maɓallin. Hakanan, gudanar da ayyukan ababen more rayuwa a Kubernetes yana ba ku damar yin tunani game da kaya da ƙima; ana warware irin waɗannan matsalolin daga cikin akwatin. Kuma yin amfani da rumbun adana bayanai guda ɗaya yana kawar da buƙatar kwatanta bayanan lokaci-lokaci tare da bayanan tarihi, wanda ke sauƙaƙe aikin mai sharhi.

Abin da muka samu

Tun da muka zo hackathon tare da shirye-shiryen da aka yi (a cikin tunaninmu), duk abin da za mu yi shi ne canza duk tunaninmu zuwa layin code.

Makullin samun nasara a kowane hackathon shine shiri da ingantaccen tsarin da aka rubuta. Saboda haka, abu na farko da muka yi shi ne yanke shawarar wane nau'ikan tsarin gine-ginen tsarin mu zai kunsa da waɗanne fasahohin da za mu yi amfani da su.

Tsarin gine-ginen aikin namu ya kasance kamar haka:

Yadda muka yi girgije FaaS a cikin Kubernetes kuma muka ci Tinkoff hackathon
Wannan zane yana nuna wuraren shigarwa guda biyu, mai nazari (babban mai amfani da tsarin mu) da abokin ciniki.

An tsara tsarin aikin kamar haka. Manazarci yana haɓaka aikin ƙa'ida da aikin haɓaka bayanai don ƙirar sa, yana adana lambar sa a cikin ma'ajiyar Git, kuma ya tura samfurinsa zuwa gajimare ta hanyar aikace-aikacen gudanarwa. Bari mu yi la'akari da yadda za a kira aikin da aka tura kuma mu yanke shawara kan buƙatun masu shigowa daga abokan ciniki:

  1. Abokin ciniki ya cika fom akan gidan yanar gizon kuma ya aika buƙatarsa ​​ga mai sarrafawa. Aikace-aikacen da ake buƙatar yanke shawara ya zo ga shigar da tsarin kuma ana yin rikodin shi a cikin ma'ajin bayanai a cikin asalinsa.
  2. Bayan haka, ana aika da ɗanyen buƙatar don haɓakawa, idan ya cancanta. Kuna iya ƙara buƙatun farko tare da bayanai duka daga sabis na waje da kuma daga ma'ajiya. Ana kuma adana ingantaccen tambayar da aka samu a cikin ma'ajin bayanai.
  3. An ƙaddamar da aikin manazarci, wanda ke ɗaukar ingantacciyar tambaya azaman shigarwa kuma ya samar da mafita, wanda kuma aka rubuta zuwa wurin ajiya.

Mun yanke shawarar yin amfani da MongoDB azaman ajiya a cikin tsarinmu saboda bayanan da aka yi amfani da su a cikin nau'ikan takaddun JSON, tunda ayyukan haɓakawa, gami da buƙatun asali, sun tattara duk bayanai ta hanyar masu sarrafa REST.

Don haka, muna da sa'o'i XNUMX don aiwatar da dandalin. Mun rarraba ayyukan cikin nasara; kowane memba na ƙungiyar yana da nasa yanki na alhaki a cikin aikinmu:

  1. Ƙungiyoyin gudanarwa na gaba-gaba don aikin manazarci, ta inda zai iya zazzage dokoki daga tsarin sarrafa sigar rubutun rubutun, zaɓi zaɓuɓɓuka don wadatar bayanan shigarwa da kuma gyara rubutun ƙa'ida akan layi.
  2. Mai gudanarwa na baya, gami da REST API don gaba da haɗin kai tare da VCS.
  3. Kafa abubuwan more rayuwa a cikin Google Cloud da haɓaka sabis don wadatar bayanan tushen.
  4. Module don haɗa aikace-aikacen mai gudanarwa tare da tsarin uwar garke don ƙaddamar da dokoki na gaba.
  5. Rubutun ka'idoji don gwada aikin gabaɗayan tsarin da tara ƙididdiga akan aikace-aikacen da ke shigowa (yanke shawarar da aka yanke) don zanga-zangar ƙarshe.

Bari mu fara cikin tsari.

An rubuta gabanmu a cikin Angular 7 ta amfani da Kit ɗin UI na banki. Sigar karshe na admin panel yayi kama da haka:

Yadda muka yi girgije FaaS a cikin Kubernetes kuma muka ci Tinkoff hackathon
Tun da akwai ɗan lokaci kaɗan, mun yi ƙoƙarin aiwatar da ayyuka masu mahimmanci kawai. Don ƙaddamar da aiki a cikin gungu na Kubernetes, ya zama dole don zaɓar wani taron (sabis ɗin da ake buƙatar yin amfani da doka a cikin girgije) da lambar aikin da ke aiwatar da dabarun yanke shawara. Ga kowane tura doka don sabis ɗin da aka zaɓa, mun rubuta log ɗin wannan taron. A cikin admin panel za ka iya ganin logs na duk abubuwan da suka faru.

An adana duk lambar aikin a cikin wurin ajiyar Git mai nisa, wanda kuma dole ne a saita shi a cikin kwamitin gudanarwa. Don sigar lambar, an adana duk ayyuka a cikin rassa daban-daban na ma'ajiyar. Kwamitin gudanarwa kuma yana ba da damar yin gyare-gyare ga rubuce-rubucen rubuce-rubuce, ta yadda kafin ƙaddamar da aiki don samarwa, ba za ku iya kawai duba lambar da aka rubuta ba, amma kuma ku yi canje-canje masu dacewa.

Yadda muka yi girgije FaaS a cikin Kubernetes kuma muka ci Tinkoff hackathon
Baya ga ayyukan ƙa'idodin, mun kuma aiwatar da ikon haɓaka bayanan tushen sannu a hankali ta amfani da ayyukan Haɓakawa, lambar su ma rubutun ne wanda zai yiwu a je ma'ajiyar bayanai, kiran sabis na ɓangare na uku da yin lissafin farko. . Don nuna mafitarmu, mun ƙididdige alamar zodiac na abokin ciniki wanda ya bar buƙatar kuma ya ƙaddara ma'aikacin wayar sa ta amfani da sabis na REST na ɓangare na uku.

An rubuta ƙarshen dandalin a cikin Java kuma an aiwatar da shi azaman aikace-aikacen Boot Spring. Mun fara shirin yin amfani da Postgres don adana bayanan gudanarwa, amma, a matsayin ɓangare na hackathon, mun yanke shawarar iyakance kanmu zuwa H2 mai sauƙi don adana lokaci. A bangon baya, an aiwatar da haɗin kai tare da Bitbucket don siffanta ayyukan haɓakar tambaya da rubutun ƙa'ida. Don haɗin kai tare da wuraren ajiyar Git mai nisa, mun yi amfani da su JGit library, wanda shine nau'in nannade akan umarnin CLI, yana ba ku damar aiwatar da kowane umarnin git ta amfani da ingantaccen software mai dacewa. Don haka muna da ɗakunan ajiya guda biyu daban-daban don ayyukan haɓakawa da ƙa'idodi, kuma an raba duk rubutun zuwa kundin adireshi. Ta hanyar UI yana yiwuwa a zaɓi sabon ƙaddamarwa na rubutun reshe na sabani na ma'ajiyar. Lokacin yin canje-canje ga lambar ta hanyar kwamitin gudanarwa, an ƙirƙiri ƙaddamar da lambar da aka canza a cikin ma'ajiyar nesa.

Don aiwatar da ra'ayinmu, muna buƙatar abubuwan da suka dace. Mun yanke shawarar tura gungu na Kubernetes a cikin gajimare. Zaɓin mu shine Google Cloud Platform. An shigar da tsarin mara sabar uwar garken Fission akan gungu na Kubernetes, wanda muka tura a cikin Gcloud. Da farko, an aiwatar da sabis na haɓaka bayanan tushen azaman aikace-aikacen Java daban wanda aka naɗe a cikin Pod a cikin tarin k8s. Amma bayan nuni na farko na aikin mu a tsakiyar hackathon, an ba mu shawarar yin sabis na Ƙarfafawa mafi sauƙi don ba da damar zaɓar yadda za a wadatar da albarkatun albarkatun aikace-aikace masu shigowa. Kuma ba mu da wani zaɓi face mu sanya sabis ɗin haɓakawa kuma maras Server.

Don yin aiki tare da Fission, mun yi amfani da Fission CLI, wanda dole ne a sanya shi a saman Kubernetes CLI. Aiwatar da ayyuka cikin gungu k8s abu ne mai sauƙi; kawai kuna buƙatar sanya hanya ta ciki da shiga cikin aikin don ba da izinin zirga-zirga mai shigowa idan ana buƙatar samun dama ga gungu. Aiwatar da aiki ɗaya yawanci yana ɗaukar fiye da daƙiƙa 10.

Gabatarwar ƙarshe na aikin da taƙaitawa

Don nuna yadda tsarinmu ke aiki, mun sanya fom mai sauƙi akan uwar garken nesa inda zaku iya ƙaddamar da aikace-aikacen ɗaya daga cikin samfuran banki. Don nema, dole ne ka shigar da baƙaƙe, ranar haihuwa da lambar waya.

Bayanai daga fom ɗin abokin ciniki sun tafi zuwa ga mai sarrafawa, wanda a lokaci guda ya aika buƙatun don duk ƙa'idodin da ake da su, tun da a baya sun wadatar da bayanan bisa ga ƙayyadaddun sharuɗɗan, kuma ya adana su a cikin ma'adana gama gari. Gabaɗaya, mun ƙaddamar da ayyuka uku waɗanda ke yanke shawara kan aikace-aikacen masu shigowa da sabis na haɓaka bayanai guda 4. Bayan ƙaddamar da aikace-aikacen, abokin ciniki ya karɓi shawararmu:

Yadda muka yi girgije FaaS a cikin Kubernetes kuma muka ci Tinkoff hackathon
Baya ga ƙi ko yarda, abokin ciniki kuma ya karɓi jerin wasu samfuran, buƙatun waɗanda muka aika a layi daya. Wannan shine yadda muka nuna yuwuwar siyarwar giciye a dandalinmu.

Akwai jimillar samfuran banki guda 3 da aka samu:

  • Kiredit.
  • Abin wasan yara
  • jinginar gida.

A yayin zanga-zangar, mun ƙaddamar da shirye-shiryen ayyuka da rubutun haɓaka don kowane sabis.

Kowace doka tana buƙatar saitin bayanan shigarta. Don haka, don amincewa da jinginar gida, mun ƙididdige alamar zodiac na abokin ciniki kuma mun haɗa wannan tare da basirar kalandar wata. Don amincewa da abin wasan yara, mun bincika cewa abokin ciniki ya kai shekarun girma, kuma don ba da lamuni, mun aika da buƙatu zuwa sabis na buɗewa na waje don ƙayyade ma'aikacin salula, kuma an yanke shawara a kai.

Mun yi ƙoƙari mu sanya zanga-zangar mu ta zama mai ban sha'awa da ma'amala, duk wanda ya halarta zai iya zuwa fom ɗin mu ya duba samuwar hidimomin mu na almara gare su. Kuma a ƙarshen gabatarwar, mun nuna ƙididdiga na aikace-aikacen da aka karɓa, wanda ya nuna mutane nawa ne suka yi amfani da sabis ɗinmu, adadin yarda, da ƙi.

Don tattara nazari akan layi, mun kuma tura wani buɗaɗɗen kayan aikin BI Tsarin mulki kuma murkushe shi zuwa sashin ajiyar mu. Metabase yana ba ku damar gina fuska tare da nazari akan bayanan da ke sha'awar mu; kawai kuna buƙatar yin rajistar haɗin kai zuwa bayanan bayanai, zaɓi tebur (a cikin yanayinmu, tarin bayanai, tunda mun yi amfani da MongoDB), kuma saka filayen da ke da sha'awar mu. .

A sakamakon haka, mun sami kyakkyawan tsari na dandamali na yanke shawara, kuma yayin zanga-zangar, kowane mai sauraro zai iya bincika ayyukansa. Wani bayani mai ban sha'awa, samfurin da aka gama da kuma zanga-zangar nasara ya ba mu damar cin nasara, duk da gagarumar gasa daga wasu ƙungiyoyi. Na tabbata cewa ana iya rubuta labarin mai ban sha'awa akan aikin kowace ƙungiya.

source: www.habr.com

Add a comment