Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

ʻAʻole he moʻolelo mua ka ʻaha Habr. Ma mua, ua paʻa mākou i nā hanana Toaster nui no 300-400 poʻe, akā i kēia manawa ua hoʻoholo mākou e pili ana nā hālāwai thematic liʻiliʻi, ke kuhikuhi e hiki ai iā ʻoe ke hoʻonohonoho, no ka laʻana, i nā ʻōlelo. Ua mālama ʻia ka ʻaha kūkā mua o kēia ʻano i Iulai a ua hoʻolaʻa ʻia no ka hoʻomohala ʻana i hope. Ua hoʻolohe nā mea komo i nā hōʻike e pili ana i nā hiʻohiʻona o ka hoʻololi ʻana mai ka backend i ML a e pili ana i ka hoʻolālā ʻana o ka lawelawe Quadrupel ma ka portal State Services, a ua komo pū kekahi i kahi papa ʻaina i hoʻolaʻa ʻia no Serverless. No ka poʻe i hiki ʻole ke hele kino i ka hanana, ma kēia pou ke haʻi aku nei mākou iā ʻoe i nā mea hoihoi loa.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

Mai ka hoʻomohala ʻana i hope a hiki i ke aʻo ʻana i ka mīkini

He aha ka hana a nā ʻenekinia data ma ML? Pehea nā hana a kahi mea hoʻomohala hope a me kahi ʻenekini ML e like a ʻokoʻa? He aha ke ala āu e pono ai e hoʻololi i kāu ʻoihana mua i kāu ʻoihana lua? Ua haʻi ʻia kēia e Alexander Parinov, ka mea i hele i ke aʻo mīkini ma hope o 10 mau makahiki o ka hana hope.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr
Alexander Parinov

I kēia lā, hana ʻo Alexander ma ke ʻano he mea hoʻolālā ʻōnaehana ʻike kamepiula ma X5 Retail Group a hāʻawi i nā papahana Open Source e pili ana i ka ʻike kamepiula a me ke aʻo hohonu (github.com/creafz). Ua hoʻopaʻa ʻia kona mau mākau e kona komo ʻana i ka 100 kiʻekiʻe o ka honua o Kaggle Master (kaggle.com/creafz), ke kahua kaulana loa no nā hoʻokūkū aʻo mīkini.

No ke aha e hoʻololi ai i ke aʻo ʻana i ka mīkini

Hoʻokahi makahiki a me ka hapa i hala aku nei, ua wehewehe ʻo Jeff Dean, ke poʻo o Google Brain, ka papahana noiʻi hoʻonaʻauao hoʻonaʻauao hohonu a Google, pehea i pani ʻia ai ka hapalua miliona mau laina code ma Google Translate e kahi pūnaewele neural Tensor Flow nona nā laina 500 wale nō. Ma hope o ka hoʻomaʻamaʻa ʻana i ka pūnaewele, ua hoʻonui ka maikaʻi o ka ʻikepili a ua maʻalahi ka ʻōnaehana. Me he mea lā ʻo ko mākou wā e hiki mai ana: ʻaʻole pono mākou e kākau i nā code, ua lawa ia e hana i nā neurons a hoʻopiha iā lākou me ka ʻikepili. Akā ma ka hoʻomaʻamaʻa, ʻoi aku ka paʻakikī o nā mea a pau.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrʻOihana ML ma Google

He ʻāpana liʻiliʻi wale nō nā ʻupena neural o ka ʻōnaehana (ka ʻāpana ʻeleʻele liʻiliʻi ma ke kiʻi ma luna). Pono nā ʻōnaehana kōkua hou aku e loaʻa i ka ʻikepili, kaʻina hana, mālama iā ia, nānā i ka maikaʻi, a me nā mea ʻē aʻe, pono mākou i nā ʻōnaehana no ka hoʻomaʻamaʻa ʻana, ke kau ʻana i ka code aʻo mīkini i ka hana ʻana, a me ka hoʻāʻo ʻana i kēia code. Ua like like kēia mau hana a pau me ka hana a nā mea hoʻomohala backend.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrKaʻina aʻo mīkini

He aha ka ʻokoʻa ma waena o ML a me backend?

Ma ka papahana maʻamau, kākau mākou i nā code a kuhikuhi kēia i ke ʻano o ka papahana. Ma ML, loaʻa iā mākou kahi code liʻiliʻi liʻiliʻi a me ka nui o nā ʻikepili a mākou e hoʻolei i ke kumu hoʻohālike. He mea koʻikoʻi ka ʻikepili ma ML: ʻo ke kumu hoʻohālike i aʻo ʻia ma nā ʻikepili like ʻole hiki ke hōʻike i nā hopena ʻokoʻa loa. ʻO ka pilikia, ʻo ka ʻikepili e ʻaneʻane hoʻopuehu a mālama ʻia i nā ʻōnaehana like ʻole (nā ʻikepili pili, nā waihona NoSQL, nā moʻolelo, nā faila).

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrHoʻololi ʻikepili

Pono ʻo ML i ka hoʻololi ʻana ʻaʻole wale i ke code, e like me ka hoʻomohala maʻamau, akā ʻo ka ʻikepili pū kekahi: pono e hoʻomaopopo pono i ka mea i aʻo ʻia ai ke kumu hoʻohālike. No ka hana ʻana i kēia, hiki iā ʻoe ke hoʻohana i ka waihona ʻike kaulana ʻo Data Science Version Control (dvc.org).

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr
Hōʻailona ʻikepili

ʻO ka hana aʻe ʻo ka hōʻailona ʻikepili. No ka laʻana, e kaha i nā mea a pau o ke kiʻi a i ʻole e haʻi i ka papa hea ia. Hana ʻia kēia e nā lawelawe kūikawā e like me Yandex.Toloka, ka hana me ka maʻalahi loa i ka loaʻa ʻana o kahi API. Piʻi ka pilikia ma muli o ka "human factor": hiki iā ʻoe ke hoʻomaikaʻi i ka maikaʻi o ka ʻikepili a hōʻemi i nā hewa i ka liʻiliʻi ma o ka hāʻawi ʻana i ka hana like i kekahi mau mea hana.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrʻIke ʻia ma ka Papa Tensor

Pono e hoʻopaʻa inoa i nā hoʻokolohua e hoʻohālikelike i nā hopena a koho i ke kumu hoʻohālike maikaʻi loa e pili ana i kekahi mau ana. Aia ka nui o nā mea hana no ka nānā ʻana - no ka laʻana, Tensor Board. Akā ʻaʻohe ala kūpono e mālama ai i nā hoʻokolohua. Hoʻohana pinepine nā kamaliʻi liʻiliʻi me kahi pālahalaha Excel, aʻo nā mea nui e hoʻohana i nā paepae kūikawā no ka mālama ʻana i nā hopena i kahi waihona.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrNui nā paepae no ke aʻo ʻana i ka mīkini, akā ʻaʻohe o lākou e uhi i ka 70% o nā pono

ʻO ka pilikia mua e kū ai i ka wā e hoʻokomo ai i kahi kumu hoʻohālike i hoʻomaʻamaʻa ʻia e pili ana i ka mea paahana punahele o nā ʻepekema data - Jupyter Notebook. ʻAʻohe modularity i loko o ia mea, ʻo ia hoʻi, ʻo ka hoʻopuka ʻana he "footcloth" o ke code ʻaʻole i māhele ʻia i nā ʻāpana logical - modules. Hoʻohui ʻia nā mea a pau: nā papa, nā hana, nā hoʻonohonoho, a me nā mea ʻē aʻe. He paʻakikī kēia code i ka mana a me ka hoʻāʻo.

Pehea e hana ai me keia? Hiki iā ʻoe ke haʻalele iā ʻoe iho, e like me Netflix, a hana i kāu kahua ponoʻī e hiki ai iā ʻoe ke hoʻomaka pololei i kēia mau kamepiula i ka hana ʻana, e hoʻoili i ka ʻikepili iā lākou ma ke ʻano he hoʻokomo a loaʻa nā hopena. Hiki iā ʻoe ke hoʻoikaika i nā mea hoʻomohala e ʻōwili nei i ke kumu hoʻohālike i ka hana e kākau hou i ke code maʻamau, e wāwahi iā ia i loko o nā modula. Akā me kēia ala e maʻalahi ke hana hewa, a ʻaʻole e hana ke kumu hoʻohālike e like me ka mea i manaʻo ʻia. No laila, ʻo ka koho kūpono e pāpā i ka hoʻohana ʻana iā Jupyter Notebook no ke code model. Inā, ʻoiaʻiʻo, ʻae nā ʻepekema data i kēia.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrHoʻohālike e like me ka pahu ʻeleʻele

ʻO ke ala maʻalahi loa e hoʻokomo i kahi hoʻohālike i ka hana ʻana ʻo ia ka hoʻohana ʻana iā ia ma ke ʻano he pahu ʻeleʻele. Loaʻa iā ʻoe kekahi ʻano papa hoʻohālike, ua hāʻawi ʻia iā ʻoe i nā kaupaona o ke kumu hoʻohālike (nā ʻāpana o nā neurons o ka pūnaewele i aʻo ʻia), a inā ʻoe e hoʻomaka i kēia papa (e kāhea i ke ʻano wānana, hānai iā ia i ke kiʻi), e loaʻa iā ʻoe kekahi. wānana ma ke ʻano he puka. ʻAʻole pili ka mea i loko.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr
E hoʻokaʻawale i ke kaʻina kikowaena me ke kumu hoʻohālike

Hiki iā ʻoe ke hoʻāla i kahi kaʻina hana kaʻawale a hoʻouna iā ia ma o ka RPC queue (me nā kiʻi a i ʻole nā ​​​​ʻikepili kumu ʻē aʻe. Ma ka hopena e loaʻa iā mākou nā wānana.

ʻO kahi laʻana o ka hoʻohana ʻana i kahi kumu hoʻohālike ma Flask:

@app.route("/predict", methods=["POST"])
def predict():
image = flask.request.files["image"].read()
image = preprocess_image(image)
predictions = model.predict(image)
return jsonify_prediction(predictions)

ʻO ka pilikia me kēia ala ka palena o ka hana. E ʻōlelo kākou ua loaʻa iā mākou ke code Phyton i kākau ʻia e nā ʻepekema data lohi, a makemake mākou e ʻoki i ka hana kiʻekiʻe. No ka hana ʻana i kēia, hiki iā ʻoe ke hoʻohana i nā mea hana e hoʻololi i ke code i ʻōiwi a i ʻole e hoʻololi iā ia i kahi ʻano hana ʻē aʻe i hoʻohālikelike ʻia no ka hana ʻana. Aia nā mea hana no kēlā me kēia ʻano, akā ʻaʻohe mea kūpono; pono ʻoe e hoʻohui iā ʻoe iho.

ʻO ka ʻōnaehana ma ML e like me ka backend maʻamau. Aia nā Docker a me nā Kubernetes, no Docker wale nō ʻoe e hoʻokomo i ka runtime mai NVIDIA, e hiki ai i nā kaʻina hana i loko o ka pahu ke komo i nā kāleka wikiō i ka host. Pono ʻo Kubernetes i kahi plugin i hiki iā ia ke hoʻokele i nā kikowaena me nā kāleka wikiō.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

ʻAʻole like me ka papahana maʻamau, ma ka hihia o ML he nui nā mea neʻe like ʻole i ka ʻōnaehana pono e nānā a hoʻāʻo ʻia - no ka laʻana, code processing data, pipeline training model and production (e nānā i ke kiʻi ma luna). He mea nui e ho'āʻo i ke code e hoʻohui i nā ʻāpana like ʻole o nā paipu: nui nā ʻāpana, a ulu pinepine nā pilikia ma nā palena module.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr
Pehea e hana ai ʻo AutoML

Hoʻohiki nā lawelawe AutoML e koho i ke kumu hoʻohālike maikaʻi loa no kāu mau kumu a hoʻomaʻamaʻa iā ia. Akā pono ʻoe e hoʻomaopopo: he mea koʻikoʻi ka ʻikepili i ka ML, pili ka hopena i kāna hoʻomākaukau. Hana ʻia ka markup e ka poʻe, i piha i nā hewa. Me ka ʻole o ka mana koʻikoʻi, he ʻōpala paha ka hopena, a ʻaʻole hiki ke hoʻokaʻawale i ke kaʻina hana; pono e hōʻoia ʻia e nā loea - ʻepekema data. ʻO kēia kahi e haki ai ʻo AutoML. Akā hiki ke hoʻohana i ke koho ʻana i kahi hoʻolālā - ke hoʻomākaukau mua ʻoe i ka ʻikepili a makemake ʻoe e holo i nā ʻano hoʻokolohua e ʻike i ke kumu hoʻohālike maikaʻi loa.

Pehea e komo ai i ke aʻo ʻana i ka mīkini

ʻO ke ala maʻalahi loa e komo ai i ka ML inā ʻoe e hoʻomohala ma Python, kahi i hoʻohana ʻia i nā ʻōnaehana aʻo hohonu āpau (a me nā frameworks maʻamau). Pono kēia ʻōlelo no kēia ʻano hana. Hoʻohana ʻia ʻo C++ no kekahi mau hana ʻike kamepiula, no ka laʻana, i nā ʻōnaehana hoʻokele no nā kaʻa kaʻa ponoʻī. JavaScript a me Shell - no ka nānā ʻana a me nā mea ʻē aʻe e like me ka holo ʻana i kahi neuron ma ka polokalamu kele pūnaewele. Hoʻohana ʻia ʻo Java a me Scala i ka hana ʻana me Big Data a no ke aʻo ʻana i ka mīkini. Aloha ʻia ʻo R lāua ʻo Julia e ka poʻe e aʻo ana i ka helu makemakika.

ʻO ke ala maʻalahi loa e loaʻa ai ka ʻike kūpono e hoʻomaka ai ma Kaggle; ʻo ke komo ʻana i kekahi o nā hoʻokūkū o ke kahua e hāʻawi aku i hoʻokahi makahiki o ke aʻo ʻana i ke kumumanaʻo. Ma kēia kahua hiki iā ʻoe ke lawe i ka code i hoʻouna ʻia a ʻōlelo ʻia a hoʻāʻo e hoʻomaikaʻi, e hoʻomaikaʻi iā ia no kāu mau kumu. Bonus - pili kāu kūlana Kaggle i kāu uku.

ʻO kahi koho ʻē aʻe e hui pū me ka hui ML ma ke ʻano he mea hoʻomohala hope. Nui nā hoʻomaka aʻo mīkini kahi e loaʻa ai ka ʻike ma ke kōkua ʻana i kāu mau hoa hana e hoʻoponopono i kā lākou pilikia. ʻO ka hope, hiki iā ʻoe ke hui pū me kekahi o nā kaiāulu ʻepekema data - Open Data Science (ods.ai) a me nā mea ʻē aʻe.

Ua hoʻopuka ka mea haʻiʻōlelo i ka ʻike hou aku e pili ana i ke kumuhana ma ka loulou https://bit.ly/backend-to-ml

"Quadrupel" - kahi lawelawe o nā leka hoʻomaopopo o ka portal "State Services"

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrEvgeny Smirnov

ʻO ka mea haʻi'ōlelo aʻe, ʻo ia ke poʻo o ke keʻena hoʻomohala hoʻomohala e-government, ʻo Evgeny Smirnov, nāna i kamaʻilio e pili ana iā Quadruple. ʻO kēia kahi lawelawe hoʻolaha i manaʻo ʻia no ka portal Gosuslugi (gosuslugi.ru), ka punawai aupuni i kipa nui ʻia ma ka Runet. ʻO 2,6 miliona ka poʻe i kēlā me kēia lā, ma ka huina he 90 miliona mau mea hoʻohana i hoʻopaʻa inoa ʻia ma ka pūnaewele, kahi o 60 miliona i hōʻoia ʻia. ʻO ka ukana ma ka portal API he 30 tausani RPS.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habrʻenehana i hoʻohana ʻia ma ka hope o nā lawelawe Mokuʻāina

ʻO "Quadrupel" kahi lawelawe hoʻolaha i manaʻo ʻia, me ke kōkua o ka mea hoʻohana e loaʻa i kahi hāʻawi no kahi lawelawe i ka manawa kūpono loa iā ia ma ka hoʻonohonoho ʻana i nā lula hoʻolaha kūikawā. ʻO nā koi nui i ka hoʻomohala ʻana i ka lawelawe ʻo nā hoʻonohonoho maʻalahi a me ka manawa kūpono no nā leka uila.

Pehea ka hana ʻana o Quadrupel?

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

Hōʻike ka kiʻi ma luna nei i kekahi o nā lula o ka hana o ka Quadrupel e hoʻohana ana i ka laʻana o kahi kūlana me ka pono e pani i kahi laikini kaʻa. ʻO ka mea mua, ʻimi ka lawelawe i nā mea hoʻohana i pau ka lā pau i hoʻokahi mahina. Hōʻike ʻia lākou i kahi hae me kahi hāʻawi e loaʻa i ka lawelawe kūpono a hoʻouna ʻia kahi leka ma ka leka uila. No kēlā mau mea hoʻohana i pau ka lā palena, hoʻololi ka hae a me ka leka uila. Ma hope o ka hoʻololi kūleʻa o nā kuleana, loaʻa ka mea hoʻohana i nā leka ʻē aʻe - me kahi manaʻo e hoʻonui i ka ʻikepili i ka ʻike.

Mai kahi ʻike loea, he mau palapala groovy kēia i kākau ʻia ai ke code. He ʻikepili ka mea hoʻokomo, he ʻoiaʻiʻo/hewa ka hoʻopuka, hoʻohālikelike ʻia/ʻaʻole i kūlike. Aia ma mua o 50 mau lula i ka huina - mai ka hoʻoholo ʻana i ka lā hānau o ka mea hoʻohana (ua like ka lā o kēia manawa me ka lā hānau o ka mea hoʻohana) i nā kūlana paʻakikī. I kēlā me kēia lā, ʻike ʻia kēia mau lula e pili ana i hoʻokahi miliona mau pāʻani-nā poʻe pono e hoʻomaopopo ʻia.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai HabrNā ala hoʻolaha quadrupel

Ma lalo o ka puʻupuʻu o Quadrupel aia kahi waihona kahi i mālama ʻia ai ka ʻikepili mea hoʻohana, a ʻekolu mau noi: 

  • Hana i manaʻo ʻia no ka hoʻonui ʻana i ka ʻikepili.
  • Hoʻomaha API kiʻi a hāʻawi i nā hae iā lākou iho i ka portal a me ka noi kelepona.
  • Hoʻomākaukau hoʻomaka ka hana ma ka helu hou ʻana i nā hae a i ʻole nā ​​leka uila.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

No ka hōʻano hou ʻana i ka ʻikepili, hoʻokele hanana ka backend. ʻElua mau kikowaena - hoʻomaha a i ʻole JMS. Nui nā hanana; ma mua o ka mālama ʻana a me ka hana ʻana, ua hōʻuluʻulu ʻia lākou i ʻole e hana i nā noi pono ʻole. ʻO ka waihonaʻikepili pono'ī, ka papaʻaina kahi i mālamaʻia ai kaʻikepili, e like me ka hale kūʻai waiwai nui - ke kī o ka mea hoʻohana a me ka waiwai pono'ī: nā hae e hōʻike ana i ka heleʻana a iʻole ka nele o nā palapala kūpono, ko lākou manawa kūpono, nā helu helu ma ke kauoha o nā lawelawe e. keia mea hoohana, a pela aku.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

Ma hope o ka mālama ʻana i ka ʻikepili, hoʻonohonoho ʻia kahi hana ma JMS i helu koke ʻia nā hae - pono e hōʻike koke ʻia kēia ma ka pūnaewele. Hoʻomaka ka ʻōnaehana i ka pō: hoʻolei ʻia nā hana i loko o JMS i nā manawa hoʻohana, e like me ka mea e pono ai e helu hou ʻia nā lula. Lawe ʻia kēia e nā mea hana i komo i ka helu hou ʻana. Ma hope aʻe, hele nā ​​​​hopena hana i ka pila aʻe, nāna e mālama i nā hae i ka waihona a hoʻouna paha i nā hana hoʻolaha mea hoʻohana i ka lawelawe. ʻO ke kaʻina hana he 5-7 mau hola, hiki ke maʻalahi ma muli o ka hiki iā ʻoe ke hoʻohui mau i nā mea lima a i ʻole e hoʻonui i nā manawa me nā mea lima hou.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

Hana maikaʻi ka lawelawe. Akā ke ulu nei ka nui o ka ʻikepili i ka nui o nā mea hoʻohana. Ke alakaʻi nei kēia i ka hoʻonui ʻana i ka ukana ma ka waihona - ʻoiai e noʻonoʻo ana i ka nānā ʻana o ka Rest API i ke kope. ʻO ka helu ʻelua ʻo JMS, ʻo ia hoʻi, ʻaʻole kūpono loa ia ma muli o kona hoʻohana ʻana i ka hoʻomanaʻo kiʻekiʻe. Loaʻa ka pilikia nui o ke kahe ʻana o ka pila e hāʻule ai ʻo JMS a pau ka hana ʻana. ʻAʻole hiki ke hoʻokiʻekiʻe iā JMS ma hope o kēia me ka holoi ʻole ʻana i nā lāʻau.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

Hoʻolālā ʻia e hoʻoponopono i nā pilikia me ka hoʻohana ʻana i ka sharding, e ʻae ai i ke kaupaona ʻana i ka ukana ma ka waihona. Aia kekahi hoʻolālā e hoʻololi i ka papahana mālama ʻikepili, a hoʻololi iā JMS iā Kafka - kahi ʻoi aku ka hoʻomanawanui hewa e hoʻonā i nā pilikia hoʻomanaʻo.

Backend-like-a-Lawa vs. Serverless

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr
Mai ka hema a i ka ʻākau: Alexander Borgart, Andrey Tomilenko, Nikolay Markov, Ara Israelyan

Backend ma ke ʻano he lawelawe a i ʻole Serverless solution? ʻO nā poʻe i komo i ke kūkākūkā o kēia pilikia koʻikoʻi ma ka papa ʻaina:

  • Ara Israelyan, CTO CTO a me ka mea hoʻokumu o Scorocode.
  • ʻO Nikolay Markov, Luna Nui ʻIkepili ma Aligned Research Group.
  • Andrey Tomilenko, ke poʻo o ke keʻena hoʻomohala RUVDS. 

Ua hoʻoponopono ʻia ke kamaʻilio e ka mea hoʻomohala kiʻekiʻe ʻo Alexander Borgart. Hōʻike mākou i nā hoʻopaʻapaʻa i komo pū ai ka poʻe hoʻolohe, ma kahi ʻano pōkole.

— He aha ka Serverless i kou ʻike?

Andrei: He kumu hoʻohālikelike kēia - he hana Lambda pono e hoʻoponopono i ka ʻikepili i hilinaʻi wale ka hopena i ka ʻikepili. Ua hele mai ka huaʻōlelo mai Google a mai Amazon a me kāna lawelawe AWS Lambda. ʻOi aku ka maʻalahi o ka mea hāʻawi i ka lawelawe ʻana i ia hana ma o ka hoʻokaʻawale ʻana i kahi wai o ka mana no ia. Hiki ke helu kūʻokoʻa nā mea hoʻohana like ʻole ma nā kikowaena like.
Nikolai: No ka maʻalahi, ke hoʻololi nei mākou i kekahi ʻāpana o kā mākou ʻenehana IT a me ka loiloi ʻoihana i ke ao, i ka outsourcing.
Makaw: Ma kaʻaoʻao o nā mea hoʻolālā - he ho'āʻo maikaʻi e mālama i nā kumuwaiwai, ma kaʻaoʻao o nā mea kūʻai - e loaʻa kālā hou.

— Ua like anei ka Serverless me ka microservices?

Nikolai: ʻAʻole, Serverless ʻoi aku ka nui o kahi hui hoʻolālā. ʻO kahi microservice kahi ʻāpana atomika o kekahi loina. ʻO ka serverless kahi ala, ʻaʻole he "hui kaʻawale."
Makaw: Hiki ke hoʻopili ʻia kahi hana Serverless i loko o kahi microservice, akā ʻaʻole e lilo kēia i Serverless, e pau ia i kahi hana Lambda. Ma Serverless, hoʻomaka wale kahi hana i ka manawa i noi ʻia.
Andrei: He ʻokoʻa ko lākou ola ʻana. Hoʻomaka mākou i ka hana Lambda a poina iā ia. Ua hana ia no ʻelua mau kekona, a hiki i ka mea kūʻai aku ke hana i kāna noi ma kahi mīkini kino ʻē aʻe.

— ʻO wai ka ʻoi aku ka maikaʻi?

Makaw: I ka hoʻonui ʻia ʻana ma ka ʻaoʻao, ʻano like nā hana Lambda me nā microservices.
Nikolai: ʻO kēlā me kēia helu o nā replicas āu e hoʻonoho ai, e like me ka nui o lākou; ʻAʻohe pilikia o Serverless me ka scaling. Ua hana au i kahi kope ma Kubernetes, ua hoʻokuʻu ʻia he 20 mau manawa "kahi", a ua hoʻihoʻi ʻia nā loulou inoa ʻole 20 iā ʻoe. Imua!

— Hiki paha ke kākau i kahi hope ma Serverless?

Andrei: ʻO ka manaʻo, akā ʻaʻohe manaʻo. E hilinaʻi nā hana Lambda i kahi waihona hoʻokahi - pono mākou e hōʻoia i ka hōʻoia. No ka laʻana, inā ua hana ka mea hoʻohana i kekahi kālepa, a laila i ka manawa aʻe e hoʻopili ai ʻo ia e ʻike: ua hana ʻia ke kālepa, ua hōʻaiʻē ʻia ke kālā. E ālai ʻia nā hana Lambda a pau ma kēia kelepona. ʻO ka ʻoiaʻiʻo, e hoʻohuli ʻia kahi pūʻulu o Serverless i hoʻokahi lawelawe me hoʻokahi wahi bottleneck i ka waihona.

— I loko o nā kūlana hea e kūpono ai ka hoʻohana ʻana i ka hale hana serverless?

Andrei: Nā hana i koi ʻole i ka mālama like ʻana - ka mining like, blockchain. Ma kahi e pono ai ʻoe e hana i nā helu he nui. Inā he nui kou mana helu, a laila hiki iā ʻoe ke wehewehe i kahi hana e like me "heluhelu i ka hash o kahi mea ma laila ..." Akā hiki iā ʻoe ke hoʻoponopono i ka pilikia me ka mālama ʻana i ka ʻikepili ma o ka lawe ʻana, no ka laʻana, nā hana Lambda mai Amazon a me kā lākou puʻupuʻu puʻupuʻu. . A ua ʻike ʻia ke kākau nei ʻoe i kahi lawelawe maʻamau. Hiki i nā hana Lambda ke komo i ka waihona a hāʻawi i kekahi ʻano pane i ka mea hoʻohana.
Nikolai: ʻO nā pahu e holo ana ma Serverless he palena loa i nā kumuwaiwai. He liʻiliʻi ka hoʻomanaʻo a me nā mea ʻē aʻe. Akā inā e kau ʻia kāu ʻōnaehana holoʻokoʻa ma luna o kekahi ao - Google, Amazon - a loaʻa iā ʻoe kahi ʻaelike mau me lākou, aia kahi kālā no kēia mau mea āpau, a laila no kekahi mau hana hiki iā ʻoe ke hoʻohana i nā pahu Serverless. Pono e noho i loko o kēia ʻenehana, no ka mea, ua hoʻohālikelike ʻia nā mea āpau no ka hoʻohana ʻana i kahi ʻano kikoʻī. ʻO ia hoʻi, inā ua mākaukau ʻoe e hoʻopaʻa i nā mea āpau i ka ʻōnaehana kapua, hiki iā ʻoe ke hoʻokolohua. ʻO ka pōmaikaʻi ʻaʻole pono ʻoe e hoʻokele i kēia ʻōnaehana.
Makaw: ʻO ka ʻoiaʻiʻo ʻaʻole koi ʻo Serverless iā ʻoe e hoʻokele iā Kubernetes, Docker, hoʻokomo iā Kafka, a pēlā aku ka hoʻopunipuni pilikino. ʻO ka Amazon a me Google ke kau nei i kēia. ʻO kekahi mea ʻē aʻe he SLA kāu. Hiki iā ʻoe ke hoʻopuka i nā mea āpau ma mua o ka hoʻopili ʻana iā ʻoe iho.
Andrei: ʻAʻole kūʻai aku ʻo Serverless ponoʻī, akā pono ʻoe e uku nui no nā lawelawe Amazon ʻē aʻe - no ka laʻana, ka waihona. Ua hoʻopiʻi mua nā kānaka iā lākou no ka mea ua hoʻopiʻi lākou i nā kālā he nui no ka puka API.
Makaw: Inā mākou e kamaʻilio e pili ana i ke kālā, a laila pono ʻoe e noʻonoʻo i kēia wahi: pono ʻoe e hoʻohuli i ka ʻōnaehana hoʻomohala holoʻokoʻa i ka hui 180 degere i mea e hoʻololi ai i nā code āpau i Serverless. He nui ka manawa a me ke kālā.

— Aia kekahi mau koho kūpono no ka uku ʻole ʻo Serverless mai Amazon a me Google?

Nikolai: Ma Kubernetes, hoʻomaka ʻoe i kekahi ʻano hana, holo a make - ʻaʻohe Serverless kēia mai kahi manaʻo hoʻolālā. Inā makemake ʻoe e hana i ka loiloi pāʻoihana hoihoi loa me nā queues a me nā waihona, a laila pono ʻoe e noʻonoʻo hou aʻe e pili ana iā ia. Hiki ke hoʻoholo i kēia me ka haʻalele ʻole iā Kubernetes. ʻAʻole au makemake e huki i nā hoʻokō hou.

— Pehea ka nui o ka nānā ʻana i nā mea e hana nei ma Serverless?

Makaw: Ma muli o ka hoʻolālā ʻōnaehana a me nā koi ʻoihana. ʻO ka mea nui, pono e hāʻawi ka mea hāʻawi i ka hōʻike e kōkua i ka hui devops e hoʻomaopopo i nā pilikia hiki.
Nikolai: Aia ʻo Amazon iā CloudWatch, kahi e hoʻoheheʻe ʻia ai nā lāʻau a pau, me nā mea mai Lambda. Hoʻohui i ka log forwarding a hoʻohana i kahi mea hana kaʻawale no ka nānā ʻana, makaʻala, a pēlā aku. Hiki iā ʻoe ke hoʻokomo i nā mea hana i loko o nā ipu āu e hoʻomaka ai.

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

- E hōʻuluʻulu kāua.

Andrei: Pono ka noʻonoʻo ʻana i nā hana Lambda. Inā hana ʻoe i kahi lawelawe ma kāu iho - ʻaʻole kahi microservice, akā ʻo ka mea kākau i kahi noi, komo i ka waihona a hoʻouna i kahi pane - hoʻoponopono ka hana Lambda i nā pilikia he nui: me ka multithreading, scalability, a pēlā aku. Inā kūkulu ʻia kāu loiloi ma kēia ʻano, a laila i ka wā e hiki mai ana e hiki iā ʻoe ke hoʻololi i kēia mau Lambdas i nā microservice a hoʻohana i nā lawelawe ʻaoʻao ʻekolu e like me Amazon. Pono ka ʻenehana, hoihoi ka manaʻo. ʻO ka ʻoiaʻiʻo o ka ʻoihana he nīnau ākea.
Nikolay: Hoʻohana maikaʻi ʻia ʻo Serverless no nā hana hana ma mua o ka helu ʻana i kekahi loiloi ʻoihana. Manaʻo mau wau he ʻano hana hanana. Inā loaʻa iā ʻoe ma Amazon, inā ʻoe ma Kubernetes, ʻae. A i ʻole, pono ʻoe e hoʻoikaika nui i ka Serverless a holo pono iā ʻoe iho. Pono e nānā i kahi hihia pāʻoihana kūikawā. No ka laʻana, ʻo kekahi o kaʻu mau hana i kēia manawa: ke ʻike ʻia nā faila ma ka disk ma kekahi ʻano, pono wau e hoʻouka iā Kafka. Hiki iaʻu ke hoʻohana i ka WatchDog a i ʻole Lambda. Mai kahi manaʻo loiloi, kūpono nā koho ʻelua, akā ma ke ʻano o ka hoʻokō, ʻoi aku ka paʻakikī o Serverless, a makemake wau i ke ala maʻalahi, me ka ʻole o Lambda.
Makaw: He manaʻo hoihoi, pili, a nani loa ʻo Serverless. Ma hope a ma hope paha, hiki i ka ʻenehana i kahi e hoʻomaka ai kekahi hana ma lalo o 100 milliseconds. A laila, ma ke kumu, ʻaʻohe nīnau inā he koʻikoʻi ka manawa kali no ka mea hoʻohana. I ka manawa like, ʻo ka hoʻohana ʻana o Serverless, e like me ka ʻōlelo ʻana a nā hoa hana, pili loa i ka pilikia ʻoihana.

Mahalo mākou i nā mea kākoʻo i kōkua nui iā mākou:

  • wahi halawai IT «ʻO ke kai»no ke kahua hālāwai kūkā.
  • Kalena o na hanana IT Runet-ID a hoʻopuka "Pūnaewele ma nā helu»no ke kākoʻo ʻike a me ka nūhou.
  • «Acronis"no nā makana.
  • ʻO Avito no ka hana pu ana.
  • "Association for Electronic Communications" RAEC no kou komo ʻana a me kou ʻike.
  • Kākoʻo nui RUVDS - no nā mea a pau!

Backend, aʻo mīkini a me ka serverless - nā mea hoihoi loa mai ka hālāwai kūkā o Iulai Habr

Source: www.habr.com