ʻOiai ua kaulana nā ʻenehana serverless i nā makahiki i hala iho nei, aia nō ka nui o nā kuhi hewa a me nā hopohopo e pili ana iā lākou. ʻO ka hilinaʻi o ka mea kūʻai aku, ka mea hana, ka hoʻokele waiwai, ka hoʻomaka anuanu, ka nānā ʻana a me ka hoʻomohala ʻana i ke ola ola he mau kumuhana i hoʻopaʻapaʻa nui ʻia i ka wā e pili ana i nā ʻenehana serverless. Ma kēia ʻatikala, e ʻimi mākou i kekahi o nā kumuhana i haʻi ʻia, a me ka hāʻawi ʻana i nā ʻōlelo aʻoaʻo a me nā loulou i nā kumuwaiwai kōkua e kōkua i ka poʻe hoʻomaka e kūkulu i nā polokalamu serverless ikaika, maʻalahi, a me ke kumu kūʻai.
Manaʻo kuhihewa e pili ana i nā ʻenehana serverless
Manaʻo ka nui o ka poʻe he serverless a serverless data processing (
ʻO ke kumu nui o ka serverless ʻaʻole pono ʻoe e hopohopo e pili ana i ka mālama ʻana a i ʻole ka hoʻonui ʻana i kāu ʻōnaehana; uku wale ʻoe no ka mea āu e hoʻohana ai. Nui nā lawelawe i kūpono i kēia mau koina - AWS DynamoDB, S3, SNS a i ʻole SQS, Graphcool, Auth0, Now, Netlify, Firebase a me nā mea ʻē aʻe he nui. Ma keʻano laulā, serverless ʻo ia ka hoʻohana ʻana i nā mana āpau o ka computing cloud me ka ʻole o ka pono e hoʻokele a hoʻomaikaʻi i ka ʻōnaehana no ka scaling. ʻO ia hoʻi ʻo ka palekana ma ka pae ʻenehana ʻaʻole ia kou pilikia, ʻo ia ka pōmaikaʻi nui i hāʻawi ʻia i ka paʻakikī a me ka paʻakikī o ka hālāwai ʻana i nā kūlana palekana. ʻO ka hope, ʻaʻole pono ʻoe e kūʻai i nā ʻōnaehana i hāʻawi ʻia iā ʻoe.
Hiki ke manaʻo ʻia ʻo Serverless he "kūlana noʻonoʻo": kahi noʻonoʻo i ka wā e hoʻolālā ai i nā hoʻonā. E hōʻalo i nā ala e pono ai ka mālama ʻana i kekahi ʻano hana. Me kahi ala lawelawe ʻole, hoʻolilo mākou i ka manawa e hoʻoponopono ai i nā pilikia e pili pono ana i ka papahana a lawe i ka waiwai i kā mākou mea hoʻohana: hana i ka loiloi ʻoihana ikaika, hoʻomohala i nā mea hoʻohana, a me ka hoʻomohala ʻana i nā API kūpono a hilinaʻi.
No ka laʻana, inā hiki ke pale aku i ka mālama ʻana a me ka mālama ʻana i kahi kahua huli kikokikona manuahi, a laila ʻo ia kā mākou e hana ai. Hiki i kēia ala i ke kūkulu ʻana i nā noi ke wikiwiki i ka manawa i ka mākeke no ka mea ʻaʻole pono ʻoe e noʻonoʻo e pili ana i ka hoʻokele ʻana i nā ʻōnaehana paʻakikī. E hoʻokuʻu iā ʻoe iho mai nā kuleana a me nā kumukūʻai o ka hoʻokele waiwai a nānā i ke kūkulu ʻana i nā noi a me nā lawelawe e pono ai kāu mea kūʻai. Ua kapa ʻo Patrick Debois i kēia ala
Pilikia kekahi poʻe e ka hilinaʻi o ka mea kūʻai aku i ka wā e hoʻomohala ai i nā noi kapua. Pēlā nō me nā ʻenehana serverless, a ʻaʻole paha kēia ka hopena o kahi kuhi hewa. I ko mākou ʻike, ke kūkulu ʻana i nā noi kikowaena ʻole ma AWS, i hui pū ʻia me ka hiki o AWS Lambda e hōʻuluʻulu i nā lawelawe AWS ʻē aʻe, he ʻāpana ia o ka mea e hoʻomaikaʻi ai i nā hale kiʻi serverless. He laʻana maikaʻi kēia o ka synergy, ke ʻoi aku ka nui o ka hopena o kahi hui ma mua o ka huina o kāna mau ʻāpana. ʻO ka hoʻāʻo ʻana e pale i ka mea kūʻai aku laka-i hiki ke alakaʻi i nā pilikia hou aʻe. I ka hana ʻana me nā ipu, ʻoi aku ka maʻalahi o ka mālama ʻana i kāu papa abstraction ma waena o nā mea hāʻawi kapua. Akā i ka wā e pili ana i nā hoʻonā serverless, ʻaʻole e uku ʻia ka hoʻoikaika ʻana, ʻoiai inā e noʻonoʻo ʻoe i ke kumu kūʻai mai ka hoʻomaka. E ʻike pono pehea e hāʻawi ai nā mea kūʻai aku i nā lawelawe. Ke hilinaʻi nei kekahi mau lawelawe kūikawā i nā wahi hoʻohui me nā mea kūʻai aku a hāʻawi paha i ka pilina plug-a-pāʻani ma waho o ka pahu. ʻOi aku ka maʻalahi o ka hāʻawi ʻana i kahi kelepona Lambda mai kahi hopena API ma mua o ke koho ʻana i ka noi i kekahi pahu a i ʻole EC2 laʻana. Hiki iā Graphcool ke hoʻonohonoho maʻalahi me ka hoʻohana ʻana iā Auth0, ʻoi aku ka maʻalahi ma mua o ka hoʻohana ʻana i nā mea hana hōʻoia ʻaoʻao ʻekolu.
ʻO ke koho ʻana i ka mea kūʻai kūpono no kāu noi serverless he hoʻoholo pae kiʻekiʻe. Ke hana ʻoe i kahi noi, ʻaʻole ʻoe e manaʻo e hoʻi hou i kahi lā i ka mālama ʻana i nā kikowaena. ʻAʻole ʻokoʻa ke koho ʻana i kahi mea kūʻai kapua ma mua o ke koho ʻana e hoʻohana i nā ipu a i ʻole kahi waihona, a i ʻole kahi ʻōlelo hoʻonohonoho.
E noʻonoʻo:
- He aha nā lawelawe āu e pono ai a no ke aha.
- He aha nā lawelawe i hāʻawi ʻia e nā mea hāʻawi kapuaʻi a pehea ʻoe e hoʻohui ai iā lākou me ka hoʻohana ʻana i ka hopena FaaS i koho ʻia.
- He aha nā ʻōlelo hoʻonohonoho e kākoʻo ʻia (dynamically a statically typed, compiled or interpreted, he aha nā benchmarks, he aha ka hana hoʻomaka anuanu, he aha ka open source ecosystem, etc.).
- He aha kāu mau koi palekana (SLA, 2FA, OAuth, HTTPS, SSL, etc.).
- Pehea e hoʻokele ai i kāu CI/CD a me nā pōʻai hoʻomohala polokalamu.
- He aha nā ʻōnaehana-as-code e hiki ai iā ʻoe ke hoʻohana pono?
Inā ʻoe e hoʻonui ana i kahi noi i loaʻa a hoʻohui i nā hana serverless i hoʻonui ʻia, hiki i kēia ke kaupalena i nā hiki i loaʻa. Eia nō naʻe, ʻaneʻane nā ʻenehana serverless e hāʻawi i kekahi ʻano API (ma o ka REST a i ʻole ka queuing memo) e hiki ai iā ʻoe ke hana i nā hoʻonui kūʻokoʻa mai ke kumu noi a me ka hoʻohui maʻalahi. E ʻimi i nā lawelawe me nā API maopopo, nā palapala maikaʻi a me kahi kaiāulu ikaika, a ʻaʻole hiki iā ʻoe ke hele hewa. ʻO ka maʻalahi o ka hoʻohui ʻana hiki ke lilo i kumu nui, a ʻo ia paha kekahi o nā kumu nui i kūleʻa ai ʻo AWS mai ka puka ʻana mai o Lambda i 2015.
I ka manawa hea e pono ai ka serverless?
Hiki ke hoʻohana ʻia nā ʻenehana serverless kokoke i nā wahi āpau. Eia naʻe, ʻaʻole i kaupalena ʻia ko lākou mau pono i nā ʻano o ka noi. He haʻahaʻa loa ka pale i ke komo ʻana no ka computing kapua i kēia lā ma muli o nā ʻenehana serverless. Inā he manaʻo ko nā mea hoʻomohala, akā ʻaʻole lākou i ʻike pehea e hoʻokele ai i nā ʻōnaehana kapuaʻi a hoʻonui i nā kumukūʻai, a laila ʻaʻole pono lākou e ʻimi i kekahi ʻenekinia e hana. Inā makemake ka mea hoʻomaka e kūkulu i kahi kahua akā hopohopo e hiki ke lilo i nā kumukūʻai mai ka mana, hiki iā lākou ke huli maʻalahi i nā ʻōnaehana serverless.
Mahalo i ka mālama ʻana i ke kumu kūʻai a me ka maʻalahi o ka scaling, pili like nā ʻōnaehana serverless i nā ʻōnaehana kūloko a me waho, a hiki i kahi noi pūnaewele me ka lehulehu miliona miliona. Ana ʻia nā moʻokāki ma ke keneta ma mua o ka euro. ʻO ka hoʻolimalima ʻana i ka mea maʻalahi AWS EC2 (t1.micro) no hoʻokahi mahina e uku ʻia ʻo €15, ʻoiai inā ʻaʻole ʻoe e hana i kekahi mea me ia (ʻo wai ka mea i poina e hoʻopau iā ia?!). I ka hoʻohālikelike ʻana, no ka hoʻokō ʻana i kēia pae o ka hoʻolilo ʻana i ka manawa like, pono ʻoe e holo i kahi 512 MB Lambda no 1 kekona ma kahi o 3 miliona mau manawa. A inā ʻaʻole ʻoe e hoʻohana i kēia hiʻohiʻona, ʻaʻole ʻoe e uku i kekahi mea.
No ka mea ʻo ka serverless ka mea i alakaʻi nui ʻia i ka hanana, maʻalahi ka hoʻohui ʻana i nā ʻōnaehana serverless i nā ʻōnaehana hoʻoilina. No ka laʻana, me ka hoʻohana ʻana iā AWS S3, Lambda, a me Kinesis, hiki iā ʻoe ke hana i kahi lawelawe analytics no kahi ʻōnaehana kūʻai hoʻoilina e hiki ke loaʻa i ka ʻikepili ma o kahi API.
Kākoʻo ka hapa nui o nā paepae serverless i nā ʻōlelo he nui. ʻO ka hapa pinepine ʻo Python, JavaScript, C#, Java a me Go. ʻO ka maʻamau, ʻaʻohe palena o nā ʻōlelo āpau i ka hoʻohana ʻana i nā hale waihona puke, no laila hiki iā ʻoe ke hoʻohana i kāu mau waihona punahele punahele. Eia nō naʻe, ʻoi aku ka maikaʻi ʻaʻole e hoʻohana nui i nā hilinaʻi i hiki i kāu mau hana ke hana maikaʻi loa a ʻaʻole e hoʻopau i nā pono o ka scalability nui o kāu mau noi serverless. ʻO ka nui o nā pūʻolo e pono e hoʻouka ʻia i loko o ka pahu, ʻoi aku ka lōʻihi o ka hoʻomaka anu.
ʻO kahi hoʻomaka anu i ka wā e pono ai ʻoe e hoʻomaka i ka ipu, ka manawa holo, a me ka mea hoʻoponopono hewa ma mua o ka hoʻohana ʻana iā lākou. Ma muli o kēia, hiki ke lohi i ka hana ʻana i nā hana a hiki i 3 kekona, a ʻaʻole kēia ke koho maikaʻi loa no nā mea hoʻohana hoʻomanawanui. Eia naʻe, hoʻomaka ke anu ma ke kelepona mua ma hope o kekahi mau minuke o ka hana ʻole. Nui ka poʻe i manaʻo he pilikia liʻiliʻi kēia e hiki ke hoʻoponopono ʻia ma ka ping mau ʻana i ka hana e hoʻomau i ka hana. A i ʻole lākou e haʻalele i kēia ʻano.
ʻOiai ua hoʻokuʻu ʻia ʻo AWS
Hoʻokomo ka toolkit i nā palena he nui, ʻoi aku hoʻi i ka wahi o ka hoʻāʻo kūloko. ʻOiai aia nā hoʻonā e like me Docker-Lambda, DynamoDB Local a me LocalStack, koi lākou i ka hana painstaking a me ka nui o ka hoʻonohonoho. Eia naʻe, ke ulu ikaika nei kēia mau papahana a pau, no laila he manawa wale nō ma mua o ka hiki ʻana o nā mea hana i ka pae e pono ai mākou.
Ka hopena o nā ʻenehana serverless i ka pōʻai hoʻomohala
Ma muli o ka hoʻonohonoho maʻalahi o kāu ʻōnaehana, hiki iā ʻoe ke wehewehe a kau i ka code me ka hoʻohana ʻana i nā palapala, e like me nā script shell. A i ʻole hiki iā ʻoe ke hoʻohana i nā hoʻonā papa hoʻonohonoho-as-code like
No ka mea ʻo ia wale nō ka hoʻonohonoho ʻana, hiki iā ʻoe ke hoʻohālikelike i kāu mau palapala hoʻolālā no nā kaiapuni kikoʻī, nā ʻāina, a me nā mea hoʻohana, ʻoiai inā ʻoe e hoʻohana nei i nā ʻōnaehana infrastructure-as-code e like me CloudFormation. No ka laʻana, hiki iā ʻoe ke kau i kope o ka ʻōnaehana no kēlā me kēia lālā i ka waihona i hiki iā ʻoe ke hoʻāʻo iā lākou i kahi kaʻawale i ka wā o ka hoʻomohala ʻana. ʻO kēia ka wikiwiki i ka manawa e loaʻa ai i nā mea hoʻomohala nā manaʻo ke makemake lākou e hoʻomaopopo inā hana maikaʻi kā lākou code i kahi nohona ola. ʻAʻole hopohopo nā luna e pili ana i ke kumukūʻai o ka lawe ʻana i nā kaiapuni lehulehu no ka mea uku wale lākou no ka hoʻohana maoli.
ʻAʻole hopohopo ʻo DevOps no ka mea pono lākou e hōʻoia i ka hoʻonohonoho pololei ʻana o nā mea hoʻomohala. ʻAʻole hoʻokele hou i nā manawa, nā mea kaulike, a i ʻole nā hui palekana. No laila, ke hoʻohana nui ʻia nei ka huaʻōlelo NoOps, ʻoiai he mea nui ia e hiki ke hoʻonohonoho i ka ʻōnaehana, ʻoi aku hoʻi i ka wā e pili ana i ka hoʻonohonoho IAM a me ka hoʻonui ʻana i nā kumuwaiwai ao.
Aia nā mea nānā ikaika loa a ʻike ʻia e like me Epsagon, Thundra, Dashbird a me IOPipe. Hāʻawi lākou iā ʻoe e nānā i ke kūlana o kēia manawa o nā noi serverless, hāʻawi i nā lāʻau a me nā traces, hopu i nā metric hana a me nā bottlenecks kūkulu hale, hana i ka nānā ʻana i ke kumukūʻai a me ka wānana, a ʻoi aku ka nui. ʻAʻole wale lākou e hāʻawi i nā mea ʻenekini DevOps, nā mea hoʻomohala, a me nā mea hoʻolālā i kahi ʻike piha o ka hana noi, akā hiki iā lākou ke ʻae i nā mana e loaʻa ka ʻike i ka manawa maoli, ka lua-ke-kekona hoʻolimalima waiwai a me ka wānana kumukūʻai. ʻOi aku ka paʻakikī o ka hoʻonohonoho ʻana i kēia me kahi ʻōnaehana hoʻokele.
ʻOi aku ka maʻalahi o ka hoʻolālā ʻana i nā polokalamu serverless no ka mea ʻaʻole pono ʻoe e kau i nā kikowaena pūnaewele, hoʻokele i nā mīkini virtual a i ʻole nā ipu, nā server patch, nā ʻōnaehana hana, nā puka pūnaewele, a me nā mea ʻē aʻe. ʻoihana a me nā mea kūʻai aku pono.
ʻOiai ʻoi aku ka maikaʻi o ka mea hana (e hoʻomaikaʻi ana i kēlā me kēia lā), hiki i nā mea hoʻomohala ke nānā aku i ka hoʻokō ʻana i ka loiloi ʻoihana a pehea e hoʻohele maikaʻi ai i ka paʻakikī o ka noi ma nā lawelawe like ʻole i loko o ka hale hana. Hoʻokumu ʻia ka hoʻokele hoʻokele waiwai ʻole i ka hanana a hoʻokaʻawale ʻia e ka mea hāʻawi kapuaʻi (no ka laʻana, SQS, S3 hanana a i ʻole nā kahawai DynamoDB). No laila, pono nā mea hoʻomohala e kākau i ka loiloi pāʻoihana e pane i kekahi mau hanana, a ʻaʻole hopohopo e pili ana i ka maikaʻi o ka hoʻokō ʻana i nā waihona a me nā queues memo, a i ʻole pehea e hana maikaʻi ai me ka ʻikepili i loko o nā waihona lako lako.
Hiki ke hoʻokō ʻia a hoʻopau ʻia ke code ma ka ʻāina, e like me ke kaʻina hana hoʻomohala. Ua mau ka ho'āʻo ʻana. Hiki i nā mea hoʻomohala ke loaʻa koke i nā manaʻo koʻikoʻi me ka hopohopo ʻole i ke kumukūʻai o ka hoʻāʻo ʻana a i ʻole ka hopena i nā kaiapuni i mālama ʻia.
Nā mea hana a me nā ʻenehana no ke kūkulu ʻana i nā polokalamu serverless
ʻAʻohe ala kikoʻī e kūkulu i nā noi serverless. A me kahi hoʻonohonoho o nā lawelawe no kēia hana. ʻO ke alakaʻi ma waena o nā hoʻonā serverless ikaika i kēia lā ʻo AWS, akā e hoʻolohe
Inā kākau ʻoe ma nā ʻōlelo ʻē aʻe, ʻo ka Serverless Framework kahi mea hoʻohana punaewele wehe maikaʻi loa e hiki ai iā ʻoe ke hoʻonohonoho i kekahi mea me ka hoʻohana ʻana i nā faila hoʻonohonoho YAML ikaika loa. Kākoʻo pū ʻo Serverless Framework i nā lawelawe kapuaʻi like ʻole, no laila ke paipai nei mākou i ka poʻe e ʻimi nei i kahi hoʻonā multi-cloud. Loaʻa iā ia kahi kaiāulu nui i hana i kahi hui o nā plugins no kēlā me kēia pono.
No ka hoʻāʻo ʻana i ka ʻāina, kūpono nā mea hana open source Docker-Lambda, Serverless Local, DynamoDB Local a me LocalStack. Aia nā ʻenehana serverless i ka wā mua o ka hoʻomohala ʻana, e like me nā mea hana no lākou, no laila pono ʻoe e hana ikaika i ka wā e hoʻonohonoho ai i nā hiʻohiʻona hoʻāʻo paʻakikī. Eia nō naʻe, ʻo ka hoʻohana wale ʻana i ka puʻupuʻu i loko o ke kaiapuni a me ka hoʻāʻo ʻana iā ia ma laila e lilo i mea maʻalahi loa. A ʻaʻole pono ʻoe e hana i kope kūloko pololei o kāu kaiapuni ao.
E hoʻohana i ka AWS Lambda Layers e hōʻemi i ka nui o ka pūʻolo i hoʻoili ʻia a hoʻokē wikiwiki i ka manawa hoʻouka.
E hoʻohana i nā ʻōlelo papahana kūpono no nā hana kikoʻī. Loaʻa i nā ʻōlelo like ʻole ko lākou pono a me nā hemahema. Nui nā pae hoʻohālike, akā ʻo JavaScript, Python, a me C# (.NET Core 2.1+) nā alakaʻi i ka hana o AWS Lambda. Ua hoʻopuka hou ʻo AWS Lambda i kahi API Runtime e hiki ai iā ʻoe ke kuhikuhi i kāu ʻōlelo makemake a me ke kaiapuni holo manawa, no laila e hoʻokolohua.
E mālama i ka nui o ka pūʻolo hoʻolaha. ʻO ka liʻiliʻi o lākou, ʻoi aku ka wikiwiki o ka hoʻouka ʻana. E hōʻalo i ka hoʻohana ʻana i nā hale waihona puke nui, ʻoiai inā ʻoe e hoʻohana i ʻelua mau hiʻohiʻona mai ia mau mea. Inā hoʻolālā ʻoe ma JavaScript, e hoʻohana i nā mea hana kūkulu e like me Webpack e hoʻomaikaʻi i kāu kūkulu ʻana a hoʻokomo wale i kāu mea e pono ai. NET Core 3.0 me QuickJit a me Tiered Compilation, e hoʻomaikaʻi i ka hana a kōkua nui i ka hoʻomaka anu.
ʻO ka hilinaʻi ʻana o nā hana serverless i nā hanana hiki ke paʻakikī i ka hoʻonohonoho ʻana i ka loiloi ʻoihana i ka wā mua. Hiki ke hoʻohana maikaʻi ʻia nā queues me nā mīkini mokuʻāina ma kēia ʻano. Hiki i nā hana Lambda ke kāhea i kekahi i kekahi, akā e hana wale i kēia inā ʻaʻole ʻoe e manaʻo i kahi pane ("ahi a poina") - ʻaʻole ʻoe makemake e kiʻi ʻia no ke kali ʻana i kahi hana ʻē aʻe e hoʻopau. Pono nā pila memo no ka hoʻokaʻawale ʻana i nā ʻāpana o ka loiloi ʻoihana, ka hoʻokele ʻana i nā bottlenecks noi, a me ka hoʻoili ʻana i nā hana (me ka hoʻohana ʻana i nā queues FIFO). Hiki ke hāʻawi ʻia nā hana AWS Lambda i nā queues SQS e like me nā queues memo paʻa e hahai ana i nā memo i hāʻule no ka nānā ʻana ma hope. He mea pono loa nā AWS Step Functions (nā mīkini mokuʻāina) no ka hoʻokele ʻana i nā kaʻina hana paʻakikī e pono ai ke kaulahao o nā hana. Ma kahi o kahi hana Lambda e kāhea ana i kahi hana ʻē aʻe, hiki i nā hana Step ke hoʻonohonoho i nā hoʻololi mokuʻāina, hāʻawi i ka ʻikepili ma waena o nā hana, a mālama i ke kūlana honua o nā hana. ʻAe kēia iā ʻoe e wehewehe i nā kūlana hoʻāʻo hou, a i ʻole ka mea e hana ai ke kū mai kahi hewa kikoʻī - he mea hana ikaika loa ma lalo o kekahi mau kūlana.
hopena
I nā makahiki i hala iho nei, ke ulu nei nā ʻenehana serverless i kahi wikiwiki i ʻike ʻole ʻia. Aia kekahi mau kuhi hewa e pili ana i kēia hoʻololi paradigm. Ma ka hoʻokaʻawale ʻana i nā ʻōnaehana a me ka hoʻokele ʻana i ka scalability, hāʻawi nā ʻōnaehana serverless i nā pōmaikaʻi nui, mai ka hoʻomohala maʻalahi a me nā kaʻina DevOps i nā hōʻemi nui o nā kumukūʻai hana.
ʻOiai ʻaʻole me ka ʻole o ka serverless approaches, aia nā hiʻohiʻona hoʻolālā hilinaʻi e hiki ke hoʻohana ʻia no ka hana ʻana i nā noi serverless ikaika a i ʻole e hoʻohui i nā mea kikowaena ʻole i loko o nā hale kūkulu.
Source: www.habr.com