Nā kumu no ka hoʻomohala ʻana i nā noi hou mai NGINX. Mahele 1

Aloha hoa. I ka hoʻomaka ʻana o ka hoʻomaka ʻana o ka papa "Ka mea hoʻomohala hope ma PHP", kaʻana like mākou me ʻoe i ka unuhi ʻana o nā mea pono.

Hoʻoponopono ka polokalamu i nā pilikia o kēlā me kēia lā, ʻoiai e lilo ana i mea paʻakikī. E like me kā Marc Andreessen i ʻōlelo ai, ke hoʻopau nei ia i ka honua.

Nā kumu no ka hoʻomohala ʻana i nā noi hou mai NGINX. Mahele 1

ʻO ka hopena, ua loli nui ke ʻano o ka hoʻomohala ʻana a me ka hāʻawi ʻana i nā noi i nā makahiki i hala. He mau hoʻololi kēia ma ka pālākiō tectonic i hopena i kahi pūʻulu kumu. Ua kōkua kēia mau loina i ke kūkulu ʻana i kahi hui, hoʻolālā, hoʻomohala, a hāʻawi i kāu noi i nā mea hoʻohana hope.

Hiki ke hōʻuluʻulu ʻia nā loina penei: pono e liʻiliʻi ka palapala noi, pili pūnaewele, a loaʻa kahi hoʻolālā hoʻomohala-centric. Ma ke kūkulu ʻana i kēia mau loina ʻekolu, hiki iā ʻoe ke hana i kahi noi paʻa, hoʻopau i ka hopena i hiki ke hāʻawi wikiwiki a paʻa i ka mea hoʻohana hope, a hiki ke maʻalahi a hiki ke hoʻonui ʻia.

Nā kumu no ka hoʻomohala ʻana i nā noi hou mai NGINX. Mahele 1

Loaʻa i kēlā me kēia o nā loina i manaʻo ʻia he mau ʻano a mākou e kūkākūkā ai e hōʻike i ke ʻano o kēlā me kēia kumukānāwai e kōkua i ka pahuhopu hope o ka hāʻawi wikiwiki ʻana i nā noi hilinaʻi i maʻalahi ke mālama a hoʻohana. E nānā mākou i nā loina i ka hoʻohālikelike ʻana i ko lākou kūʻē ʻana i mea e wehewehe ai i ke ʻano o ka ʻōlelo ʻana, "E hōʻoia ʻoe e hoʻohana kumu o ka liʻiliʻi".

Manaʻo mākou e paipai kēia ʻatikala iā ʻoe e hoʻohana i nā loina i manaʻo ʻia no ke kūkulu ʻana i nā noi hou e hāʻawi i kahi ala hoʻolālā lokahi i loko o ka pōʻaiapili o kahi ʻenehana e ulu mau nei.

Ma ka hoʻohana ʻana i kēia mau loina, e ʻike ʻoe iā ʻoe iho e hoʻohana pono i nā ʻano hou loa o ka hoʻomohala polokalamu, me ka Nā DevOps i ka hoʻomohala ʻana a me ka hāʻawi ʻana i nā noi, ka hoʻohana ʻana i nā ipu (no ka laʻana, Docker) a me nā pahu hana hoʻoponopono ipu (no ka laʻana, Kubernetes), hoʻohana i nā microservices (me ka Microservice Architecture NGINX и hoʻolālā kamaʻilio pūnaewele no nā polokalamu microservice.

He aha ka polokalamu hou?

Nā noi hou? Pūʻulu hou? He aha ka manaʻo o ka "modern"?

ʻO ka hapa nui o nā mea hoʻomohala he ʻike kumu wale nō i ke ʻano o kahi noi hou, no laila pono e wehewehe pono i kēia manaʻo.

Kākoʻo kekahi palapala noi hou i nā mea kūʻai aku he nui, inā paha he mea hoʻohana e hoʻohana ana i ka waihona React JavaScript, he polokalamu kelepona no Android a i ʻole IOS, a i ʻole kahi noi e pili ana i kekahi ma o ka API. Hōʻike ka palapala noi hou i kahi helu pau ʻole o nā mea kūʻai aku nāna e hāʻawi i ka ʻikepili a i ʻole nā ​​​​lawelawe.

Hāʻawi kahi noi hou i kahi API e komo i ka ʻikepili i noi ʻia a me nā lawelawe. Pono e hoʻololi a mau ka API, ʻaʻole i kākau kikoʻī ʻia no kahi noi kikoʻī mai kahi mea kūʻai aku. Loaʻa ka API ma luna o HTTP(S) a hāʻawi i ke komo i nā hana āpau i loaʻa ma ka GUI a i ʻole CLI.

Pono e loaʻa ka ʻikepili ma kahi ʻano maʻamau, interoperable e like me JSON. Hōʻike ka API i nā mea a me nā lawelawe ma kahi ʻano akaka a hoʻonohonoho ʻia; no ka laʻana, hāʻawi kahi RESTful API a i ʻole GraphQL i kahi interface kūpono.

Kūkulu ʻia nā noi o kēia wā ma luna o kahi waihona hou, a ʻo kahi pūʻulu hou ka waihona e kākoʻo ana i ia mau noi, kēlā me kēia. Hāʻawi kēia waihona i ka mea hoʻomohala e hana maʻalahi i kahi noi me kahi pānaʻi HTTP a me nā helu hope API. ʻO ke ala āu e koho ai e ʻae i kāu noi e ʻae a hoʻouna i ka ʻikepili ma ka palapala JSON. I nā huaʻōlelo ʻē aʻe, pili ka waihona o kēia manawa i nā mea o ka noi ʻumikūmālua-factor no microservices.

Hoʻokumu ʻia nā mana kaulana o kēia ʻano waihona Iawa, Python, wahi, Ruby, PHP и Go. Hoʻolālā Microservice NGINX hōʻike i kahi hiʻohiʻona o kahi waihona hou i hoʻokō ʻia i kēlā me kēia ʻōlelo i ʻōlelo ʻia.

E ʻoluʻolu, ʻaʻole mākou e kākoʻo i kahi ala microservices. ʻO ka hapa nui o ʻoukou e hana pū ana me nā monoliths e pono e hoʻomohala, aʻo nā mea ʻē aʻe e pili ana i nā noi SOA e hoʻonui a hoʻololi nei e lilo i mau noi microservice. Ke neʻe nei kekahi i nā noi serverless, a ke hoʻokō nei kekahi i nā hui ʻana o nā mea i luna. Ua pili nā loina i wehewehe ʻia ma kēia ʻatikala i kēlā me kēia ʻōnaehana me nā hoʻololi liʻiliʻi wale nō.

Nā Kuleana

I kēia manawa ua loaʻa iā mākou kahi ʻike maʻamau i ke ʻano o kahi noi hou a me kahi waihona hou, ʻo ia ka manawa e luʻu ai i ka hoʻolālā a me nā loina hoʻolālā e lawelawe maikaʻi iā ʻoe i ka hoʻolālā ʻana, hoʻokō, a mālama i kahi noi hou.

ʻO kekahi o nā loina "kūkulu i nā polokalamu liʻiliʻi", e kāhea wale kākou ke kumu o ka uuku. Aia nā noi paʻakikī nui loa i nā ʻāpana neʻe. ʻO ke kūkulu ʻana i kahi noi mai nā ʻāpana liʻiliʻi, ʻoi aku ka maʻalahi o ka hoʻolālā, mālama ʻana a me ka hoʻohana holoʻokoʻa. (E hoʻomanaʻo, ua ʻōlelo mākou "e maʻalahi" a ʻaʻole "maʻalahi").

ʻO ka lua o ka manaʻo, hiki iā mākou ke hoʻonui i ka huahana mea hoʻomohala ma ke kōkua ʻana iā lākou e nānā i nā hiʻohiʻona a lākou e hoʻomohala nei, ʻoiai e hoʻokuʻu ana iā lākou mai ka hopohopo e pili ana i nā ʻōnaehana a me CI / CD i ka wā o ka hoʻokō. No laila, ma kahi pōkole, kā mākou hoʻokokoke mea hoʻomohala.

ʻO ka hope, pono e hoʻopili ʻia nā mea āpau e pili ana i kāu noi i ka pūnaewele. I loko o nā makahiki he 20 i hala iho nei, ua holomua nui mākou i ka wā e hiki mai ana i ka pūnaewele no ka mea ua wikiwiki nā pūnaewele a ua paʻakikī loa nā noi. E like me kā mākou i ʻike mua ai, pono e hoʻohana ʻia kahi noi hou ma waena o kahi pūnaewele e nā mea kūʻai aku he nui. ʻO ka hoʻohana ʻana i ka noʻonoʻo pūnaewele i ka hoʻolālā ʻana he mau pōmaikaʻi nui i kūpono maikaʻi me ke kumu o ka uuku a me ka manaʻo o ke ala, mea hoʻomohala.

Inā mālama ʻoe i kēia mau loina i ka wā e hoʻolālā a hoʻokō ai i kahi noi, e loaʻa iā ʻoe kahi pōmaikaʻi kūʻokoʻa i ka hoʻomohala ʻana a me ka hāʻawi ʻana i kāu huahana.

E nānā pono kākou i kēia mau loina ʻekolu.

ʻO ke kumu o ka liʻiliʻi

He mea paʻakikī i ka lolo kanaka ke ʻike i ka nui o ka ʻike i ka manawa hoʻokahi. I loko o ka psychology, pili ka huaʻōlelo cognitive load i ka nui o ka hoʻoikaika noʻonoʻo e pono ai e mālama i ka ʻike ma ka hoʻomanaʻo. ʻO ka hoʻemi ʻana i ka haʻahaʻa cognitive i nā mea hoʻomohala he mea nui ia no ka mea hiki iā lākou ke nānā aku i ka hoʻoponopono ʻana i ka pilikia ma mua o ka paʻa ʻana i ke ʻano paʻakikī o kēia manawa o ka noi holoʻokoʻa a me nā hiʻohiʻona i kūkulu ʻia i ko lākou poʻo.

Nā kumu no ka hoʻomohala ʻana i nā noi hou mai NGINX. Mahele 1

Hoʻopau ʻia nā noi no nā kumu penei:

  • Hoʻemi i ka haʻahaʻa cognitive i nā mea hoʻomohala;
  • ʻO ka wikiwiki a me ka maʻalahi o ka ho'āʻo;
  • Hāʻawi wikiwiki i nā loli i ka noi.


Nui nā ala e hōʻemi ai i ka haʻahaʻa noʻonoʻo ma luna o nā mea hoʻomohala, a ma laila ke kumu o ka liʻiliʻi.

No laila, ʻekolu mau ala e hoʻemi ai i ka ukana cognitive:

  1. E ho'ēmi i ka manawa a lākou e noʻonoʻo ai i ka hoʻomohala ʻana i kahi hiʻohiʻona hou - ʻo ka pōkole o ka manawa, ʻo ia ka haʻahaʻa o ka haʻahaʻa cognitive.
  2. E ho'ēmi i ka nui o ke code e hana ʻia ana i ka manawa - liʻiliʻi code - liʻiliʻi ka ukana.
  3. E hoʻomaʻamaʻa i ke kaʻina hana o ka hoʻololi ʻana i kāu noi.

Hoʻemi ʻia nā manawa hoʻomohala

E hoʻi kāua i ka wā i hana ʻia ai ke ʻano hana waterfall ʻO ke kūlana maʻamau no ke kaʻina hana hoʻomohala, a he hana maʻamau nā manawa o ʻeono mahina a ʻelua makahiki no ka hoʻomohala ʻana a i ʻole ka hoʻonui ʻana i kahi noi. ʻO ka mea maʻamau, heluhelu mua nā ʻenekinia i nā palapala pili e like me nā koi huahana (PRD), palapala kuhikuhi ʻōnaehana (SRD), hoʻolālā hoʻolālā, a hoʻomaka e hoʻohui i kēia mau mea āpau i hoʻokahi kumu hoʻohālike e like me kā lākou i kākau ai i ke code. E like me nā koi, a no laila, ua hoʻololi ʻia ka hale hoʻolālā, pono e hoʻoikaika nui ʻia e mālama i ka hui holoʻokoʻa e pili ana i nā mea hou i ke kumu hoʻohālike cognitive. I ka hihia maikaʻi loa, hiki i kēia ala ke hoʻopau wale i ka hana.

ʻO ka hoʻololi nui loa i ke kaʻina hana hoʻomohala noi ʻo ia ka hoʻokomo ʻana i ke ʻano agile. ʻO kekahi o nā hiʻohiʻona nui o ke ʻano hana agile - He hoʻomohala hoʻomau kēia. I ka huli ʻana, alakaʻi kēia i ka hōʻemi ʻana i ka haʻahaʻa cognitive ma luna o nā ʻenekinia. Ma kahi o ke koi ʻana i ka hui hoʻomohala e hoʻokō i ka noi i hoʻokahi pōʻai lōʻihi, agile ʻO ke ala e hiki ai iā ʻoe ke nānā aku i nā helu liʻiliʻi o nā code i hiki ke hoʻāʻo koke ʻia a kau ʻia, ʻoiai e loaʻa ana nā manaʻo. Ua neʻe ka haʻawina cognitive o kahi noi mai kahi manawa o ʻeono mahina a ʻelua mau makahiki, me ka nui o nā kikoʻī, i kahi hoʻohui a i ʻole hoʻololi ʻelua pule, e kuhikuhi ana i kahi ʻike ākea o kahi noi nui.

ʻO ka hoʻololi ʻana i ka manaʻo mai kahi noi nui i nā hiʻohiʻona liʻiliʻi hiki ke hoʻopau ʻia i loko o ka sprint ʻelua pule, e nānā ana i mua i hoʻokahi hiʻohiʻona mai ka sprint aʻe ma ka noʻonoʻo he loli nui. ʻO kēia ka mea i hiki ai ke hoʻonui i ka hoʻomohala ʻana i ka wā e hōʻemi ana i ka ukana cognitive, e loli mau ana.

Ma ke ʻano hana agile manaʻo ʻia ka manaʻo hope loa i hoʻololi iki ʻia o ka manaʻo kumu, no laila, ʻaʻole maopopo ka pae hoʻomohala hope. ʻO nā hopena wale nō o kēlā me kēia sprint kikoʻī hiki ke maopopo a pololei.

Nā codebase liʻiliʻi

ʻO ka hana aʻe i ka hōʻemi ʻana i ka haʻahaʻa cognitive e hōʻemi i ke kumu code. ʻO ka mea maʻamau, he nui nā noi o kēia wā-he noiʻi paʻa, hiki ke loaʻa nā tausani o nā faila a me nā haneli haneli o nā laina code. Ma muli o ka hoʻonohonoho ʻana o nā faila, ʻike ʻia nā pilina a me nā hilinaʻi ma waena o ke code a me nā faila. ʻO ka hoʻopau ʻana i ka hoʻokō code ponoʻī hiki ke pilikia, ma muli o nā hale waihona puke i hoʻohana ʻia a pehea ka ʻokoʻa o nā mea hana debugging ma waena o nā hale waihona puke/packages/modules a me nā code mea hoʻohana.

ʻO ke kūkulu ʻana i kahi kumu hoʻohālike noʻonoʻo hana o ke code o kahi noi hiki ke lawe i kahi manawa nui, e kau hou i kahi haʻahaʻa cognitive nui ma luna o ka mea hoʻomohala. Heʻoiaʻiʻo loa kēia no nā codebases monolithic, kahi nui o ke code, ʻaʻole i wehewehe maopopo ʻia nā pilina ma waena o nā mea hana, a ʻike pinepine ʻia ka hoʻokaʻawale ʻana o nā mea nānā no ka mea ʻaʻole mālama ʻia nā palena hana.

ʻO kahi ala maikaʻi e hōʻemi ai i ka haʻahaʻa cognitive i nā mea ʻenekinia ʻo ka neʻe ʻana i kahi hoʻolālā microservices. Ma keʻano microservice, e nānā ana kēlā me kēia lawelawe i hoʻokahi o nā hana; ʻO ka manaʻo o ka lawelawe ke wehewehe a hoʻomaopopo ʻia. Akaka nō hoʻi nā palena o ka lawelawe - e hoʻomanaʻo e hana ʻia ke kamaʻilio me ka lawelawe me ka hoʻohana ʻana i kahi API, no laila hiki ke hoʻololi maʻalahi ka ʻikepili i hana ʻia e kekahi lawelawe i kekahi.

ʻO ka launa pū ʻana me nā lawelawe ʻē aʻe e kaupalena ʻia i nā lawelawe mea hoʻohana liʻiliʻi a me kekahi mau lawelawe lawelawe e hoʻohana ana i nā kelepona API maʻalahi a maʻemaʻe, e like me REST. 'O ia ho'i, ua ho'emi nui 'ia ka haawe cognitive ma luna o ka 'enekinia. ʻO ka paʻakikī nui e hoʻomau i ka hoʻomaopopo ʻana i ke kumu hoʻohālike lawelawe a me ke ʻano o nā mea e like me ke kālepa ʻana ma waena o nā lawelawe he nui. ʻO ka hope loa, ʻo ka hoʻohana ʻana i nā microservices e hōʻemi i ka haʻahaʻa cognitive ma ka hōʻemi ʻana i ka nui o ke code, ka wehewehe ʻana i nā palena o ka lawelawe, a me ka hāʻawi ʻana i ka ʻike i ka pilina mea hoʻohana.

Hoʻololi liʻiliʻi liʻiliʻi

ʻO ka mea hope loa o ke kumu liʻiliʻi he hooponopono hoololi. He mea hoʻowalewale loa ia i nā mea hoʻomohala e nānā i kahi kumu code (ʻoiai paha i kā lākou iho, code kahiko) a ʻōlelo ʻia, "He ʻino kēia, pono mākou e kākau hou i kēia mea āpau." I kekahi manawa ʻo ia ka hoʻoholo kūpono, a i kekahi manawa ʻaʻole. Ke kau nei ia i ke kaumaha o nā hoʻololi hoʻohālike honua ma luna o ka hui hoʻomohala, a ʻo ia hoʻi ka hopena i ka ukana cognitive nui. ʻOi aku ka maikaʻi o ka poʻe ʻenekinia e nānā i nā loli i hiki iā lākou ke hana i ka wā o ka sprint, i hiki iā lākou ke ʻōwili i ka hana pono i ka manawa kūpono, ʻoiai me ka mālie. Pono e like ka huahana hope me ka mea i hoʻolālā mua ʻia, akā me kekahi mau hoʻololi a me nā hoʻāʻo e kūpono i nā pono o ka mea kūʻai.

Ke kākau hou ʻana i nā ʻāpana nui o ke code, hiki ʻole ke hāʻawi koke i kahi hoʻololi no ka mea e komo nā mea hilinaʻi ʻē aʻe. No ka mālama ʻana i ke kahe o nā loli, hiki iā ʻoe ke hoʻohana i ka hūnā hiʻohiʻona. ʻO ke kumu, ʻo ia ke ʻano o ka hana i ka hana ʻana, akā ʻaʻole i loaʻa ma o nā hoʻonohonoho hoʻololi kaiapuni (env-var) a i ʻole kekahi ʻano hana hoʻonohonoho ʻē aʻe. Inā ua hala ke code i nā kaʻina hana mana maikaʻi a pau, hiki ke hoʻopau ʻia i ka hana ʻana ma kahi kūlana huna. Eia naʻe, hana wale kēia hoʻolālā inā hiki ke hoʻohana ʻia ka hiʻohiʻona. A i ʻole, e hoʻopili wale ia i ke code a hoʻohui i ka haʻahaʻa cognitive e pono ai ka mea hoʻomohala e hoʻokō i mea e hoʻohua ai. Hoʻololi i ka hoʻokele a me nā hoʻololi hoʻololi iā lākou iho e kōkua i ka mālama ʻana i ka haʻawina cognitive o nā mea hoʻomohala ma kahi pae hiki ke hiki.

Pono nā ʻenekinia e lanakila i nā pilikia he nui ʻoiai ke hoʻokō wale nei i nā hana hou. He mea maʻalahi ka hoʻokele e hoʻemi i ka hana pono ʻole i ka hui i hiki iā ia ke nānā aku i nā mea nui o ka hana. ʻEkolu mau mea hiki iā ʻoe ke hana e kōkua i kāu hui hoʻomohala:

  1. E hoʻohana i ke ʻano hana agile, e kaupalena i ka manawa e pono ai ka hui e nānā i nā hiʻohiʻona nui.
  2. E hoʻokō i kāu noi ma ke ʻano he mau microservices. E kaupalena kēia i ka helu o nā hiʻohiʻona i hoʻokomo ʻia a hoʻoikaika i nā palena i loaʻa ka haʻahaʻa cognitive i ka wā e hana ana.
  3. E koho i nā hoʻololi hoʻonui i nā mea nui a paʻa ʻole, e hoʻololi i nā ʻāpana liʻiliʻi o ke code. E hoʻohana i ka hūnā hiʻona e hoʻokō i nā loli inā ʻaʻole ʻike koke ʻia lākou ma hope o ka hoʻohui ʻia ʻana.

Inā hoʻohana ʻoe i ke kumu o ka liʻiliʻi i kāu hana, e ʻoi aku ka hauʻoli o kāu hui, ʻoi aku ka maikaʻi o ka nānā ʻana i ka hāʻawi ʻana i nā hiʻohiʻona kūpono, a ʻoi aku ka wikiwiki o ka hoʻololi ʻana i ka maikaʻi. Akā ʻaʻole kēia manaʻo ʻaʻole hiki i ka hana ke lilo i mea paʻakikī; i kekahi manawa, ma kahi ʻē aʻe, ʻo ka hoʻokomo ʻana i nā hana hou e pono ai ka hoʻololi ʻana i kekahi mau lawelawe a ʻoi aku ka paʻakikī o kēia kaʻina hana ma mua o ka mea like i loko o kahi hoʻolālā monolithic. I kēlā me kēia hihia, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ke ala.

Ka hope o ka hapa mua.

E hoʻopuka koke mākou i ka ʻāpana ʻelua o ka unuhi, akā i kēia manawa ke kali nei mākou i kāu mau manaʻo a kono iā ʻoe Lā Hāmama, i keia la ma ka hora 20.00.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka