Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Ke hoʻololi nei ʻo Habr i ka honua. He makahiki ʻoi aʻe kā mākou blogging i kēia manawa. Ma kahi o ʻeono mahina i hala aku nei, ua loaʻa iā mākou kahi manaʻo kūpono loa mai Khabrovites: "Dodo, ke ʻōlelo nei ʻoe i nā wahi āpau aia kāu ʻōnaehana ponoʻī. A he aha kēia ʻōnaehana? A no ke aha e pono ai i ke kaulahao pizza?

Noho mākou, noʻonoʻo a ʻike mākou ua pololei ʻoe. Ke ho'āʻo nei mākou e wehewehe i nā mea a pau ma ko mākou mau manamana lima, akā ua puka mai i nā ʻāpana haehae a ʻaʻohe wahi i kahi wehewehe piha o ka ʻōnaehana. Pēlā i hoʻomaka ai ka huakaʻi lōʻihi o ka ʻohi ʻana i ka ʻike, ka ʻimi ʻana i nā mea kākau a me ke kākau ʻana i nā ʻatikala e pili ana iā Dodo IS. E hele kāua!

Mahalo: Mahalo iā ʻoe no ka hāʻawi ʻana i kāu manaʻo me mākou. Mahalo iā ia, ua wehewehe hope mākou i ka ʻōnaehana, i hōʻuluʻulu i kahi radar ʻenehana a e hoʻopuka koke i kahi wehewehe nui o kā mākou kaʻina hana. Inā ʻaʻole ʻoe, ua noho mākou ma laila no 5 mau makahiki hou.

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Nā ʻatikala "He aha ka Dodo IS?" haʻi e pili ana i:

  1. Monolith mua ma Dodo IS (2011-2015). (Ke holo nei...)
  2. ʻO ke ala hope o ke keʻena: nā kahua kaʻawale a me ke kaʻa. (Aia ʻoe)
  3. ʻO ke ala ʻaoʻao o ka mea kūʻai aku: facade ma luna o ke kumu (2016-2017). (Ke holo nei...)
  4. ʻO ka mōʻaukala o nā microservices maoli. (2018-2019). (Ke holo nei...)
  5. Hoʻopau i ka ʻeli ʻana o ka monolith a me ka hoʻopaʻa ʻana o ka hoʻolālā. (Ke holo nei...)

Inā makemake ʻoe e ʻike i kahi mea ʻē aʻe - e kākau i nā manaʻo.

Manaʻo no ka wehewehe ʻana o ka manawa mai ka mea kākau
Hoʻopaʻa mau wau i kahi hālāwai no nā limahana hou ma ke kumuhana "System Architecture". Kapa mākou iā ia "Intro to Dodo IS Architecture" a he ʻāpana ia o ke kaʻina hana no nā mea hoʻomohala hou. E haʻi ana ma kekahi ʻano a i ʻole e pili ana i kā mākou hale hoʻolālā, e pili ana i kāna mau hiʻohiʻona, ua hānau wau i kahi ala moʻolelo i ka wehewehe.

ʻO ka mea maʻamau, ke nānā nei mākou i ka ʻōnaehana ma ke ʻano he hoʻonohonoho o nā ʻāpana (ʻenehana a i ʻole kiʻekiʻe kiʻekiʻe), nā modula pāʻoihana e launa pū kekahi me kekahi e hoʻokō i kekahi pahuhopu. A inā kūpono kēlā manaʻo no ka hoʻolālā ʻana, a laila ʻaʻole kūpono ia no ka wehewehe a me ka ʻike. Aia kekahi mau kumu ma aneʻi:

  • He ʻokoʻa ka ʻoiaʻiʻo mai ka mea ma ka pepa. ʻAʻole holo nā mea a pau e like me ka mea i manaʻo ʻia. A hoihoi mākou i ka hopena maoli a me ka hana.
  • Hōʻike paʻa i ka ʻike. ʻO ka ʻoiaʻiʻo, hiki iā ʻoe ke hele i ka manawa mai ka hoʻomaka a i ke kūlana o kēia manawa.
  • Mai ka maʻalahi a paʻakikī. ʻAʻole ma ke ao holoʻokoʻa, akā i kā mākou hihia. Ua neʻe ka hoʻolālā mai nā ala maʻalahi a i nā mea paʻakikī. ʻO ka pinepine ma o ka hoʻopiʻi ʻana, ua hoʻoponopono ʻia nā pilikia o ka wikiwiki a me ka paʻa ʻana, a me nā ʻano waiwai ʻē aʻe mai ka papa inoa o nā pono hana ʻole (ʻaneʻi ʻōlelo maikaʻi e pili ana i ka hoʻohālikelike ʻana i ka paʻakikī me nā koi ʻē aʻe).

I ka makahiki 2011, ua like ke ano o ka hale hana Dodo IS penei:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Ma ka 2020, ua lilo ia i mea paʻakikī loa a ua like kēia:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Pehea i hana ʻia ai kēia hoʻololi? No ke aha e pono ai nā ʻāpana like ʻole o ka ʻōnaehana? He aha nā hoʻoholo hale kūkulu i hana ʻia a no ke aha? E ʻike kākou ma kēia pūʻulu ʻatikala.

ʻO nā pilikia mua o 2016: no ke aha e haʻalele ai nā lawelawe i ka monolith

ʻO nā ʻatikala mua mai ka pōʻai e pili ana i nā lawelawe i hoʻokaʻawale mua ʻia mai ka monolith. No ka hoʻokomo ʻana iā ʻoe i ka pōʻaiapili, e haʻi wau iā ʻoe i nā pilikia i loaʻa iā mākou i ka ʻōnaehana ma ka hoʻomaka ʻana o 2016, pono mākou e hoʻoponopono i ka hoʻokaʻawale ʻana o nā lawelawe.

ʻO kahi waihona MySql hoʻokahi, kahi i kākau ai nā noi āpau i kēlā manawa ma Dodo IS i kā lākou moʻolelo. ʻO nā hopena:

  • ʻO ka ukana kaumaha (me 85% o nā noi i helu ʻia no ka heluhelu ʻana).
  • Ua ulu ke kumu. Ma muli o kēia, ua lilo kona kumukūʻai a me kāna kākoʻo i pilikia.
  • Hoʻokahi wahi o ka hāʻule. Inā hoʻomaka koke kekahi palapala noi e kākau i ka ʻikepili e hana ʻoi aku ka ikaika, a laila ua manaʻo nā noi ʻē aʻe iā lākou iho.
  • ʻAʻole kūpono i ka mālama ʻana a me nā nīnau. Hoʻopaʻa pinepine ʻia ka ʻikepili i kekahi ʻano kūpono no kekahi mau hiʻohiʻona akā ʻaʻole kūpono no nā mea ʻē aʻe. Hiki i nā indexes ke hoʻolōʻihi i kekahi mau hana, akā hiki ke hoʻolohi i nā mea ʻē aʻe.
  • Ua hoʻopau ʻia kekahi o nā pilikia ma ka hana wikiwiki ʻana i nā caches a me nā kope heluhelu i nā waihona (he ʻatikala ʻokoʻa kēia), akā ua ʻae wale lākou iā lākou e loaʻa ka manawa a ʻaʻole i hoʻoponopono i ka pilikia.

ʻO ka pilikia ka hele ʻana o ka monolith ponoʻī. ʻO nā hopena:

  • Hoʻokuʻu ʻia hoʻokahi a kakaʻikahi.
  • Paʻakikī i ka hoʻomohala hui ʻana o ka nui o nā kānaka.
  • ʻAʻole hiki ke lawe mai i nā ʻenehana hou, nā papa hana hou a me nā hale waihona puke.

ʻO nā pilikia me ke kumu a me ka monolith ua wehewehe pinepine ʻia, no ka laʻana, i ka pōʻaiapili o nā ulia i ka hoʻomaka ʻana o 2018 (E like me Munch, a i ʻole kekahi mau huaʻōlelo e pili ana i ka aie loea, ʻO ka lā i kū ai ʻo Dodo IS. Palapala Asynchronous и ʻO ka moʻolelo o ka manu Dodo mai ka ʻohana Phoenix. Ka Hiolo Nui o Dodo IS), no laila ʻaʻole au e noho nui. E ʻōlelo wale wau ua makemake mākou e hāʻawi i ka maʻalahi i ka wā e hoʻomohala ai i nā lawelawe. ʻO ka mea mua, pili kēia i ka poʻe i hoʻouka nui ʻia a me ke kumu o ka ʻōnaehana holoʻokoʻa - Auth a me Tracker.

ʻO ke ala hope o ke keʻena: nā kumu hoʻokaʻawale a me ka kaʻa

Mokuna Navigation

  1. Hoʻolālā Monolith 2016
  2. Hoʻomaka e wehe i ka Monolith: Auth a me Tracker Separation
  3. He aha ka hana a Auth?
  4. No hea mai na ukana?
  5. Ke wehe nei i ka Auth
  6. He aha ka hana a Tracker?
  7. No hea mai na ukana?
  8. Wehe ʻana i ka mea hoʻokele

Hoʻolālā Monolith 2016

Eia nā poloka nui o ka Dodo IS 2016 monolith, a aia ma lalo iho kahi transcript o kā lākou mau hana nui.
Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena
Hoʻouna kālā. Heluhelu no nā ʻelele, hoʻopuka i nā kauoha i nā ʻelele.
kikowaena kikowaena. ʻO kaʻaeʻana i nā kauoha ma o ka mea hoʻohana.
paena. ʻO kā mākou pūnaewele (dodopizza.ru, dodopizza.co.uk, dodopizza.by, etc.).
Eia. ʻO ka ʻae a me ka lawelawe hōʻoia no ke keʻena hope.
mea hahai. Ka tracker kauoha ma ka lumi kuke. Ka lawelawe no ka kaha ʻana i nā kūlana mākaukau i ka wā e hoʻomākaukau ai i kahi kauoha.
Pakaukau dala o ka Haleaina. Ke lawe ʻana i nā kauoha i loko o kahi hale ʻaina, nā hui kālā.
mea hoʻolilo. Hoʻouka i nā hōʻike ma 1C no ka helu helu.
Nā leka hoʻomaopopo a me nā invoice. Nā kauoha leo ma ka lumi kuke (no ka laʻana, "Ua hōʻea ka pizza hou") + paʻi pepa no nā ʻelele.
Luna Hoʻololi. Nā kikowaena no ka hana a ka luna hoʻololi: papa inoa o nā kauoha, nā kiʻi hana, ka hoʻololi ʻana o nā limahana i ka neʻe.
Luna Keena. Interfaces no ka hana a ka franchisee a me ka luna: hoʻokipa o nā limahana, hōʻike i ka hana o ka pizzeria.
Papa helu hale ʻaina. Hōʻike ʻia ka papa kuhikuhi ma nā TV ma nā pizzeria.
admin. Nā hoʻonohonoho i kahi pizzeria kikoʻī: papa inoa, nā kumukūʻai, ka helu helu, nā code promo, nā hoʻolaha, nā hae pūnaewele, etc.
Ka mooolelo pilikino a ka limahana. Nā papa hana o nā limahana, ʻike e pili ana i nā limahana.
Papa Hooikaika Kukina. ʻO kahi pale kaʻawale e kau ana ma ka lumi kuke a hōʻike i ka wikiwiki o nā mea hana pizza.
kamaʻilio. Hoʻouna ʻana i ka leka uila a me ka leka uila.
Waihona Waihona. ʻO ka lawelawe ponoʻī no ka loaʻa ʻana a me ka hoʻopuka ʻana i nā faila static.

ʻO nā hoʻāʻo mua e hoʻoponopono i nā pilikia i kōkua iā mākou, akā he hoʻomaha manawa wale nō. ʻAʻole lākou i lilo i ʻōnaehana hoʻonā, no laila ua maopopo he mea pono e hana ʻia me nā kumu. No ka laʻana, e hoʻokaʻawale i ka waihona maʻamau i nā mea kūikawā hou aʻe.

Hoʻomaka e wehe i ka Monolith: Auth a me Tracker Separation

ʻO nā lawelawe nui i hoʻopaʻa a heluhelu ʻia mai ka waihona ma mua o nā mea ʻē aʻe:

  1. Auth. ʻO ka ʻae a me ka lawelawe hōʻoia no ke keʻena hope.
  2. Mea hahai. Ka tracker kauoha ma ka lumi kuke. Ka lawelawe no ka kaha ʻana i nā kūlana mākaukau i ka wā e hoʻomākaukau ai i kahi kauoha.

He aha ka hana a Auth?

ʻO Auth kahi lawelawe e komo ai nā mea hoʻohana i ke keʻena hope (aia kahi puka kūʻokoʻa kūʻokoʻa ma ka ʻaoʻao o ka mea kūʻai aku). Kāhea ʻia i loko o ka noi e hōʻoia i ka loaʻa ʻana o nā kuleana e pono ai a ʻaʻole i loli kēia mau kuleana mai ka hoʻopaʻa inoa hope. Ma o ia mea, komo nā mea hana i ka pizzeria.

No ka laʻana, makemake mākou e wehe i kahi hōʻike me nā statuses o nā kauoha i hoʻopau ʻia ma ka TV e kau ana ma ke keʻena. A laila wehe mākou i ka auth.dodopizza.ru, koho i ka "Login as a device", ua ʻike ʻia kahi code i hiki ke hoʻokomo ʻia i kahi ʻaoʻao kūikawā ma ke kamepiula o ka shift manager, e hōʻike ana i ke ʻano o ka mea hana (mea hana). E hoʻololi ka TV ponoʻī i ka interface i makemake ʻia o kāna pizzeria a hoʻomaka e hōʻike i nā inoa o nā mea kūʻai aku i mākaukau nā kauoha ma laila.

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

No hea mai na ukana?

ʻO kēlā me kēia mea hoʻohana o ka keʻena hope e hele i ka waihona, i ka papa hoʻohana no kēlā me kēia noi, huki i ka mea hoʻohana ma o kahi nīnau sql a nānā inā loaʻa iā ia ka pono a me nā kuleana i kēia ʻaoʻao.

Hana like kēlā me kēia me ka papa ʻaina, e nānā ana i kāna kuleana a me kona komo ʻana. ʻO ka nui o nā noi i ka waihona kumu e alakaʻi i kāna hoʻouka ʻana a me ka hoʻopau ʻana i nā kumuwaiwai o ka waihona maʻamau no kēia mau hana.

Ke wehe nei i ka Auth

Loaʻa i ka Auth kahi kikowaena kaʻawale, ʻo ia hoʻi, nā ʻikepili e pili ana i nā mea hoʻohana, nā logins a i ʻole nā ​​​​mea hana i komo i ka lawelawe (no ka manawa) a noho ma laila. Inā makemake kekahi iā lākou, a laila e hele ʻo ia i kēia lawelawe no ka ʻikepili.

UA. ʻO ka papahana mua o ka hana penei:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Makemake wau e wehewehe iki i ka hana ʻana:

  1. ʻO kahi noi mai waho e hele mai i ka hope (aia ʻo Asp.Net MVC), lawe pū me ia i kahi cookie session, i hoʻohana ʻia e kiʻi i ka ʻikepili hālāwai mai Redis(1). Loaʻa iā ia ka ʻike e pili ana i ke komo ʻana, a laila wehe ke komo i ka mea hoʻoponopono (3,4), a i ʻole.
  2. Inā ʻaʻohe komo, pono ʻoe e hele i ke kaʻina hana ʻae. Maʻaneʻi, no ka maʻalahi, ua hōʻikeʻia ma keʻano he māhele o ke ala ma keʻano hoʻokahi,ʻoiai he hoʻololi ia i kaʻaoʻao komo. I ka hihia o kahi hiʻohiʻona maikaʻi, e loaʻa iā mākou kahi kau kūpono a hele i ka Backoffice Controller.
  3. Inā loaʻa ka ʻikepili, a laila pono ʻoe e nānā iā ia no ka pili ʻana i ka waihona mea hoʻohana. Ua loli paha kāna kuleana, ʻaʻole pono e ʻae ʻia ma ka ʻaoʻao i kēia manawa? I kēia hihia, ma hope o ka loaʻa ʻana o ke kau (1), pono ʻoe e hele pololei i ka waihona a nānā i ke komo ʻana o ka mea hoʻohana me ka hoʻohana ʻana i ka papa loiloi hōʻoia (2). A laila, i ka ʻaoʻao login, a i ʻole e hele i ka mea hoʻoponopono. ʻO ia ʻōnaehana maʻalahi, akā ʻaʻole maʻamau.
  4. Inā hala nā kaʻina hana a pau, a laila lele mākou i ka loiloi i nā mea hoʻoponopono a me nā ʻano.

Hoʻokaʻawale ʻia ka ʻikepili mea hoʻohana mai nā ʻikepili ʻē aʻe a pau, mālama ʻia i loko o kahi pākaukau lālā ʻokoʻa, lilo nā hana mai ka AuthService logic layer i nā ala api. Ua wehewehe maopopo ʻia nā palena ʻāina: nā mea hoʻohana, kā lākou mau kuleana, ke komo ʻana i ka ʻikepili, ka hāʻawi ʻana a me ke kāpae ʻana i ke komo. Ke nānā aku nei nā mea a pau i hiki ke lawe ʻia i kahi lawelawe kaʻawale.

LILO. Pēlā lākou i hana ai:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

He nui nā pilikia o kēia ala. No ka laʻana, ʻaʻole like ke kāhea ʻana i kahi ala i loko o kahi kaʻina hana me ke kāhea ʻana i kahi lawelawe waho ma o http. ʻO ka latency, ka hilinaʻi, ka mālama ʻana, ka ʻokoʻa o ka hana. Ua'ōlelo nuiʻo Andrey Morevskiy e pili ana i ia mau pilikia ma kāna hōʻike. "50 mau aka o nā lawelawe liʻiliʻi".

ʻO ka lawelawe hōʻoia a, me ia, hoʻohana ʻia ka lawelawe hāmeʻa no ke keʻena hope, ʻo ia hoʻi, no nā lawelawe a me nā pilina i hoʻohana ʻia i ka hana. Hoʻokaʻawale ʻia ka hōʻoia ʻana no nā lawelawe mea kūʻai aku (e like me kahi pūnaewele a i ʻole ka polokalamu kelepona) me ka ʻole o ka hoʻohana ʻana iā Auth. Hoʻokahi makahiki ka hoʻokaʻawale ʻana, a i kēia manawa ke hana hou nei mākou i kēia kumuhana, e hoʻololi ana i ka ʻōnaehana i nā lawelawe hōʻoia hou (me nā protocol maʻamau).

No ke aha i lōʻihi ai ka kaʻawale ʻana?
Nui nā pilikia ma ke ala i hoʻolohi iā mākou:

  1. Makemake mākou e hoʻoneʻe i ka ʻikepili mea hoʻohana, mea hana, a me ka hōʻoia ʻana mai nā ʻikepili kikoʻī ʻāina i hoʻokahi. No ka hana ʻana i kēia, pono mākou e unuhi i nā papa a me ka hoʻohana ʻana mai ka int identifier i ka honua UUId identifier (i hana hou i kēia code. Roman Bukin "Uuid - he moʻolelo nui o kahi hale liʻiliʻi" a me ka papahana open source Nā mea mua). ʻO ka mālama ʻana i ka ʻikepili mea hoʻohana (no ka mea he ʻike pilikino ia) aia kona mau palena a no kekahi mau ʻāina pono e mālama ʻokoʻa iā lākou. Akā, pono ka id honua o ka mea hoʻohana.
  2. Nui nā papa ma ka waihona i loaʻa ka ʻike loiloi e pili ana i ka mea hoʻohana i hana i ka hana. Pono kēia i kahi mīkini hou no ka kūlike.
  3. Ma hope o ka hana ʻana i nā lawelawe api, ua lōʻihi ka manawa o ka hoʻololi ʻana i kahi ʻōnaehana ʻē aʻe. Pono ka hoʻololi ʻana no nā mea hoʻohana a pono e hana lima.

Ka hoʻopaʻa inoa ʻana i nā mea hana ma kahi pizza:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

ʻO ka hoʻolālā maʻamau ma hope o ka unuhi ʻana o ka lawelawe Auth and Devices:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

i hoʻopuka. No 2020, ke hana nei mākou i kahi mana hou o Auth, i hoʻokumu ʻia ma ke kūlana mana ʻae OAuth 2.0. He paʻakikī kēia maʻamau, akā pono ia no ka hoʻomohala ʻana i kahi lawelawe hōʻoia pass-through. Ma ka ʻatikala "Nā mea liʻiliʻi o ka ʻae: kahi ʻike o ka ʻenehana OAuth 2.0» Ua hoʻāʻo mākou ʻo Alexey Chernyaev e haʻi e pili ana i ka maʻamau ma ke ʻano maʻalahi a maopopo e hiki ai ke mālama i ka manawa ma ke aʻo ʻana.

He aha ka hana a Tracker?

I kēia manawa e pili ana i ka lua o nā lawelawe i hoʻouka ʻia. Hana ka tracker i ʻelua hana:

  • Ma kekahiʻaoʻao,ʻo kāna hana ka hōʻikeʻana i nā limahana ma ka lumi kuke i nā kauoha i kēia manawa i ka hana, nā huahana e pono e kuke i kēia manawa.
  • Ma ka ʻaoʻao ʻē aʻe, e helu i nā kaʻina hana a pau i ka lumi kuke.

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Ke ʻike ʻia kahi huahana hou i kahi kauoha (no ka laʻana, ka pizza), hele ia i ke kahua tracker Rolling out. Ma kēia kahua, aia kahi mea hana pizza nāna e lawe i kahi bun o ka nui i makemake ʻia a ʻōwili iā ia i waho, a laila ʻike ʻo ia ma ka papa tracker ua hoʻopau ʻo ia i kāna hana a hoʻololi i ka waihona palaoa i ʻōwili ʻia i ke kahua aʻe - "Initiation" .

Ma laila, hoʻopiha ka mea hana pizza aʻe i ka pizza, a laila hoʻomaopopo ma ka papa ʻaina ua hoʻopau ʻo ia i kāna hana a hoʻokomo i ka pizza i loko o ka umu (he wahi ʻokoʻa hoʻi kēia e pono e ʻike ʻia ma ka papa). ʻO ia ʻōnaehana mai ka hoʻomaka ʻana ma Dodo a mai ka hoʻomaka ʻana o ka noho ʻana o Dodo IS. Hāʻawi ia iā ʻoe e hoʻopaʻa piha a hoʻohelu i nā kālepa āpau. Eia kekahi, ʻōlelo ka tracker pehea e kuke ai i kahi huahana, alakaʻi i kēlā me kēia ʻano huahana e like me kāna mau hana hana, mālama i ka manawa kuke maikaʻi loa no ka huahana, a mālama i nā hana āpau ma ka huahana.

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻenaʻO kēia ke ʻano o ka pale o ka papa ma ke kahua o ka tracker "Raskatka"

No hea mai na ukana?

Loaʻa i kēlā me kēia pizzeria ma kahi o ʻelima papa me kahi tracker. I ka makahiki 2016, ua ʻoi aku ma mua o 100 mau pizzeria (a ʻoi aku ma mua o 600 i kēia manawa). Ke noi nei kēlā me kēia papa i ka hope i hoʻokahi manawa i kēlā me kēia 10 kekona a ʻoki i ka ʻikepili mai ka papa kauoha (pili me ka mea kūʻai aku a me ka helu wahi), ka haku mele (pili me ka huahana a me ka hōʻike ʻana i ka nui), ka papa helu motivation (ka ʻike ʻia ka manawa o ke kaomi ʻana i loko). Ke kaomi ʻana o kahi mea hana pizza i kahi huahana ma ka tracker, hoʻonui ʻia nā mea komo i loko o kēia mau papa ʻaina. He laulā ka papa kauoha, loaʻa pū nā mea hoʻokomo i ka wā e ʻae ai i kahi kauoha, nā mea hou mai nā ʻāpana ʻē aʻe o ka ʻōnaehana a me nā heluhelu he nui, no ka laʻana, ma kahi TV e kau ana i kahi pizzeria a hōʻike i nā kauoha i pau i nā mea kūʻai.

I ka wā o ka hakakā ʻana me nā ukana, i ka wā i hūnā ʻia ai nā mea āpau a me nā mea āpau a hoʻoneʻe ʻia i ka replica asynchronous o ke kumu, ua hoʻomau kēia mau hana me ka tracker i ka kumu kumu. ʻAʻole pono e loaʻa kahi lag, pono ka ʻikepili i kēia manawa, ʻaʻole ʻae ʻia ka ʻae ʻole.

Eia kekahi, ʻo ka nele o nā papa ponoʻī a me nā kuhikuhi ma luna o lākou ʻaʻole i ʻae i ke kākau ʻana i nā nīnau kikoʻī i hoʻohālikelike ʻia no kā lākou hoʻohana. No ka laʻana, ʻoi aku ka maikaʻi o ka loaʻa ʻana o kahi papa kuhikuhi no ka pizzeria ma kahi papa ʻaina. Wehe mau mākou i nā kauoha pizzeria mai ka waihona tracker. I ka manawa like, no ka loaʻa ʻana o kahi kauoha, ʻaʻole ia he mea nui i ka pizzeria e hāʻule ai, ʻoi aku ka nui o ka mea kūʻai aku i hana i kēia kauoha. A ʻo ia hoʻi, pono ka index ma ka mea kūʻai aku. ʻAʻole pono ka tracker e mālama i ka id o ka loaʻa paʻi a i ʻole nā ​​hoʻolaha bonus e pili ana i ke kauoha ma ka papa kauoha. ʻAʻole hoihoi kēia ʻike i kā mākou lawelawe tracker. I loko o kahi waihona monolithic maʻamau, hiki i nā papa ke hoʻololi wale i waena o nā mea hoʻohana āpau. ʻO kēia kekahi o nā pilikia kumu.

UA. ʻO ka papa hana mua:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

ʻOiai ma hope o ka hoʻokaʻawale ʻia ʻana i nā kaʻina kaʻawale, ua mau ka hapa nui o ka waihona code no nā lawelawe like ʻole. ʻO nā mea a pau ma lalo o nā mea hoʻoponopono he hoʻokahi a noho i loko o ka waihona hoʻokahi. Ua hoʻohana mākou i nā ala maʻamau o nā lawelawe, nā waihona, kahi kumu maʻamau, kahi e waiho ai nā papa maʻamau.

Wehe ʻana i ka mea hoʻokele

ʻO ka pilikia nui me ka tracker, pono e hoʻonohonoho ʻia ka ʻikepili ma waena o nā ʻikepili like ʻole. ʻO kēia hoʻi kona ʻokoʻa nui mai ka hoʻokaʻawale ʻana o ka lawelawe Auth, hiki ke loli ke kauoha a me kona kūlana a pono e hōʻike ʻia i nā lawelawe like ʻole.

ʻAe mākou i kahi kauoha ma ka Restaurant's Checkout (he lawelawe kēia), mālama ʻia i ka waihona ma ke kūlana "Accepted". Ma hope o kēlā, pono ʻo ia e hele i ka tracker, kahi e hoʻololi hou ai i kona kūlana: mai "Kitchen" a "Packed". I ka manawa like, hiki mai kekahi mau mana o waho mai ka Cashier a i ʻole ka Shift Manager interface me ke kauoha. E hāʻawi wau i nā kūlana kauoha me kā lākou wehewehe ʻana i ka papa:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena
ʻO ke kumumanaʻo no ka hoʻololi ʻana i nā kūlana kauoha e like me kēia:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Hoʻololi nā kūlana ma waena o nā ʻōnaehana like ʻole. A eia ka tracker ʻaʻole ia he ʻōnaehana hope i pani ʻia ai ka ʻikepili. Ua ʻike mākou i kekahi mau ala kūpono no ka hoʻokaʻawale ʻana i kēlā hihia:

  1. Hoʻopili mākou i nā hana kauoha a pau i hoʻokahi lawelawe. I kā mākou hihia, pono kēia koho i ka lawelawe nui loa e hana me ke kauoha. Inā mākou e kū i laila, e loaʻa iā mākou ka lua monolith. ʻAʻole mākou e hoʻoponopono i ka pilikia.
  2. Hoʻokahi ʻōnaehana kelepona i kekahi. ʻO ka lua o ka koho ua ʻoi aku ka hoihoi. Akā me ia, hiki i nā kaulahao o nā kelepona (nā hāʻule kahe), ʻoi aku ka kiʻekiʻe o ka pilina o nā ʻāpana, ʻoi aku ka paʻakikī o ka mālama ʻana.
  3. Hoʻonohonoho mākou i nā hanana, a kamaʻilio kēlā me kēia lawelawe me kekahi ma o kēia mau hanana. ʻO ka hopena, ʻo ia ke kolu o ka koho i koho ʻia, e like me ka hoʻomaka ʻana o nā lawelawe āpau e hoʻololi i nā hanana me kekahi.

ʻO ka ʻoiaʻiʻo i koho mākou i ke kolu o ka koho, ʻo ia ka mea e loaʻa i ka tracker kona waihona ponoʻī, a no kēlā me kēia hoʻololi i ke kauoha, e hoʻouna i kahi hanana e pili ana i kēia, kahi e kau inoa ai nā lawelawe ʻē aʻe a hāʻule hoʻi i loko o ka waihona kumu. No ka hana ʻana i kēia, pono mākou i kahi lawelawe e hōʻoia i ka lawe ʻana i nā leka ma waena o nā lawelawe.

I kēlā manawa, ua loaʻa iā mākou ʻo RabbitMQ i loko o ka waihona, no laila ka hoʻoholo hope loa e hoʻohana iā ia ma ke ʻano he leka uila. Hōʻike ke kiʻikuhi i ka hoʻololi ʻana o kahi kauoha mai ka Restaurant Cashier ma o ka Tracker, kahi e hoʻololi ai i kona kūlana a me kāna hōʻike ʻana ma ka ʻaoʻao o ka Mana Mana. LILO:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

E hoʻokaʻawale i ke ala i kēlā me kēia pae
Hoʻomaka ke ala kauoha ma kekahi o nā lawelawe kumu kauoha. Eia ka Luna Waiwai o ka hale ʻaina.

  1. Ma ka checkout, ua mākaukau loa ke kauoha, a ʻo ia ka manawa e hoʻouna aku ai i ka tracker. Hoʻolei ʻia ka hanana kahi i kākau inoa ʻia ai ka tracker.
  2. ʻO ka tracker, e ʻae ana i kahi kauoha nona iho, mālama iā ia i kāna waihona ponoʻī, e hana ana i ka hanana "Order Accepted by Tracker" a hoʻouna iā ia i RMQ.
  3. Aia kekahi mau mea lawelawe i kau inoa i ke kaʻa hanana hanana no kēlā me kēia kauoha. No mākou, he mea nui ka mea e hana ana i ka synchronization me kahi kumu monolithic.
  4. Loaʻa i ka handler kahi hanana, koho mai ia i ka ʻikepili i mea nui no ia: i kā mākou hihia, ʻo kēia ke kūlana o ke kauoha "Accepted by the Tracker" a hoʻonui i kāna ʻano kauoha i ka waihona nui.

Inā makemake kekahi i kahi kauoha mai nā kauoha papaʻaina monolithic, a laila hiki iā ʻoe ke heluhelu iā ia mai laila pū kekahi. No ka laʻana, pono i ka interface Orders i ka Shift Manager i kēia:

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

Hiki i nā lawelawe ʻē aʻe ke kau inoa e kauoha i nā hanana mai ka tracker e hoʻohana iā lākou no lākou iho.

Inā ma hope o ka manawa i lawe ʻia ke kauoha i ka hana, a laila hoʻololi mua kona kūlana i kāna waihona (Tracker database), a laila hana koke ʻia ka hanana "OrderIn Progress". Hoʻokomo pū ia i RMQ, mai kahi i hoʻonohonoho ʻia i loko o kahi waihona monolithic a hāʻawi ʻia i nā lawelawe ʻē aʻe. Aia paha nā pilikia like ʻole ma ke ala, hiki ke loaʻa nā kikoʻī hou aku e pili ana iā lākou ma ka hōʻike a Zhenya Peshkov e pili ana i nā kikoʻī o ka hoʻokō ʻana o ka hopena hopena i ka Tracker.

Hoʻolālā hope ma hope o nā hoʻololi ʻana i ka Auth a me Tracker

Moʻolelo o ka Dodo IS Architecture: Ke ala hope o ke keʻena

E hōʻuluʻulu i ka hopena waena: I ka wā mua, loaʻa iaʻu ka manaʻo e hoʻopili i ka mōʻaukala makahiki ʻeiwa o ka ʻōnaehana Dodo IS i hoʻokahi ʻatikala. Makemake au e kamaʻilio wikiwiki a maʻalahi e pili ana i nā pae o ka evolution. Eia naʻe, e noho ana i lalo no ka mea, ua ʻike wau ua ʻoi aku ka paʻakikī a me ka hoihoi o nā mea āpau ma mua o ka mea i ʻike ʻia.

I ka noʻonoʻo ʻana i nā pōmaikaʻi (a i ʻole ka nele) o ia mau mea, ua hiki iaʻu i ka hopena ʻaʻole hiki ke hoʻomau i ka hoʻomohala ʻana me ka ʻole o nā moʻolelo piha o nā hanana, nā hiʻohiʻona kikoʻī a me ka nānā ʻana i kaʻu mau hoʻoholo i hala.

Manaʻo wau he mea pono a hoihoi iā ʻoe ke aʻo e pili ana i kā mākou ala. I kēia manawa ke alo nei au i kahi koho kahi ʻāpana o ka ʻōnaehana Dodo IS e wehewehe i ka ʻatikala aʻe: e kākau i nā manaʻo a i ʻole ke koho balota.

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

He aha ka ʻāpana o Dodo IS āu e makemake ai e ʻike ma ka ʻatikala aʻe?

  • 24,1%Monolith mua ma Dodo IS (2011-2015)14

  • 24,1%ʻO nā pilikia mua a me nā hoʻonā (2015-2016)14

  • 20,7%ʻO ke ala ʻaoʻao o ka mea kūʻai aku: facade over base (2016-2017)12

  • 36,2%Ka mōʻaukala o nā microservices maoli (2018-2019)21

  • 44,8%ʻO ka ʻili piha ʻana o ka monolith a me ka hoʻopaʻa ʻana o ka hale kiʻi kiʻi26

  • 29,3%E pili ana i nā hoʻolālā hou aku no ka hoʻomohala ʻana i ka ʻōnaehana17

  • 19,0%ʻAʻole au makemake e ʻike i kekahi mea e pili ana iā Dodo IS11

58 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 6.

Source: www.habr.com

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