Nā hiʻohiʻona hoʻolālā kūpono

E Habr!

Ma muli o nā hanana o kēia manawa ma muli o ka coronavirus, ua hoʻomaka ka nui o nā lawelawe pūnaewele e loaʻa i ka ukana nui. ʻo kahi laʻana, Hoʻopau wale kekahi o nā kaulahao kūʻai UK i kāna pūnaewele kauoha pūnaewele., no ka lawa ole o ka hiki. A ʻaʻole hiki i nā manawa a pau ke wikiwiki i kahi kikowaena ma ka hoʻohui wale ʻana i nā mea hana ikaika, akā pono e hoʻokō ʻia nā noi o nā mea kūʻai aku (a i ʻole e hele lākou i nā mea hoʻokūkū).

Ma kēiaʻatikala e kamaʻilio pōkole wau e pili ana i nā hana kaulana e hiki ai iā ʻoe ke hana i kahi lawelawe wikiwiki a me ka hewa. Eia naʻe, mai nā papahana hoʻomohala hiki, ua koho wau i nā mea i kēia manawa oluolu e hoohana. No kēlā me kēia mea, loaʻa iā ʻoe nā hale waihona puke i hoʻomākaukau ʻia, a i ʻole hiki iā ʻoe ke hoʻoponopono i ka pilikia me ka hoʻohana ʻana i kahi paepae ao.

Ka hoʻopololei ʻana

ʻO ka helu maʻalahi a kaulana loa. ʻO ka mea maʻamau, ʻo nā ʻōnaehana hoʻoili ukana ʻelua maʻamau, ʻo ka hoʻonui ʻia ʻana a me ke kūpaʻa. Ma ka hihia mua ʻae ʻoe i nā lawelawe e holo like, a laila e puunaue i ka ukana ma waena o lākou. Ma ka lua kauoha ʻoe i nā kikowaena ʻoi aku ka ikaika a i ʻole ke koho ʻana i ke code.

No ka laʻana, e lawe au i kahi waihona waihona kapuaʻi abstract, ʻo ia hoʻi, kekahi analogue o OwnCloud, OneDrive, a pēlā aku.

Aia ma lalo kahi kiʻi maʻamau o ia kaapuni, akā hōʻike wale ia i ka paʻakikī o ka ʻōnaehana. Ma hope o nā mea a pau, pono mākou e hoʻonohonoho i nā lawelawe. He aha ka hopena inā mālama ka mea hoʻohana i kahi faila mai ka papa a makemake e nānā iā ia mai ke kelepona?

Nā hiʻohiʻona hoʻolālā kūpono
ʻO ka ʻokoʻa ma waena o nā ala hoʻokokoke: i ka scaling vertical, ua mākaukau mākou e hoʻonui i ka mana o nā nodes, a i ka scaling horizontal, ua mākaukau mākou e hoʻohui i nā nodes hou e puʻunaue i ka ukana.

CQRS

Hoʻokaʻawale i ke kuleana nīnau nīnau ʻO kahi hiʻohiʻona koʻikoʻi, no ka mea e ʻae i nā mea kūʻai aku ʻaʻole wale e hoʻopili i nā lawelawe like ʻole, akā e loaʻa pū kekahi i nā kahawai hanana like. ʻAʻole maopopo loa kona mau pōmaikaʻi no kahi noi maʻalahi, akā he mea koʻikoʻi loa ia (a maʻalahi) no kahi lawelawe paʻa. ʻO kona kumu: ʻaʻole pono e hui pū nā kahe ʻikepili komo a me waho. ʻO ia hoʻi, ʻaʻole hiki iā ʻoe ke hoʻouna i kahi noi a manaʻo i kahi pane; akā, hoʻouna ʻoe i kahi noi i ka lawelawe A, akā loaʻa kahi pane mai ka lawelawe B.

ʻO ka bonus mua o kēia ala ʻo ia ka hiki ke wāwahi i ka pilina (ma ke ʻano ākea o ka huaʻōlelo) ʻoiai e hoʻokō ana i kahi noi lōʻihi. No ka laʻana, e lawe i kahi kaʻina maʻamau a ʻoi aʻe paha:

  1. Ua hoʻouna ka mea kūʻai aku i kahi noi i ke kikowaena.
  2. Ua hoʻomaka ke kikowaena i kahi manawa hana lōʻihi.
  3. Ua pane ke kikowaena i ka mea kūʻai aku me ka hopena.

E noʻonoʻo kākou ma ka helu 2 ua haki ka pilina (a i ʻole ua hoʻopili hou ʻia ka pūnaewele, a i ʻole ua hele ka mea hoʻohana i kahi ʻaoʻao ʻē aʻe, e uhaʻi i ka pilina). I kēia hihia, e paʻakikī i ka server ke hoʻouna i kahi pane i ka mea hoʻohana me ka ʻike e pili ana i ka mea i hana pono ʻia. Me ka hoʻohana ʻana iā CQRS, ʻokoʻa iki ke kaʻina:

  1. Ua kākau inoa ka mea kūʻai aku i nā mea hou.
  2. Ua hoʻouna ka mea kūʻai aku i kahi noi i ke kikowaena.
  3. Ua pane mai ke kikowaena "ua ʻae ʻia ke noi."
  4. Ua pane ke kikowaena me ka hopena ma o ke kahawai mai ka helu "1".

Nā hiʻohiʻona hoʻolālā kūpono

E like me kāu e ʻike ai, ʻoi aku ka paʻakikī o ka papahana. Eia kekahi, ua nalo ke ala noi-pane intuitive maanei. Eia nō naʻe, e like me kāu e ʻike ai, ʻaʻole e alakaʻi i kahi hewa ka hoʻomaha pili i ka wā e hoʻoponopono ai i kahi noi. Eia kekahi, inā pili ka mea hoʻohana i ka lawelawe mai kekahi mau polokalamu (no ka laʻana, mai ke kelepona paʻa a mai kahi papa), hiki iā ʻoe ke hōʻoia i ka hiki ʻana mai o ka pane i nā mea ʻelua.

ʻO ka mea mahalo, ua like ke code no ka hoʻoponopono ʻana i nā memo e hiki mai ana (ʻaʻole 100%) no nā hanana i hoʻoikaika ʻia e ka mea kūʻai aku ponoʻī, a no nā hanana ʻē aʻe, me nā mea mai nā mea kūʻai aku.

Eia naʻe, i ka ʻoiaʻiʻo, loaʻa iā mākou kahi bonus hou ma muli o ka hiki ke mālama ʻia ke kahe unidirectional i kahi ʻano hana (me ka hoʻohana ʻana iā RX a me nā mea like). A he mea hoʻohui koʻikoʻi kēia, no ka mea ma ke ʻano maoli hiki ke hoʻokō piha ʻia ka noi, a me ka hoʻohana ʻana i kahi ala hana. No nā papahana momona, hiki i kēia ke ho'ōla nui i ka hoʻomohala a me ke kākoʻo waiwai.

Inā mākou e hoʻohui i kēia ala me ka scaling horizontal, a laila ma ke ʻano he bonus e loaʻa iā mākou ka hiki ke hoʻouna i nā noi i kahi kikowaena a loaʻa nā pane mai kekahi. No laila, hiki i ka mea kūʻai ke koho i ka lawelawe i kūpono iā ia, a hiki i ka ʻōnaehana i loko ke hoʻoponopono pololei i nā hanana.

Ka Hana Hana

E like me kāu e ʻike ai, ʻo kekahi o nā hiʻohiʻona nui o kahi ʻōnaehana puʻupuʻu ʻo ka nele o kahi manawa maʻamau, kahi ʻāpana koʻikoʻi maʻamau. No hoʻokahi kaʻina hana, hiki iā ʻoe ke hana i kahi synchronization (ma nā mutexes hoʻokahi), i loko āu e maopopo ai ʻaʻohe mea ʻē aʻe e hoʻokō nei i kēia code. Eia naʻe, he mea pōʻino kēia no ka ʻōnaehana puʻunaue, no ka mea, e koi ana ia ma luna o ke poʻo, a e pepehi pū i ka nani a pau o ka scaling - e kali mau nā ʻāpana āpau i hoʻokahi.

Mai ʻaneʻi e loaʻa iā mākou kahi ʻoiaʻiʻo nui - ʻaʻole hiki ke hoʻonohonoho ʻia kahi ʻōnaehana wikiwiki, no ka mea, e hōʻemi mākou i ka hana. Ma ka ʻaoʻao ʻē aʻe, pono pinepine mākou i kahi kūlike ma waena o nā ʻāpana. A no kēia hiki iā ʻoe ke hoʻohana i ke ala me hoʻopaʻapaʻa hope, kahi e hōʻoiaʻiʻo ʻia inā ʻaʻohe hoʻololi ʻikepili no kekahi manawa ma hope o ka hōʻano hope ("ma hope"), e hoʻihoʻi nā nīnau a pau i ka waiwai i hoʻonui ʻia.

He mea nui ia e hoʻomaopopo i ka hoʻohana pinepine ʻia no nā ʻikepili maʻamau kūpaʻa ikaika, kahi i loaʻa i kēlā me kēia node ka ʻike like (hiki pinepine ʻia kēia i ka hihia i manaʻo ʻia ka hoʻopaʻa ʻana ma hope o ka pane ʻana o ke kikowaena lua). Aia kekahi mau hoʻomaha ma ʻaneʻi ma muli o nā pae kaʻawale, akā mau ka manaʻo maʻamau - hiki iā ʻoe ke noho i kahi honua holoʻokoʻa.

Eia naʻe, e hoʻi kākou i ka hana kumu. Inā hiki ke kūkulu ʻia kahi ʻāpana o ka ʻōnaehana me hoʻopaʻapaʻa hope, a laila hiki iā mākou ke kūkulu i ke kiʻikuhi aʻe.

Nā hiʻohiʻona hoʻolālā kūpono

ʻO nā hiʻohiʻona nui o kēia ala:

  • Hoʻokomo ʻia kēlā me kēia noi komo ʻana i hoʻokahi pila.
  • ʻOiai e hana ana i kahi noi, hiki i ka lawelawe ke kau i nā hana ma nā pila ʻē aʻe.
  • Loaʻa i kēlā me kēia hanana e hiki mai ana kahi mea hōʻike (pono no ka hoʻopau ʻana).
  • Hana ʻia ka pila e like me ka papahana "hoʻohui wale". ʻAʻole hiki iā ʻoe ke wehe i nā mea mai ia mea a hoʻonohonoho hou iā lākou.
  • Ke hana nei ka queue e like me ka FIFO scheme (e kala mai no ka tautology). Inā pono ʻoe e hana i ka hoʻokō like ʻana, a laila i ka manawa hoʻokahi pono ʻoe e neʻe i nā mea i nā queues like ʻole.

E hoʻomanaʻo wau iā ʻoe ke noʻonoʻo nei mākou i ka hihia o ka mālama faila pūnaewele. I kēia hihia, e nānā ka ʻōnaehana penei:

Nā hiʻohiʻona hoʻolālā kūpono

He mea nui ka manaʻo o nā lawelawe ma ke kiʻikuhi i kahi kikowaena kaʻawale. Ua like paha ke kaʻina hana. ʻO kekahi mea nui: ʻo ka ideologically, ua hoʻokaʻawale ʻia kēia mau mea ma ke ʻano e hiki ke hoʻohana maʻalahi i ka scaling horizontal.

A no nā mea hoʻohana ʻelua e like me kēia (nā lawelawe i manaʻo ʻia no nā mea hoʻohana ʻē aʻe i hōʻike ʻia i nā kala like ʻole):

Nā hiʻohiʻona hoʻolālā kūpono

ʻO nā bonus mai kahi hui like:

  • Hoʻokaʻawale ʻia nā lawelawe hoʻoili ʻike. Hoʻokaʻawale ʻia nā laina laina. Inā pono mākou e hoʻonui i ka throughput pūnaewele, a laila pono mākou e hoʻomaka i nā lawelawe hou aku ma nā kikowaena hou aʻe.
  • Ke loaʻa iā mākou ka ʻike mai kahi mea hoʻohana, ʻaʻole pono mākou e kali a mālama ʻia ka ʻikepili. ʻO ka mea ʻē aʻe, pono mākou e pane "ok" a laila hoʻomaka mālie e hana. I ka manawa like, hoʻomaʻamaʻa ka pila i nā piko, no ka mea, hiki koke mai ka hoʻohui ʻana i kahi mea hou, a ʻaʻole pono ka mea hoʻohana e kali no kahi holo holoʻokoʻa i ka pōʻai holoʻokoʻa.
  • No ka laʻana, ua hoʻohui au i kahi lawelawe deduplication e hoʻāʻo nei e hoʻohui i nā faila like. Inā hana ia no ka manawa lōʻihi i ka 1% o nā hihia, ʻaʻole ʻike ka mea kūʻai aku iā ia (e ʻike i luna), he mea hoʻohui nui, ʻoiai ʻaʻole pono mākou e XNUMX% wikiwiki a hilinaʻi.

Eia naʻe, ʻike koke ʻia nā hemahema:

  • Ua nalowale kā mākou ʻōnaehana i kona kūpaʻa paʻa. ʻO ia ke ʻano inā, no ka laʻana, kau inoa ʻoe i nā lawelawe like ʻole, a laila hiki iā ʻoe ke loaʻa i kahi mokuʻāina ʻē aʻe (no ka mea, ʻaʻohe manawa o kekahi o nā lawelawe e loaʻa ai kahi leka hoʻomaopopo mai ka queue kūloko). ʻO kahi hopena ʻē aʻe, ʻaʻohe manawa maʻamau o ka ʻōnaehana. ʻO ia hoʻi, ʻaʻole hiki, no ka laʻana, e hoʻokaʻawale i nā hanana āpau ma ka manawa hōʻea, no ka mea, ʻaʻole like nā wati ma waena o nā kikowaena (ʻoi aku, ʻo ka manawa like ma nā kikowaena ʻelua he utopia).
  • ʻAʻole hiki ke hoʻihoʻi wale ʻia nā hanana i kēia manawa (e like me ka hana me kahi waihona). Akā, pono ʻoe e hoʻohui i kahi hanana hou − hanana uku, e hoʻololi i ka mokuʻāina hope i ka mea i koi ʻia. Ma ke ʻano he laʻana mai kahi ʻāpana like: me ka ʻole o ka kākau hou ʻana i ka mōʻaukala (he maikaʻi ʻole i kekahi mau hihia), ʻaʻole hiki iā ʻoe ke hoʻihoʻi i kahi commit ma git, akā hiki iā ʻoe ke hana i kahi mea kūikawā. rollback hana, ka mea maoli e hoʻihoʻi i ka mokuʻāina kahiko. Eia naʻe, e mau ana ka hana hewa a me ka rollback i ka mōʻaukala.
  • Hiki ke hoʻololi ʻia ka ʻikepili ʻikepili mai ka hoʻokuʻu ʻana i ka hoʻokuʻu ʻana, akā ʻaʻole hiki ke hoʻonui hou ʻia nā hanana kahiko i ka maʻamau hou (no ka mea ʻaʻole hiki ke hoʻololi ʻia nā hanana ma ke kumu).

E like me kāu e ʻike ai, hana maikaʻi ʻo Event Sourcing me CQRS. Eia kekahi, ʻo ka hoʻokō ʻana i kahi ʻōnaehana me nā queues maikaʻi a kūpono hoʻi, akā me ka ʻole o ka hoʻokaʻawale ʻana i nā kahe ʻikepili, ua paʻakikī iā ia iho, no ka mea, pono ʻoe e hoʻohui i nā helu synchronization e neutralize i ka hopena maikaʻi a pau o nā queues. Ke hoʻohana nei i nā ala ʻelua i ka manawa hoʻokahi, pono e hoʻoponopono iki i ka code program. I kā mākou hihia, i ka hoʻouna ʻana i kahi faila i ke kikowaena, hiki mai ka pane "ok", ʻo ia wale nō ka mea "ua mālama ʻia ka hana o ka hoʻohui ʻana i ka faila." ʻO ka mea maʻamau, ʻaʻole kēia manaʻo ua loaʻa ka ʻikepili ma nā mea hana ʻē aʻe (no ka laʻana, hiki i ka lawelawe deduplication ke kūkulu hou i ka index). Eia nō naʻe, ma hope o kekahi manawa, e loaʻa i ka mea kūʻai aku kahi leka ma ke ʻano o "file X ua mālama ʻia."

Ma ka hopena:

  • Ke piʻi nei ka helu o nā kūlana hoʻouna faila: ma kahi o ka "faila i hoʻouna ʻia," loaʻa iā mākou ʻelua: "ua hoʻohui ʻia ka faila i ka pila ma ke kikowaena" a "ua mālama ʻia ka faila ma kahi waihona." ʻO ka mea hope, hiki i nā mea hana ʻē aʻe ke hoʻomaka i ka loaʻa ʻana o ka faila (hoʻoponopono ʻia no ka ʻoiaʻiʻo o ka holo ʻana o nā queues i nā wikiwiki like ʻole).
  • Ma muli o ka loaʻa ʻana o ka ʻike hoʻouna i kēia manawa ma nā ala like ʻole, pono mākou e hele mai me nā hoʻonā e loaʻa ai ke kūlana hana o ka faila. Ma muli o kēia: ʻaʻole e like me ka pane-noi maʻamau, hiki ke hoʻomaka hou ka mea kūʻai aku i ka wā e hana ana i ka faila, akā pololei ke kūlana o kēia hana ponoʻī. Eia kekahi, hana kēia mea, ma waho o ka pahu. ʻO ka hopena: ua ʻoi aku ko mākou ʻae ʻana i nā hemahema.

Kaʻaina

E like me ka mea i hōʻike ʻia ma luna nei, ʻaʻohe paʻa paʻa nā ʻōnaehana sourcing. ʻO ia ka mea hiki iā mākou ke hoʻohana i kekahi mau waihona me ka ʻole o ka hoʻonohonoho ʻana ma waena o lākou. Ke hoʻokokoke nei i kā mākou pilikia, hiki iā mākou ke:

  • E hoʻokaʻawale i nā faila ma ke ʻano. No ka laʻana, hiki ke hoʻokaʻawale ʻia nā kiʻi/wikiō a hiki ke koho ʻia kahi ʻano ʻoi aku ka maikaʻi.
  • E hoʻokaʻawale i nā moʻokāki ma ka ʻāina. Ma muli o nā kānāwai he nui, koi ʻia paha kēia, akā hāʻawi ʻia kēia ʻano hana hoʻolālā i kēlā manawa kūpono

Nā hiʻohiʻona hoʻolālā kūpono

Inā makemake ʻoe e hoʻololi i ka ʻikepili mai kahi waihona i kekahi, a laila ʻaʻole lawa nā ala maʻamau. ʻO ka mea pōʻino, i kēia hihia, pono ʻoe e hoʻōki i ka pila, hana i ka neʻe ʻana, a laila hoʻomaka. I ka hihia maʻamau, ʻaʻole hiki ke hoʻololi ʻia ka ʻikepili "ma ka lele", akā naʻe, inā mālama ʻia ka queue hanana, a loaʻa iā ʻoe nā paʻi kiʻi o nā mokuʻāina mālama mua, a laila hiki iā mākou ke hana hou i nā hanana penei:

  • Ma ka Puna Hana, loaʻa i kēlā me kēia hanana kona ʻike ponoʻī (pono, ʻaʻole emi iho). ʻO ia ke ʻano hiki iā mākou ke hoʻohui i kahi kahua i ka waihona - ka id o ka mea hana hope loa.
  • Hoʻopili mākou i ka pila i hiki ke hana ʻia nā hanana āpau no nā waihona kūʻokoʻa (ʻo ka mea mua ka mea i mālama ʻia ai ka ʻikepili, a ʻo ka lua he mea hou, akā ʻaʻole naʻe). ʻO ka laina ʻelua, ʻoiaʻiʻo, ʻaʻole i hana ʻia.
  • Hoʻomaka mākou i ka pila lua (ʻo ia hoʻi, hoʻomaka mākou e hoʻokani i nā hanana).
  • Ke ʻae ʻia ka pila hou (ʻo ia hoʻi, ka ʻokoʻa o ka manawa ma waena o ka hoʻohui ʻana i kahi mea a me ka hoʻihoʻi ʻana iā ia e ʻae ʻia), hiki iā ʻoe ke hoʻomaka e hoʻololi i nā mea heluhelu i kahi waihona hou.

E like me kāu e ʻike ai, ʻaʻole i loaʻa iā mākou, a ʻaʻole naʻe i loaʻa, ke kūpaʻa paʻa i kā mākou ʻōnaehana. Aia wale nō ka hoʻopaʻa ʻana, ʻo ia hoʻi, he hōʻoiaʻiʻo e hoʻokō ʻia nā hanana ma ke ʻano like (akā me nā lohi like ʻole). A, me ka hoʻohana ʻana i kēia, hiki iā mākou ke hoʻololi maʻalahi i ka ʻikepili me ka ʻole e hoʻōki i ka ʻōnaehana i kēlā ʻaoʻao o ka honua.

No laila, ʻo ka hoʻomau ʻana i kā mākou hiʻohiʻona e pili ana i ka mālama pūnaewele no nā faila, ua hāʻawi ʻia kēlā ʻano hoʻolālā iā mākou i kekahi mau bonus:

  • Hiki iā mākou ke hoʻoneʻe i nā mea i kahi kokoke i nā mea hoʻohana ma ke ala ikaika. Ma kēia ala hiki iā ʻoe ke hoʻomaikaʻi i ka maikaʻi o ka lawelawe.
  • Hiki iā mākou ke mālama i kekahi ʻikepili i loko o nā hui. No ka laʻana, koi pinepine nā mea hoʻohana ʻo Enterprise i kā lākou ʻikepili e mālama ʻia i nā kikowaena data controlled (e pale i ka leak data). Ma o sharding hiki iā mākou ke kākoʻo maʻalahi i kēia. A ʻoi aku ka maʻalahi o ka hana inā loaʻa i ka mea kūʻai ke ao kūpono (no ka laʻana, Hoʻokipa ʻo Azure iā ia iho).
  • A ʻo ka mea nui ʻaʻole pono mākou e hana i kēia. Ma hope o nā mea a pau, i ka hoʻomaka ʻana, e hauʻoli nui mākou me hoʻokahi waihona no nā moʻolelo āpau (e hoʻomaka e hana wikiwiki). A ʻo ka hiʻohiʻona koʻikoʻi o kēia ʻōnaehana ʻoiai he mea hiki ke hoʻonui ʻia, ma ka pae mua he maʻalahi loa ia. ʻAʻole pono ʻoe e kākau koke i nā code e hana pū me kahi miliona mau laina kūʻokoʻa kūʻokoʻa, etc. Inā pono, hiki ke hana i kēia i ka wā e hiki mai ana.

Mea hoʻolako kikowaena maʻiʻo

ʻIke ʻia paha kēia kikoʻī, akā pono ia no kahi noi hoʻouka maʻamau. He mea maʻalahi kona ʻano: ʻaʻole hoʻokaʻawale ʻia nā ʻikepili static āpau mai ka server like kahi i loaʻa ai ka noi, akā mai nā mea kūikawā i hoʻolaʻa ʻia i kēia hana. ʻO ka hopena, ʻoi aku ka wikiwiki o kēia mau hana (ʻoi aku ka wikiwiki o ka nginx conditional i nā faila a ʻoi aku ka liʻiliʻi ma mua o kahi kikowaena Java). ʻO ka hoʻolālā CDN (Kuhi Pūnaewele Kuhi) hiki iā mākou ke huli i kā mākou mau faila ma kahi kokoke i nā mea hoʻohana hope, kahi hopena maikaʻi i ka maʻalahi o ka hana ʻana me ka lawelawe.

ʻO ka hiʻohiʻona maʻalahi a maʻamau o ka maʻiʻo static he pūʻulu o nā palapala a me nā kiʻi no kahi pūnaewele. He mea maʻalahi nā mea a pau me lākou - uaʻike muaʻia lākou, a laila e hoʻoukaʻia ka waihona i nā kikowaena CDN, mai kahi e māheleʻia ai i nā mea hoʻohana hope.

Eia nō naʻe, i ka ʻoiaʻiʻo, no ka ʻikepili static, hiki iā ʻoe ke hoʻohana i kahi ala e like me ka lambda architecture. E hoʻi kāua i kā mākou hana (pūnaewele waihona pūnaewele), kahi e pono ai mākou e puʻunaue i nā faila i nā mea hoʻohana. ʻO ka hopena maʻalahi ka hana ʻana i kahi lawelawe, no kēlā me kēia noi mea hoʻohana, e hana i nā loiloi pono āpau (ʻae ʻia, etc.), a laila hoʻoiho pololei i ka faila mai kā mākou waihona. ʻO ka hemahema nui o kēia ala, ʻo ia ka maʻiʻo static (a ʻo kahi faila me kahi hoʻoponopono hou, ʻoiaʻiʻo, ʻo ia ka maʻiʻo static) e puʻunaue ʻia e ka server like i loaʻa i ka loiloi ʻoihana. Akā, hiki iā ʻoe ke hana i kēia kiʻi:

  • Hāʻawi ke kikowaena i kahi URL hoʻoiho. Hiki iā ia ma ke ʻano file_id + kī, kahi kī he hōʻailona mini-digital e hāʻawi i ke kuleana e komo i ka kumuwaiwai no nā hola 24 e hiki mai ana.
  • Hāʻawi ʻia ka faila e ka nginx maʻalahi me nā koho aʻe:
    • Ke hoʻokoe ʻana i nā maʻiʻo. No ka mea hiki ke loaʻa kēia lawelawe ma kahi kikowaena kaʻawale, ua waiho mākou iā mākou iho i kahi mālama no ka wā e hiki mai ana me ka hiki ke mālama i nā faila hou loa i hoʻoiho ʻia ma ka disk.
    • Ke nānā nei i ke kī i ka manawa o ka hana ʻana i ka pilina
  • Koho: ka hoʻoheheʻe ʻana i ka ʻike. No ka laʻana, inā mākou e hoʻopaʻa i nā faila a pau i ka lawelawe, a laila hiki iā mākou ke hana unzipping pololei i kēia module. ʻO ka hopena: ua hana ʻia nā hana IO ma kahi o lākou. E hoʻokaʻawale maʻalahi kahi waihona waihona ma Java i ka nui o ka hoʻomanaʻo hou, akā ʻaʻole pono ke kākau hou ʻana i kahi lawelawe me ka loiloi ʻoihana i loko o nā kūlana Rust/C++. I kā mākou hihia, hoʻohana ʻia nā kaʻina hana like ʻole (a i ʻole nā ​​​​lawelawe), a no laila hiki iā mākou ke hoʻokaʻawale i ka loiloi ʻoihana a me nā hana IO.

Nā hiʻohiʻona hoʻolālā kūpono

ʻAʻole like loa kēia papahana me ka hāʻawi ʻana i ka ʻikepili static (no ka mea ʻaʻole mākou e hoʻouka i ka pūʻolo static holoʻokoʻa ma kahi), akā ʻo ka ʻoiaʻiʻo, pili pono kēia ala i ka hāʻawi ʻana i ka ʻikepili hiki ʻole ke hoʻololi. Eia kekahi, hiki ke hoʻonui ʻia kēia kumumanaʻo i nā hihia ʻē aʻe inā ʻaʻole paʻa wale ka ʻike, akā hiki ke hōʻike ʻia ma ke ʻano he pūʻulu o nā poloka hiki ʻole ke hoʻopau ʻia (ʻoiai hiki ke hoʻohui ʻia).

E like me kekahi laʻana (no ka hoʻoikaika): inā ʻoe i hana pū me Jenkins/TeamCity, a laila ʻike ʻoe ua kākau ʻia nā hopena ʻelua ma Java. ʻO lāua ʻelua he kaʻina Java e hoʻokele i ka orchestration a me ka hoʻokele waiwai. ʻO ka mea kūikawā, loaʻa iā lāua nā hana e like me "hoʻololi i kahi faila / waihona mai ka kikowaena." ʻO kahi laʻana: ka hoʻopuka ʻana i nā artifacts, ka hoʻoili ʻana i ke code kumu (inā ʻaʻole hoʻoiho ka luna i ke code mai ka waihona, akā hana ke kikowaena nona), ke komo i nā lāʻau. ʻOkoʻa kēia mau hana āpau i kā lākou ukana IO. ʻO ia hoʻi, ʻike ʻia ʻo ke kikowaena kuleana no ka loiloi ʻoihana paʻakikī i ka manawa like e hiki ke hoʻoikaika pono i nā kahe nui o ka ʻikepili ma o ia iho. A ʻo ka mea hoihoi loa, hiki ke hāʻawi ʻia kēlā hana i ka nginx like e like me ka hoʻolālā like (koe wale nō ke hoʻohui ʻia ke kī data i ka noi).

Eia naʻe, inā hoʻi mākou i kā mākou ʻōnaehana, loaʻa iā mākou kahi kiʻi like:

Nā hiʻohiʻona hoʻolālā kūpono

E like me kāu e ʻike ai, ua lilo ka ʻōnaehana i mea paʻakikī loa. I kēia manawa ʻaʻole ia he kaʻina hana liʻiliʻi e mālama i nā faila ma ka ʻāina. ʻO ka mea i koi ʻia ʻaʻole ke kākoʻo maʻalahi, ka mana mana API, etc. No laila, ma hope o ke kaha ʻia ʻana o nā kiʻi a pau, ʻoi aku ka maikaʻi o ka loiloi kikoʻī inā pono ka extensibility i ke kumukūʻai. Eia nō naʻe, inā makemake ʻoe e hiki ke hoʻonui i ka ʻōnaehana (me ka hana pū me ka nui o nā mea hoʻohana), a laila pono ʻoe e hele no nā hoʻonā like. Akā, ʻo ka hopena, ua mākaukau ka ʻōnaehana no ka hoʻonui ʻana i ka ukana (kokoke nā mea āpau e hiki ke hoʻopaʻa ʻia no ka scaling horizontal). Hiki ke hoʻonui ʻia ka ʻōnaehana me ka ʻole o ka hoʻōki ʻana (e hoʻolōʻihi iki kekahi mau hana).

E like me kaʻu i ʻōlelo ai i ka hoʻomaka ʻana, i kēia manawa ua hoʻomaka ka nui o nā lawelawe pūnaewele e loaʻa i ka ukana hoʻonui. A hoʻomaka wale kekahi o lākou e hoʻōki i ka hana pololei. ʻO kaʻoiaʻiʻo, ua hāʻule pololei nā ʻōnaehana i ka manawa i manaʻo ʻia ka ʻoihana e loaʻa kālā. ʻO ia, ma kahi o ka hoʻokuʻu ʻia ʻana, ma kahi o ka ʻōlelo ʻana i nā mea kūʻai aku "e hoʻolālā i kāu lawe ʻana no nā mahina e hiki mai ana," ʻōlelo wale ka ʻōnaehana "hele i kāu mau mea hoʻokūkū." ʻOiaʻiʻo, ʻo kēia ke kumukūʻai o ka huahana haʻahaʻa: e kū pololei nā poho i ka wā e kiʻekiʻe ai ka loaʻa.

hopena

Ua ʻike mua ʻia kēia mau ala āpau. Ua hoʻohana lōʻihi ka VK i ka manaʻo o Static Content Hosting e hōʻike i nā kiʻi. Hoʻohana ka nui o nā pāʻani pūnaewele i ka Sharding scheme e hoʻokaʻawale i nā mea pāʻani i nā ʻāpana a i ʻole e hoʻokaʻawale i nā wahi pāʻani (inā hoʻokahi ka honua). Hoʻohana ikaika ʻia ke ala ʻo Event Sourcing ma ka leka uila. ʻO ka hapa nui o nā noi kālepa kahi e loaʻa mau ai ka ʻikepili i kūkulu maoli ʻia ma kahi ala CQRS i hiki ke kānana i ka ʻikepili i loaʻa. ʻAe, ua hoʻohana ʻia ka scaling horizontal i nā lawelawe he nui no ka manawa lōʻihi.

Eia naʻe, ʻo ka mea nui loa, ua maʻalahi kēia mau hiʻohiʻona a pau i nā noi hou (inā kūpono lākou, ʻoiaʻiʻo). Hāʻawi ʻo Clouds iā Sharding a me ka scaling horizontal i kēia manawa, ʻoi aku ka maʻalahi ma mua o ke kauoha ʻana i nā kikowaena hoʻolaʻa like ʻole ma nā kikowaena data like ʻole. Ua maʻalahi ka CQRS, inā wale nō ma muli o ka hoʻomohala ʻana o nā hale waihona puke e like me RX. Ma kahi o 10 mau makahiki i hala aku nei, hiki i kahi pūnaewele laha ʻole ke kākoʻo i kēia. He mea maʻalahi hoʻi ka Event Sourcing e hoʻonohonoho i ka mahalo i nā ipu i hana ʻia me Apache Kafka. 10 makahiki i hala aku nei he mea hou kēia, i kēia manawa he mea maʻamau. Ua like ia me Static Content Hosting: ma muli o nā ʻenehana maʻalahi (me ka ʻoiaʻiʻo aia nā palapala kikoʻī a me kahi waihona nui o nā pane), ua maʻalahi kēia ala.

ʻO ka hopena, ʻoi aku ka maʻalahi o ka hoʻokō ʻana i kekahi mau hiʻohiʻona hale paʻakikī, ʻo ia ka mea ʻoi aku ka maikaʻi o ka nānā pono ʻana iā ia ma mua. Inā ma kahi noi he ʻumi makahiki i haʻalele ʻia kekahi o nā hoʻonā i luna ma muli o ke kumukūʻai kiʻekiʻe o ka hoʻokō a me ka hana, i kēia manawa, i kahi noi hou, a i ʻole ma hope o ka refactoring, hiki iā ʻoe ke hana i kahi lawelawe e hiki ke hoʻonui i ka architecturally ( ma ke ʻano o ka hana) a mākaukau i nā noi hou mai nā mea kūʻai aku (no ka laʻana, e hoʻokaʻawale i ka ʻikepili pilikino).

A ʻo ka mea nui loa: mai hoʻohana i kēia mau ala inā he noi maʻalahi kāu. ʻAe, nani a hoihoi lākou, akā no kahi pūnaewele me kahi kipa kiʻekiʻe o 100 poʻe, hiki iā ʻoe ke loaʻa pinepine me kahi monolith maʻamau (ma ka liʻiliʻi ma waho, hiki ke hoʻokaʻawale ʻia nā mea āpau i loko i nā modula, etc.).

Source: www.habr.com

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