Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Unapofanya kazi katika IT, unaanza kugundua kuwa mifumo ina tabia zao. Wanaweza kubadilika, kimya, eccentric, na wakali. Wanaweza kuvutia au kukataa. Njia moja au nyingine, unapaswa "kujadiliana" nao, kuendesha kati ya "mitego" na kujenga minyororo ya mwingiliano wao.

Kwa hivyo tulikuwa na heshima ya kujenga jukwaa la wingu, na kwa hili tulihitaji "kushawishi" mifumo michache kufanya kazi nasi. Kwa bahati nzuri, tuna "lugha ya API", mikono ya moja kwa moja na shauku nyingi.

Nakala hii haitakuwa ngumu kiufundi, lakini itaelezea shida tulizokutana nazo wakati wa kujenga wingu. Niliamua kuelezea njia yetu kwa namna ya fantasia nyepesi ya kiufundi kuhusu jinsi tulivyotafuta lugha ya kawaida na mifumo na kile kilichotoka ndani yake.

Karibu paka.

Mwanzo wa safari

Wakati fulani uliopita, timu yetu ilipewa jukumu la kuzindua jukwaa la wingu kwa wateja wetu. Tulikuwa na usaidizi wa usimamizi, rasilimali, mkusanyiko wa maunzi na uhuru katika kuchagua teknolojia ya kutekeleza sehemu ya programu ya huduma.

Pia kulikuwa na mahitaji kadhaa:

  • huduma inahitaji akaunti rahisi ya kibinafsi;
  • jukwaa lazima liunganishwe katika mfumo uliopo wa malipo;
  • programu na vifaa: Kitambaa cha OpenStack + Tungsten (Open Contrail), ambacho wahandisi wetu wamejifunza "kupika" vizuri kabisa.

Tutakuambia wakati mwingine kuhusu jinsi timu ilivyokusanywa, kiolesura cha akaunti ya kibinafsi kiliundwa na maamuzi ya muundo yalifanywa, ikiwa jumuiya ya Habra ina nia.
Zana tuliamua kutumia:

  • Python + Flask + Swagger + SQLAlchemy - seti ya Python ya kawaida kabisa;
  • Vue.js kwa mandhari ya mbele;
  • Tuliamua kufanya mwingiliano kati ya vipengele na huduma kwa kutumia Celery juu ya AMQP.

Kutarajia maswali juu ya kuchagua Python, nitaelezea. Lugha imepata niche yake katika kampuni yetu na utamaduni mdogo, lakini bado, umeendelea karibu nayo. Kwa hiyo, iliamuliwa kuanza kujenga huduma juu yake. Aidha, kasi ya maendeleo katika matatizo hayo mara nyingi ni maamuzi.

Kwa hivyo, wacha tuanze kufahamiana kwetu.

Bili ya Kimya - bili

Tumemjua mtu huyu kwa muda mrefu. Kila mara alikaa karibu nami na kuhesabu kitu kimya kimya. Wakati mwingine alituma maombi ya watumiaji kwetu, alitoa ankara za wateja na huduma zinazosimamiwa. Mwanaume wa kawaida anayefanya kazi kwa bidii. Kweli, kulikuwa na matatizo. Yeye ni kimya, wakati mwingine anafikiria na mara nyingi juu ya mawazo yake mwenyewe.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Bili ni mfumo wa kwanza tuliojaribu kufanya urafiki nao. Na shida ya kwanza tuliyokutana nayo ilikuwa wakati wa usindikaji wa huduma.

Kwa mfano, inapoundwa au kufutwa, kazi inaingia kwenye foleni ya ndani ya utozaji. Kwa hivyo, mfumo wa kazi ya asynchronous na huduma unatekelezwa. Ili kuchakata aina za huduma zetu, tulihitaji "kuweka" majukumu yetu kwenye foleni hii. Na hapa tuliingia kwenye shida: ukosefu wa nyaraka.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Kwa kuzingatia maelezo ya API ya programu, bado inawezekana kutatua tatizo hili, lakini hatukuwa na muda wa kufanya uhandisi wa reverse, kwa hiyo tulichukua mantiki nje na kupanga foleni ya kazi juu ya RabbitMQ. Operesheni kwenye huduma imeanzishwa na mteja kutoka kwa akaunti yake ya kibinafsi, inageuka kuwa "kazi" ya Celery kwenye backend na inafanywa kwa upande wa bili na OpenStack. Celery hufanya iwe rahisi kudhibiti kazi, kupanga marudio na hali ya kufuatilia. Unaweza kusoma zaidi juu ya "celery", kwa mfano, hapa.

Pia, bili haikusimamisha mradi ambao ulikosa pesa. Kuwasiliana na watengenezaji, tuligundua kwamba wakati wa kuhesabu takwimu (na tunahitaji kutekeleza hasa aina hii ya mantiki), kuna uhusiano mgumu wa sheria za kuacha. Lakini mifano hii haiendani vizuri na ukweli wetu. Pia tuliitekeleza kupitia majukumu kwenye Celery, tukipeleka mantiki ya usimamizi wa huduma kwenye upande wa nyuma.

Shida zote mbili hapo juu zilisababisha msimbo kuwa bloated kidogo na katika siku zijazo itabidi turekebishe tena ili kusonga mantiki ya kufanya kazi na kazi kuwa huduma tofauti. Tunahitaji pia kuhifadhi baadhi ya taarifa kuhusu watumiaji na huduma zao katika majedwali yetu ili kusaidia mantiki hii.

Tatizo jingine ni ukimya.

Billy anajibu kimya kimya "Sawa" kwa baadhi ya maombi ya API. Hivi ndivyo ilivyokuwa, kwa mfano, tulipofanya malipo ya malipo yaliyoahidiwa wakati wa jaribio (zaidi juu ya hilo baadaye). Maombi yametekelezwa ipasavyo na hatukuona hitilafu zozote.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Ilinibidi kusoma magogo wakati nikifanya kazi na mfumo kupitia UI. Ilibadilika kuwa bili yenyewe hufanya maombi sawa, kubadilisha upeo kwa mtumiaji maalum, kwa mfano, admin, kupitisha katika parameter ya su.

Kwa ujumla, licha ya mapungufu katika nyaraka na dosari ndogo za API, kila kitu kilikwenda vizuri kabisa. Kumbukumbu zinaweza kusomwa hata chini ya mzigo mzito ikiwa unaelewa jinsi zimeundwa na nini cha kuangalia. Muundo wa hifadhidata ni mzuri, lakini ni mantiki kabisa na kwa njia fulani hata kuvutia.

Kwa hivyo, kwa muhtasari, shida kuu ambazo tumekutana nazo katika hatua ya mwingiliano zinahusiana na sifa za utekelezaji wa mfumo maalum:

  • "sifa" zisizo na hati ambazo zilituathiri kwa njia moja au nyingine;
  • chanzo kilichofungwa (bili imeandikwa katika C ++), kama matokeo - haiwezekani kutatua tatizo 1 kwa njia yoyote isipokuwa "jaribio na makosa".

Kwa bahati nzuri, bidhaa ina API pana na tumeunganisha mifumo ndogo ifuatayo kwenye akaunti yetu ya kibinafsi:

  • moduli ya usaidizi wa kiufundi - maombi kutoka kwa akaunti yako ya kibinafsi "hutolewa" kwa malipo kwa uwazi kwa wateja wa huduma;
  • moduli ya kifedha - inakuwezesha kutoa ankara kwa wateja wa sasa, kufanya kufuta na kuzalisha hati za malipo;
  • moduli ya kudhibiti huduma - kwa hili tulilazimika kutekeleza kidhibiti chetu wenyewe. Upanuzi wa mfumo uliingia mikononi mwetu na "tulimfundisha" Billy aina mpya ya huduma.
    Ilikuwa shida kidogo, lakini kwa njia moja au nyingine, nadhani Billy na mimi tutaelewana.

Kutembea kupitia mashamba ya tungsten - Kitambaa cha Tungsten

Sehemu za Tungsten zilizo na mamia ya waya, na kupitisha maelfu ya vipande vya habari kupitia hizo. Habari inakusanywa katika "pakiti", kuchanganuliwa, kujenga njia ngumu, kana kwamba kwa uchawi.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Hiki ndicho kikoa cha mfumo wa pili ambao tulilazimika kufanya urafiki nao - Tungsten Fabric (TF), zamani OpenContrail. Kazi yake ni kusimamia vifaa vya mtandao, kutoa muhtasari wa programu kwetu kama watumiaji. TF - SDN, inajumuisha mantiki ngumu ya kufanya kazi na vifaa vya mtandao. Kuna nakala nzuri kuhusu teknolojia yenyewe, kwa mfano, hapa.

Mfumo umeunganishwa na OpenStack (iliyojadiliwa hapa chini) kupitia programu-jalizi ya Neutron.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk
Mwingiliano wa huduma za OpenStack.

Vijana kutoka idara ya operesheni walitutambulisha kwa mfumo huu. Tunatumia API ya mfumo kudhibiti rundo la mtandao wa huduma zetu. Bado haijatuletea matatizo makubwa au usumbufu (siwezi kuwazungumzia wavulana kutoka OE), lakini kumekuwa na mambo yasiyo ya kawaida katika mwingiliano.

Ya kwanza ilionekana kama hii: maagizo ambayo yalihitaji kutoa idadi kubwa ya data kwa koni ya mfano wakati wa kuunganisha kupitia SSH "ilining'inia" kiunganisho, wakati kupitia VNC kila kitu kilifanya kazi kwa usahihi.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Kwa wale ambao hawajui shida, inaonekana ya kuchekesha sana: ls / mzizi hufanya kazi kwa usahihi, wakati, kwa mfano, juu "hufungia" kabisa. Kwa bahati nzuri, tumekutana na shida kama hizo hapo awali. Iliamuliwa kwa kurekebisha MTU kwenye njia kutoka kwa nodi za compute hadi kwa ruta. Kwa njia, hii sio shida ya TF.

Tatizo lililofuata lilikuwa karibu na kona. Katika wakati mmoja "mzuri", uchawi wa uelekezaji ulitoweka, kama hivyo. TF imeacha kudhibiti uelekezaji kwenye vifaa.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Tulifanya kazi na Openstack kutoka kiwango cha msimamizi na baada ya hapo tukahamia kiwango kinachohitajika cha mtumiaji. SDN inaonekana "kuteka nyara" upeo wa mtumiaji ambaye vitendo vinafanywa. Ukweli ni kwamba akaunti sawa ya msimamizi hutumiwa kuunganisha TF na OpenStack. Katika hatua ya kubadili mtumiaji, "uchawi" ulipotea. Iliamuliwa kuunda akaunti tofauti kufanya kazi na mfumo. Hii ilituruhusu kufanya kazi bila kuvunja utendakazi wa ujumuishaji.

Silicon Lifeforms - OpenStack

Kiumbe cha silicone chenye umbo la ajabu anaishi karibu na mashamba ya tungsten. Zaidi ya yote, inaonekana kama mtoto aliyekua ambaye anaweza kutuponda kwa swing moja, lakini hakuna uchokozi dhahiri kutoka kwake. Haina kusababisha hofu, lakini ukubwa wake huhamasisha hofu. Kama vile ugumu wa kile kinachotokea karibu.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

OpenStack ndio msingi wa jukwaa letu.

OpenStack ina mifumo ndogo kadhaa, ambayo kwa sasa tunatumia Nova, Glance na Cinder kwa bidii zaidi. Kila mmoja wao ana API yake mwenyewe. Nova inawajibika kwa kukokotoa rasilimali na uundaji wa matukio, Cinder ina jukumu la kudhibiti kiasi na vijipicha vyake, Glance ni huduma ya picha ambayo inasimamia violezo vya OS na maelezo ya kina juu yao.

Kila huduma inaendeshwa kwenye chombo, na wakala wa ujumbe ni "sungura mweupe" - RabbitMQ.

Mfumo huu ulitupa shida isiyotarajiwa.

Na shida ya kwanza haikuchukua muda mrefu kuja tulipojaribu kuunganisha sauti ya ziada kwenye seva. Cinder API ilikataa katakata kutekeleza kazi hii. Kwa usahihi, ikiwa unaamini OpenStack yenyewe, uunganisho umeanzishwa, lakini hakuna kifaa cha disk ndani ya seva ya kawaida.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Tuliamua kuchukua mchepuko na tukaomba kuchukua hatua sawa na API ya Nova. Matokeo yake ni kwamba kifaa kinaunganishwa kwa usahihi na kinaweza kufikiwa ndani ya seva. Inaonekana kwamba tatizo hutokea wakati hifadhi ya kuzuia haijibu Cinder.

Ugumu mwingine ulitungojea wakati wa kufanya kazi na diski. Kiasi cha mfumo hakikuweza kukatwa kutoka kwa seva.

Tena, OpenStack yenyewe "inaapa" kwamba imeharibu uunganisho na sasa unaweza kufanya kazi kwa usahihi na kiasi tofauti. Lakini API kimsingi haikutaka kufanya shughuli kwenye diski.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Hapa tuliamua kutopigana hasa, lakini kubadili mtazamo wetu wa mantiki ya huduma. Ikiwa kuna mfano, lazima pia kuwe na kiasi cha mfumo. Kwa hiyo, mtumiaji bado hawezi kuondoa au kuzima "disk" ya mfumo bila kufuta "seva".

OpenStack ni seti changamano ya mifumo iliyo na mantiki yake ya mwingiliano na API maridadi. Tunasaidiwa na nyaraka za kina na, bila shaka, majaribio na makosa (tungekuwa wapi bila hiyo).

Mtihani kukimbia

Tulifanya uzinduzi wa majaribio mnamo Desemba mwaka jana. Kazi kuu ilikuwa kujaribu mradi wetu katika hali ya mapigano kutoka upande wa kiufundi na kutoka upande wa UX. Hadhira ilialikwa kwa kuchagua na jaribio lilifungwa. Hata hivyo, pia tumeacha chaguo la kuomba ufikiaji wa majaribio kwenye tovuti yetu.

Mtihani yenyewe, kwa kweli, haukuwa bila wakati wake wa kuchekesha, kwa sababu hapa ndipo ujio wetu unaanza.

Kwanza, tulikagua kimakosa maslahi katika mradi na ilibidi tuongeze haraka nodi za kukokotoa wakati wa jaribio. Kesi ya kawaida kwa nguzo, lakini kulikuwa na nuances hapa pia. Nyaraka za toleo maalum la TF zinaonyesha toleo maalum la kernel ambayo kazi na vRouter ilijaribiwa. Tuliamua kuzindua nodi zilizo na kokwa za hivi majuzi zaidi. Matokeo yake, TF haikupokea njia kutoka kwa nodes. Ilinibidi kurudisha punje kwa haraka.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Udadisi mwingine unahusiana na utendakazi wa kitufe cha "badilisha nenosiri" katika akaunti yako ya kibinafsi.

Tuliamua kutumia JWT kupanga ufikiaji wa akaunti yetu ya kibinafsi ili tusifanye kazi na vipindi. Kwa kuwa mifumo ni tofauti na imetawanyika kwa kiasi kikubwa, tunasimamia tokeni yetu wenyewe, ambapo "tunafunga" vipindi kutoka kwa malipo na tokeni kutoka OpenStack. Nenosiri linapobadilishwa, ishara, bila shaka, "inakwenda mbaya", kwani data ya mtumiaji haifai tena na inahitaji kutolewa tena.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk

Tulipoteza mtazamo wa hatua hii, na hakukuwa na rasilimali za kutosha kumaliza kipande hiki haraka. Tulilazimika kukata utendakazi kabla tu ya kuzindua jaribio.
Kwa sasa tunatoka kwa mtumiaji ikiwa nenosiri limebadilishwa.

Licha ya nuances hizi, majaribio yalikwenda vizuri. Katika wiki chache, karibu watu 300 walisimama. Tuliweza kuangalia bidhaa kupitia macho ya watumiaji, kuijaribu kwa vitendo na kukusanya maoni ya ubora wa juu.

Kuendelea

Kwa wengi wetu, huu ni mradi wa kwanza wa kiwango hiki. Tulijifunza mambo kadhaa muhimu kuhusu jinsi ya kufanya kazi kama timu na kufanya maamuzi ya usanifu na kubuni. Jinsi ya kuunganisha mifumo ngumu na rasilimali kidogo na kuiingiza katika uzalishaji.

Bila shaka, kuna kitu cha kufanya kazi kwa wote katika suala la kanuni na katika miingiliano ya ushirikiano wa mfumo. Mradi huo ni mchanga sana, lakini tumejaa matamanio ya kuukuza kuwa huduma ya kuaminika na rahisi.

Tayari tumeweza kushawishi mifumo. Bill hushughulikia kwa uwajibikaji maombi ya kuhesabu, malipo na watumiaji kwenye kabati lake. "Uchawi" wa mashamba ya tungsten hutupatia mawasiliano imara. Na OpenStack pekee wakati mwingine huwa haibadiliki, ikipiga kelele kama vile "'WSREP bado haijatayarisha nodi ya matumizi ya programu." Lakini hiyo ni hadithi tofauti kabisa ...

Hivi majuzi tulizindua huduma.
Unaweza kupata maelezo yote kwenye yetu Online.

Historia ya uundaji wa huduma ya wingu, iliyopendezwa na cyberpunk
Timu ya maendeleo ya CLO

Viungo muhimu

OpenStack

Kitambaa cha Tungsten

Chanzo: mapenzi.com

Kuongeza maoni