Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Gava ku hûn di IT-ê de dixebitin, hûn dest pê dikin ku pergal xwedan karaktera xwe ne. Ew dikarin nerm, bêdeng, eccentric û hişk bin. Ew dikarin bikişîne an jî bikişîne. Bi rengekî din, divê hûn bi wan re "muzakere" bikin, di navbera "xefikan" de manevra bikin û zincîrên têkiliya wan ava bikin.

Ji ber vê yekê me rûmeta avakirina platformek ewr hebû, û ji bo vê yekê me hewce bû ku em çend binesîsteman "qane bikin" ku bi me re bixebitin. Xwezî, me "zimanek API", destên rasterast û gelek dilşewat heye.

Dê ev gotar ji hêla teknîkî ve ne hişk be, lê dê pirsgirêkên ku me di dema avakirina ewr de pê re rû bi rû mane diyar bike. Min biryar da ku ez riya me di forma xeyalek teknîkî ya sivik de vebêjim ka em çawa li zimanek hevpar bi pergalan re geriyam û çi jê derket.

Bi xêr hatî pisîkê.

Destpêka rêwîtiyê

Demek berê, tîmê me ji bo xerîdarên me platformek ewr da destpêkirin. Di hilbijartina teknolojiyên ji bo bicihanîna beşa nermalavê ya karûbarê de piştgirîya rêveberiyê, çavkanî, stûna hardware û azadiya me hebû.

Gelek hewcedarî jî hebûn:

  • karûbar hewceyê hesabek kesane ya hêsan e;
  • platform divê di pergala fatûreya heyî de were yek kirin;
  • nermalava û hardware: OpenStack + Fabric Tungsten (Open Contrail), ku endezyarên me fêr bûne ku pir baş "pijandin".

Ger civata Habra eleqedar be, em ê carek din ji we re vebêjin ka tîm çawa hate berhev kirin, pêwendiya hesabê kesane hate pêşve xistin û biryarên sêwiranê hatin girtin.
Amûrên ku me biryar da ku bikar bînin:

  • Python + Flask + Swagger + SQLAlchemy - komek Python ya bi tevahî standard;
  • Vue.js ji bo pêşiya;
  • Me biryar da ku em têkiliya di navbera pêkhate û karûbaran de bi karanîna Celery li ser AMQP-ê bikin.

Pêşbînkirina pirsên di derbarê hilbijartina Python de, ez ê rave bikim. Ziman di nav şirketa me de cihê xwe dîtiye û çandek piçûk, lê dîsa jî, li dora wî pêş ketiye. Ji ber vê yekê biryar hat girtin ku li ser wê dest bi avakirina xizmetê bikin. Wekî din, leza pêşveçûnê di pirsgirêkên weha de pir caran diyarker e.

Ji ber vê yekê, em dest bi nasîna xwe bikin.

Bill Bêdeng - billing

Em vî zilamî ji mêj ve nas dikin. Ew her tim li kêleka min rûdinişt û bê deng tiştek dihejmart. Carinan wî daxwazên bikarhêner ji me re şandin, fatûreyên xerîdar derxist, û karûbarên rêvebirin. Xortekî asayî yê kedkar. Rast e, zehmetî hebûn. Ew bêdeng e, carinan difikire û pir caran li ser hişê xwe ye.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Billing pergala yekem e ku me hewl da ku pê re hevaltiyê bikin. Û yekem zehmetiya ku em pê re rû bi rû bûn dema ku karûbarên pêvajoyê dikirin.

Mînakî, dema ku tê afirandin an jêbirin, peywirek dikeve rêza fatûreya navxweyî. Bi vî rengî, pergalek xebata asynchronous bi karûbaran re tête bicîh kirin. Ji bo ku em cûreyên karûbarê xwe bişopînin, hewce bû ku em karên xwe "bixin" vê rêzê. Û li vir em ketin pirsgirêkek: nebûna belge.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Li gorî danasîna nermalava API-yê dadbar kirin, hîn jî gengaz e ku em vê pirsgirêkê çareser bikin, lê wextê me tune ku em endezyariya berevajî bikin, ji ber vê yekê me mantiq derxist derve û li ser RabbitMQ rêzek peywirê organîze kir. Operasyonek li ser karûbarek ji hêla xerîdar ve ji hesabê wî yê kesane ve tê destpêkirin, li ser piştê vediguhere "karûbarek" Celery û li milê fatûre û OpenStack tête kirin. Celery ji bo birêvebirina karan, organîzekirina dubareyan û şopandina statûyê pir hêsan dike. Hûn dikarin li ser "kerfes" bêtir bixwînin, mînakî, vir.

Di heman demê de, fatûreya projeyek ku pereyê wê qediya nesekinî. Bi danûstendina bi pêşdebiran re, me fêhm kir ku dema ku statîstîk têne hesibandin (û pêdivî ye ku em tam vî rengî mantiqê bicîh bînin), têkiliyek tevlihev a rêzikên sekinandinê heye. Lê ev model bi rastiyên me re ne baş in. Me di heman demê de ew bi peywirên li ser Celery jî bicîh kir, mantiqa rêveberiya karûbarê berbi aliyê paşîn ve bir.

Her du pirsgirêkên li jor bûn sedem ku kod hinekî bişewite û di pêşerojê de em neçar in ku ji nû ve vegerînin da ku mantiqa xebata bi peywiran re veguhezînin karûbarek cihê. Di heman demê de pêdivî ye ku em hin agahdariya li ser bikarhêner û karûbarên wan di tabloyên xwe de hilînin da ku piştgiriyê bidin vê mantiqê.

Pirsgirêkek din jî bêdengî ye.

Billy bi bêdengî bersiva "Ok" dide hin daxwazên API. Mînakî, dema ku me di dema ceribandinê de dravdana dravdana soz da (bêtir li ser wê paşê). Daxwaz bi awayekî rast hatin bicihanîn û me tu xeletî nedît.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Ez neçar bûm ku dema ku bi pergalê re bi navgîniya UI-yê re dixebitim têketinan bixwînim. Derket holê ku fatûre bixwe daxwazên wekhev pêk tîne, çarçovê li bikarhênerek taybetî diguhezîne, mînakî, admin, wê di parametreya su de derbas dike.

Bi gelemperî, tevî kêmasiyên di belge û kêmasiyên API-ê yên piçûk de, her tişt pir baş derbas bû. Ger hûn fêm bikin ka ew çawa têne saz kirin û li çi digerin jî têketin dikarin di bin barek giran de jî werin xwendin. Struktura databasê xemilandî ye, lê pir mentiqî ye û bi hin awayan jî balkêş e.

Ji ber vê yekê, bi kurtasî, pirsgirêkên sereke yên ku me di qonaxa danûstendinê de pê re rû bi rû ne bi taybetmendiyên pêkanîna pergalek taybetî ve girêdayî ne:

  • "taybetmendiyên" bêbelge yên ku bi vî rengî bandor li me kirin;
  • çavkaniya girtî (billing di C ++ de hatî nivîsandin), di encamê de - ne mimkun e ku pirsgirêka 1 ji bilî "ceribandin û xeletiyê" bi rengek din were çareser kirin.

Xweşbextane, hilber xwedan API-yek pir berfireh e û me jêrpergalên jêrîn di hesabê xweya kesane de yek kirine:

  • Modula piştevaniya teknîkî - daxwazên ji hesabê weya kesane ji bo xerîdarên karûbarê bi zelalî bi "proxy" têne kirin;
  • Modula darayî - dihêle hûn ji xerîdarên heyî re fatûreyan derxînin, nivîsandinê bikin û belgeyên dravdanê çêbikin;
  • Modula kontrolkirina karûbarê - ji bo vê yekê me neçar ma ku rêwerê xwe bicîh bînin. Berfirehbûna pergalê di destên me de lîst û me Billy celebek nû ya karûbarê "hîn kir".
    Ew hinekî tevlihev bû, lê bi rengekî din, ez difikirim ku Billy û ez ê li hev bikin.

Di nav zeviyên tungstenê de dimeşin - Fabric Tungsten

Zeviyên tungstenê bi sedan têlan xemilî ne, bi hezaran bit agahî di wan re derbas dikin. Agahdarî di nav "pakêtan" de têne berhev kirin, têne pars kirin, rêyên tevlihev têne çêkirin, mîna ku bi sêrbaziyê be.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Ev qada pergala duyemîn e ku em neçar bûn ku pê re hevaltiyê bikin - Tungsten Fabric (TF), berê OpenContrail. Erka wê ev e ku meriv alavên torê bi rê ve bibe, ji me re wekî bikarhêneran berhevokek nermalavê peyda bike. TF - SDN, mantiqa tevlihev a xebata bi alavên torê re vedigire. Di derbarê teknolojiyê bixwe de gotarek baş heye, mînakî, vir.

Pergal bi OpenStack-ê (li jêr tê nîqaş kirin) bi pêveka Neutron ve hatî yek kirin.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin
Têkiliya karûbarên OpenStack.

Xortên beşa operasyonan ev sîstem bi me dan naskirin. Em API-ya pergalê bikar tînin da ku stûna torê ya karûbarên xwe birêve bibin. Heya niha ji me re pirsgirêk an nerehetiyên ciddî çênekiriye (ez nikarim ji bo xortên OE biaxivim), lê di têkiliyê de hin xerîbî hene.

Ya yekem bi vî rengî xuya bû: fermanên ku dema ku bi SSH-ê ve girêdide hewce dike ku hejmareke mezin a daneyan ji konsolê nimûne derxîne, tenê pêwendiyê "daleqand", dema ku bi rêya VNC ve her tişt rast xebitî.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Ji bo kesên ku bi pirsgirêkê nizanin, ew pir xweş xuya dike: ls /root rast dixebite, dema ku, mînakî, jorîn bi tevahî "cemidîne". Xweşbextane, me berê jî bi pirsgirêkên bi vî rengî re rû bi rû ma. Biryar hat dayîn ku MTU li ser rêça ji girêkên hesabkirinê berbi routeran ve were verast kirin. Bi awayê, ev ne pirsgirêkek TF ye.

Pirsgirêka din tenê li dora quncikê bû. Di yek kêliyek "xweşik" de, efsûna rêwiyan, mîna wî, winda bû. TF rêvebirina rêveçûna li ser amûran rawestand.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Me ji asta rêveberiyê bi Openstack re xebitî û pişt re derbasî asta bikarhênerê ya pêwîst bû. SDN xuya dike ku qada bikarhênerê ku ji hêla wî ve çalakî têne kirin "direvîne". Rastî ev e ku heman hesabê rêveberê ji bo girêdana TF û OpenStack tê bikar anîn. Di pêngava guheztina bikarhêner de, "efsûn" winda bû. Biryar hat dayîn ku hesabek cûda were çêkirin ku bi pergalê re bixebite. Vê yekê hişt ku em bêyî şikandina fonksiyona entegrasyonê bixebitin.

Silicon Lifeforms - OpenStack

Afirîndarek silîkonek bi şeklê ecêb li nêzî zeviyên tungstenê dijî. Ya herî zêde, ew mîna zarokek mezin xuya dike ku dikare me bi yek çîçekê biperçiqîne, lê ji wî tu êrîşek eşkere tune. Ew naye sedema tirsê, lê mezinahiya wê tirsê diafirîne. Wekî ku tevliheviya tiştên ku li derdorê diqewimin dike.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

OpenStack bingeha platforma me ye.

OpenStack xwedan çend bine-pergalan e, ji wan em niha herî çalak Nova, Glance û Cinder bikar tînin. Her yek ji wan API-ya xwe heye. Nova ji çavkaniyên hesabkirin û çêkirina mînakan berpirsiyar e, Cinder berpirsiyarê birêvebirina cild û dîmenên wan e, Glance karûbarek wêneyê ye ku şablonên OS û metaformasyonê li ser wan birêve dibe.

Her karûbar di konteynirekê de dimeşe, û brokera peyamê "kevirê spî" ye - RabbitMQ.

Vê pergalê tengasiya herî neçaverêkirî da me.

Û gava ku me hewl da ku volqeyek zêde bi serverê ve girêbide, pirsgirêka yekem pir dirêj nebû. Cinder API bi tundî red kir ku vî karî bike. Zêdetir, heke hûn bi xwe OpenStack bawer dikin, pêwendiyek saz bûye, lê di hundurê servera virtual de amûrek dîskê tune.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Me biryar da ku em rêve bibin û heman çalakiyê ji Nova API-yê daxwaz kir. Encam ev e ku cîhaz rast girêdide û di nav serverê de tê gihîştin. Wusa dixuye ku pirsgirêk çêdibe dema ku hilanînê-blok bersivê nade Cinder.

Dema ku bi dîskan re dixebitin zehmetiyek din li benda me bû. Hêjmara pergalê ji pêşkêşkarê nayê qut kirin.

Dîsa, OpenStack bixwe "sond dixwe" ku wê pêwendiyê xera kiriye û naha hûn dikarin bi rast bi volmê veqetandî bixebitin. Lê API bi kategorî nexwest ku li ser dîskê operasyonan bike.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Li vir me biryar da ku em bi taybetî şer nekin, lê nêrîna xwe ya li ser mantiqa karûbarê biguhezînin. Ger mînakek hebe, divê hêjmarek pergalê jî hebe. Ji ber vê yekê, bikarhêner hêj nikare bêyî jêbirina "pêşkêşkarê" pergala "dîskê" jê bike an neçalak bike.

OpenStack bi mantiqa xweya danûstendinê û API-ya xweya xemilandî komek pergalên pir tevlihev e. Ji me re ji hêla belgeyên berbiçav ên berbiçav û, bê guman, ceribandin û xeletî (em ê bêyî wê li ku derê bûn) alîkariya me dike.

Testê meşandin

Me di Kanûna sala borî de destpêkirina ceribandinê pêk anî. Karê sereke ceribandina projeya me di moda şer de ji hêla teknîkî û ji hêla UX ve bû. Temaşevan bi awayekî bijartî hatin vexwendin û ceribandin girtî bû. Lêbelê, me vebijarkek jî hişt ku em li ser malpera xwe bigihîjin ceribandinê daxwaz bikin.

Ceribandin bixwe, bê guman, ne bê kêliyên xwe yên xweş bû, ji ber ku li vir serpêhatiyên me nû dest pê dikin.

Ya yekem, me hinekî xelet eleqeya projeyê nirxand û neçar ma ku di dema ceribandinê de zû girêkên hesabkirinê zêde bikin. Bûyerek hevpar ji bo komekê, lê li vir jî hin nuwaze hebûn. Belgekirin ji bo guhertoyek taybetî ya TF guhertoya taybetî ya kernelê ya ku xebata bi vRouter re li ser hatî ceribandin destnîşan dike. Me biryar da ku girêkên bi kernelên nûtir dest pê bikin. Wekî encamek, TF rê ji girêkan wernegirt. Diviya bû ku ez bi lez û bez kernel paşve bixim.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Meraqek din bi fonksiyona bişkoja "guhertina şîfreyê" ya di hesabê weya kesane de têkildar e.

Me biryar da ku JWT bikar bînin da ku gihîştina hesabê xweya kesane organîze bikin da ku bi danişînan re nexebitin. Ji ber ku pergal cihêreng in û bi berfirehî belav bûne, em tokena xwe bi rê ve dibin, ku tê de em danişînan ji fatûreyê û nîşanek ji OpenStack-ê "pêç dikin". Dema ku şîfre tê guheztin, bê guman, token "xirab dibe", ji ber ku daneyên bikarhêner êdî ne derbasdar e û pêdivî ye ku ew ji nû ve were weşandin.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin

Me çavê xwe ji vê xalê winda kir, û tenê çavkaniyên têr tune bûn ku bi lez vê perçeyê biqedînin. Me neçar ma ku berî destpêkirina ceribandinê fonksiyonê qut bikin.
Heya nuha, heke şîfre hatibe guhertin, em ji bikarhênerê derdixin.

Tevî van nuwazeyan, ceribandin baş derbas bû. Di nav çend hefteyan de, nêzîkî 300 kes li wir rawestiyan. Me karî bi çavên bikarhêneran li hilberê binihêrin, wê di çalakiyê de ceribandin û bertekên kalîteya bilind berhev bikin.

Pêdivî ye

Ji bo gelek ji me, ev projeya yekem a vê pîvanê ye. Em fêrî çend dersên hêja bûn ka meriv çawa wekî tîmek xebitîn û biryarên mîmarî û sêwiranê digirin. Meriv çawa pergalên tevlihev ên bi çavkaniyên hindik re yek dike û wan di hilberînê de vedihewîne.

Bê guman, tiştek heye ku hem di warê kodê de û hem jî di navberên yekbûna pergalê de li ser bixebite. Proje pir ciwan e, lê em tijî ambargo ne ku wê berbi karûbarek pêbawer û hêsan mezin bikin.

Me berê jî karîbû pergalan razî bikin. Bill di dolaba xwe de hejmartin, hesabkirin û daxwazên bikarhêneran bi duristî dike. "Sêrbaziya" zeviyên tungsten ji me re danûstendina domdar peyda dike. Û tenê OpenStack carinan bi qîmet dibe, diqîre tiştek wekî "'WSREP hîna girêk ji bo karanîna serîlêdanê amade nekiriye." Lê ew çîrokek bi tevahî cûda ye ...

Me vê dawiyê xizmet da destpêkirin.
Hûn dikarin hemî hûrguliyan li ser me bibînin malperê.

Dîroka afirandina karûbarek ewr, ku bi cyberpunk ve hatî xweş kirin
Tîma Pêşveçûna CLO

Girêdanên bikarhêner

OpenStack

Fabric Tungsten

Source: www.habr.com

Add a comment