Microservices: he aha lākou, no ke aha lākou a me ka wā e hoʻokō ai

Makemake wau e kākau i kahi ʻatikala e pili ana i ke kumuhana o ka hoʻolālā microservice no ka manawa lōʻihi, akā ʻelua mau mea i hoʻomau iaʻu - ʻo ka ʻoi aku ka nui o koʻu komo ʻana i ke kumuhana, ʻoi aku ka nui o kaʻu mea i ʻike ai, a ʻo kaʻu mea e hana ai. t ike pono e a'o a a'o. Ma kekahi ʻaoʻao, manaʻo wau aia kekahi mea e kūkākūkā ai ma waena o ka lehulehu ākea. No laila, mahalo ʻia nā manaʻo ʻē aʻe.

ʻO ke kānāwai o Conway a me ka pilina ma waena o ka ʻoihana, ka hui a me ka ʻōnaehana ʻike

E ʻae hou wau iaʻu iho e ʻōlelo:

"ʻO kēlā me kēia hui e hoʻolālā ana i kahi ʻōnaehana (ma ke ʻano ākea) e loaʻa i kahi hoʻolālā nona ka hoʻolālā e hoʻohālikelike i ke ʻano o nā hui i kēlā hui."
— Melvyn Conway, 1967

I koʻu manaʻo, ʻoi aku ka pili o kēia kānāwai i ka hiki ke hoʻonohonoho i kahi ʻoihana, ma mua o ka pololei o ka ʻōnaehana ʻike. E wehewehe au me kahi laʻana. E ʻōlelo paha mākou he manawa kūpono ʻoihana paʻa me kahi pōʻai ola o ka lōʻihi e kūpono i ka hoʻonohonoho ʻana i kahi ʻoihana (ʻaʻole kēia he typo, akā makemake nui au i kēia huaʻōlelo aʻu i ʻaihue ai). e pili ana i keia oihana .

Hoʻonohonoho ʻoihana o nā ʻōnaehana ʻike

Microservices: he aha lākou, no ke aha lākou a me ka wā e hoʻokō ai

E wehewehe au me kahi laʻana. E ʻōlelo mākou aia kahi manawa ʻoihana e hoʻonohonoho i kahi ʻoihana kūʻai pizza. Ma ka mana V1 (e kapa aku iā ia ma mua o ka ʻike), he pizzeria ka hui, kahi waihona kālā, a me kahi lawelawe lawe. Ua lōʻihi kēia mana i nā kūlana haʻahaʻa haʻahaʻa kaiapuni. A laila hele mai ka mana 2 e pani iā ​​​​ia - ʻoi aku ka holomua a hiki ke hoʻohana i kahi ʻōnaehana ʻike ma kāna kumu no ka ʻoihana me kahi hoʻolālā monolithic. A ma ʻaneʻi, i koʻu manaʻo, aia kahi hewa weliweli e pili ana i nā monoliths - ʻAʻole kūpono ka hoʻolālā monolithic i ke ʻano pāʻoihana domain. ʻAe, inā pēlā, ʻaʻole hiki i ka ʻōnaehana ke hana i nā mea a pau - i kūʻē i ke kānāwai o Conway a me ka noʻonoʻo maʻamau. ʻAʻole, ua kūlike ka hoʻolālā monolithic me ke ʻano ʻoihana i kēia manawa o ka hoʻomohala ʻana i ka ʻoihana - ʻo wau, ʻoiaʻiʻo, ʻo ke ʻano o ke kahua i hana ʻia ai ka ʻōnaehana a hoʻokomo i ka hana. He ʻoiaʻiʻo maikaʻi loa ia ʻoiai ʻaʻole e pili ana i ke ʻano o ka hoʻolālā ʻana, e hana maikaʻi ana ka mana hoʻolālā lawelawe lawelawe 3 a me ka mana microservices architecture N. He aha ka hopu?

Ke kahe nei nā mea a pau, hoʻololi nā mea a pau, a i ʻole nā ​​microservices i mea e hakakā ai i ka paʻakikī?

Ma mua o ka hoʻomau ʻana, e nānā kākou i kekahi mau kuhi hewa e pili ana i ka hoʻolālā microservice.

Hoʻopaʻapaʻa pinepine ka poʻe kākoʻo i ka hoʻohana ʻana i kahi microservice i ka wāwahi ʻana i kahi monolith i nā microservices e hoʻomaʻamaʻa i ke ala hoʻomohala ma o ka hoʻemi ʻana i ke kumu code o nā lawelawe pākahi. I koʻu manaʻo, he lapuwale kēia ʻōlelo. ʻO kaʻoiaʻiʻo, ʻo ka launa pū ʻana i loko o kahi monolith a me nā code homogeneous me he mea paʻakikī? Inā ʻo ia ka hihia, e kūkulu mua ʻia nā papahana āpau ma ke ʻano he microservices, ʻoiai ʻo ka hoʻomaʻamaʻa e hōʻike ana he ʻoi aku ka maʻamau o ka neʻe ʻana mai kahi monolith i microservices. ʻAʻole nalo ka paʻakikī; neʻe wale ia mai nā modula pākahi a i nā pilina (ʻo ia nā pahi data, RPC, API, a me nā protocols ʻē aʻe) a me nā ʻōnaehana orkestra. A paʻakikī kēia!

ʻO ka maikaʻi o ka hoʻohana ʻana i kahi pūʻulu heterogeneous he mea kānalua. ʻAʻole wau e hoʻopaʻapaʻa he hiki nō hoʻi kēia, akā i ka ʻoiaʻiʻo ʻaʻole hiki ke loaʻa (Ke nānā nei i mua - pono e hana kēia - akā ma ke ʻano he hopena ma mua o kahi pōmaikaʻi).

Ke ola o ka huahana a me ke ola lawelawe

E nānā hou i ke kiʻikuhi ma luna. ʻAʻole ia he mea kūpono ʻole aʻu i ʻike ai i ka emi ʻana o ke ola o kahi ʻano ʻokoʻa o kahi ʻoihana - i nā kūlana hou, ʻo ia ka wikiwiki o ka hoʻololi ʻana o kahi ʻoihana ma waena o nā mana e hoʻoholo ai no kona kūleʻa. Hoʻoholo ʻia ka holomua o kahi huahana e ka wikiwiki o ka hoʻāʻo ʻana i nā hypotheses ʻoihana i loko. A ma ʻaneʻi, i koʻu manaʻo, aia ke kumu nui o ka hoʻolālā microservice. Akā, e hele kāua i ka hoʻonohonoho.

E neʻe kākou i ka pae aʻe o ka hoʻomohala ʻana o nā ʻōnaehana ʻike - i ka hoʻolālā lawelawe lawelawe o SOA. No laila, i kekahi manawa ua hōʻike mākou i kā mākou huahana nā lawelawe lōʻihi - ola lōʻihi ma ke ʻano o ka neʻe ʻana ma waena o nā mana o kahi huahana, aia kahi manawa e ʻoi aku ka lōʻihi o ke ola o ka lawelawe ma mua o ke ola o ka mana hou o ka huahana. He mea kūpono ke hoʻololi ʻole iā lākou - mākou ʻO ka mea nui ka wikiwiki o ka hoʻololi ʻana i ka mana aʻe. Akā naʻe, koi ʻia mākou e hoʻololi mau i nā lawelawe - a eia nā mea āpau e hana ai no mākou, nā hana DevOps, containerization, a pēlā aku - nā mea a pau i hiki i ka noʻonoʻo. Akā ʻaʻole kēia mau microservices!

ʻO Microservices ma ke ʻano he mea e hakakā ai i ka paʻakikī ... hoʻonohonoho hoʻonohonoho

A ma ʻaneʻi hiki iā mākou ke neʻe hope i ka hana wehewehe o microservices - he ala kēia e hoʻomaʻamaʻa i ka hoʻokele hoʻonohonoho huahana. Ma nā kikoʻī hou aku, wehewehe pono ka hana o kēlā me kēia microservice i ka hana ʻoihana i loko o ka huahana e like me ke ʻano domain - a he mau mea kēia e ola ʻaʻole i kahi mana pōkole, akā i kahi manawa ʻoihana lōʻihi. A ʻo ka hoʻololi ʻana i ka ʻaoʻao aʻe o ka huahana hiki ke ʻike ʻole ʻia - hoʻololi ʻoe / hoʻohui i hoʻokahi microservice, a ʻo ke ʻano paha o kā lākou launa ʻana, a ʻike koke ʻoe iā ʻoe iho i ka wā e hiki mai ana, e waiho ana ma hope o nā mea hoʻokūkū uē e hoʻomau nei e lele i waena o nā mana o ko lakou mau monoliths. I kēia manawa e noʻonoʻo ʻoe aia ka nui o nā microservices me nā mea i koho mua ʻia a me nā mana ʻoihana. A hele mai ʻoe a kūkulu i ke ʻano o kāu huahana mai nā microservice i mākaukau - ma ke kahakiʻi ʻana i kahi kiʻi, no ka laʻana. Hoʻomaikaʻi - loaʻa iā ʻoe kahi kahua - a i kēia manawa hiki iā ʻoe ke huki i kāu ʻoihana nou iho. Moemoemoe.

haʻina

  • Pono e hoʻoholo ʻia ka hoʻolālā o ka ʻōnaehana e ka pōʻai ola o kāna mau mea. Inā noho kekahi mea i loko o kahi huahana huahana, ʻaʻohe kumu e hoʻonui ai i ka paʻakikī o ka ʻōnaehana ma o ka hoʻohana ʻana i kahi ala microservice.
  • Pono e hoʻokumu ʻia ka hoʻolālā ʻoihana Microservice ma ke ʻano hoʻohālike - no ka mea ʻo ka manawa ʻoihana ka ʻoihana lōʻihi loa
  • ʻO nā hana hoʻouna (DevOps practices) a me ka orchestration kekahi o nā mea koʻikoʻi no ka hoʻolālā microservice - no ke kumu o ka piʻi ʻana o ka loli o nā ʻāpana i hoʻonui i nā koi i ka wikiwiki a me ka maikaʻi o ka lawe ʻana.

Source: www.habr.com

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