"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

Mai ka makahiki 2019, ua loaʻa iā Rūsia ke kānāwai e pili ana i ka lepili ʻana. ʻAʻole pili ke kānāwai i nā pūʻulu waiwai a pau, a ʻokoʻa nā lā no ke komo ʻana i ka mana o ka lepili pono no nā hui huahana. ʻO ka paka, nā kāmaʻa, a me nā lāʻau lapaʻau ka mea mua e hoʻopaʻa inoa ʻia; e hoʻohui ʻia nā huahana ʻē aʻe ma hope, no ka laʻana, ka ʻala, ka lole, a me ka waiū. Ua hoʻoikaika kēia hana hou i ka hoʻomohala ʻana i nā ʻōnaehana IT hou e hiki ai ke hahai i ke kaulahao ola holoʻokoʻa o kahi huahana mai ka hana ʻana a hiki i ke kūʻai ʻana e ka mea kūʻai hope, i nā poʻe āpau i ke kaʻina hana: ʻo ka mokuʻāina ponoʻī a me nā hui āpau e kūʻai aku ana i nā waiwai me. hoʻopaʻa inoa kauoha.

Ma X5, ʻo ka ʻōnaehana e nānā i nā waiwai i hōʻailona ʻia a hoʻololi i ka ʻikepili me ka mokuʻāina a me nā mea hoʻolako i kapa ʻia ʻo "Marcus". E haʻi mākou iā ʻoe i ke ʻano pehea a me ka mea nāna i hoʻomohala, he aha kāna ʻenehana ʻenehana, a no ke aha mākou e haʻaheo ai.

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

Kiekie Loa

Hoʻoponopono ʻo "Marcus" i nā pilikia he nui, ʻo ka mea nui ka pilina hoʻohui ma waena o nā ʻōnaehana ʻike X5 a me ka ʻōnaehana ʻike mokuʻāina no nā huahana i hōʻailona ʻia (GIS MP) e nānā i ka neʻe ʻana o nā huahana i hōʻailona ʻia. Hoʻopaʻa pū ka paepae i nā code lepili a pau i loaʻa iā mākou a me ka mōʻaukala holoʻokoʻa o ka neʻe ʻana o kēia mau code ma waena o nā mea, a kōkua i ka hoʻopau ʻana i ka helu hou ʻana i nā huahana i hōʻailona ʻia. Ke hoʻohana nei i ka laʻana o nā huahana paka, i hoʻokomo ʻia i loko o nā pūʻulu mua o nā mea i hōʻailona ʻia, hoʻokahi wale nō kalaka o ka cigakeke i loaʻa ma kahi o 600 mau ʻeke, aia kēlā me kēia me kāna code ponoʻī. A ʻo ka hana o kā mākou ʻōnaehana e nānā a hōʻoia i ke kānāwai o ka neʻe ʻana o kēlā me kēia ʻeke ma waena o nā hale kūʻai a me nā hale kūʻai, a hōʻoia i ka hiki ke kūʻai aku i ka mea kūʻai hope. A hoʻopaʻa mākou ma kahi o 000 mau hana kālā i kēlā me kēia hola, a pono mākou e hoʻopaʻa i ke ʻano o kēlā me kēia ʻeke i komo i loko o ka hale kūʻai. No laila, e noʻonoʻo ana i nā neʻe a pau ma waena o nā mea, ke manaʻo nei mākou he ʻumi mau piliona o nā moʻolelo i kēlā me kēia makahiki.

ʻO ka hui M

ʻOiai ʻo Marcus i manaʻo ʻia he papahana i loko o X5, ke hoʻokō ʻia nei me ka hoʻohana ʻana i kahi ala huahana. Hana ka hui e like me Scrum. Ua hoʻomaka ka papahana i ke kauwela i hala, akā ʻo nā hopena mua wale nō i ʻOkakopa - ua ʻākoakoa piha kā mākou hui ponoʻī, ua kūkulu ʻia ka ʻōnaehana ʻōnaehana a ua kūʻai ʻia nā mea hana. I kēia manawa he 16 poʻe ka hui, ʻeono o lākou e pili ana i ka hoʻomohala ʻana i hope a me ka hoʻomohala ʻana i mua, ʻekolu o lākou i komo i ka ʻōnaehana ʻōnaehana. ʻEono mau kānaka hou aʻe e pili ana i ka manual, ka ukana, ka hoʻāʻo ʻana, a me ka mālama ʻana i nā huahana. Eia hou, loaʻa iā mākou kahi loea SRE.

ʻAʻole wale nā ​​mea hoʻomohala e kākau i nā code i kā mākou hui; aneane ʻike nā poʻe āpau i ka papahana a kākau i nā autotests, hoʻouka i nā palapala a me nā palapala automation. Manaʻo nui mākou i kēia, ʻoiai ʻo ke kākoʻo huahana e koi i kahi kiʻekiʻe o ka automation. Ke ho'āʻo mau nei mākou e aʻo a kōkua i nā hoa hana i hoʻolālā ʻole ma mua, a hāʻawi iā lākou i kekahi mau hana liʻiliʻi e hana ai.

Ma muli o ka maʻi maʻi coronavirus, ua hoʻoneʻe mākou i ka hui holoʻokoʻa i ka hana mamao; ʻo ka loaʻa ʻana o nā mea hana āpau no ka hoʻokele hoʻomohala ʻana, ʻo ke kahe hana i kūkulu ʻia ma Jira a me GitLab i hiki ke maʻalahi i kēia pae. Ua hōʻike ʻia nā mahina i hala ʻole ʻaʻole i pilikia ka huahana o ka hui ma muli o ka hopena; no ka nui, ua hoʻonui ʻia ka hōʻoluʻolu ma ka hana, ʻo ka mea wale nō i nalowale ke kamaʻilio ola.

Halawai hui mamao

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

Nā hālāwai i ka wā hana mamao

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

Hoʻopili ʻenehana o ka hoʻonā

ʻO ka waihona waihona maʻamau a me ka mea hana CI / CD no X5 ʻo GitLab. Hoʻohana mākou iā ia no ka mālama ʻana i nā code, ka hoʻāʻo mau ʻana, a me ka hoʻolaha ʻana e hoʻāʻo a me nā kikowaena hana. Hoʻohana pū mākou i ka hoʻomaʻamaʻa ʻana i ka loiloi code, inā pono nā hoa hana 2 e ʻae i nā loli i hana ʻia e ka mea hoʻomohala i ke code. ʻO nā mea loiloi code Static SonarQube a me JaCoCo e kōkua iā mākou e mālama i kā mākou code maʻemaʻe a hōʻoia i ka pae i koi ʻia o ka uhi hoʻāʻo ʻāpana. Pono nā hoʻololi a pau i ke code i kēia mau loiloi. ʻO nā palapala hōʻike hoʻāʻo a pau e holo lima ʻia ma hope iho.

No ka hoʻokō maikaʻi ʻana i nā kaʻina hana ʻoihana e "Marcus", pono mākou e hoʻoponopono i kekahi mau pilikia ʻenehana, e pili ana i kēlā me kēia ma ke ʻano.

Hana 1. ʻO ka pono no ka scalability ākea o ka ʻōnaehana

No ka hoʻoponopono ʻana i kēia pilikia, ua koho mākou i kahi ala microservice i ka hoʻolālā. I ka manawa like, he mea nui e hoʻomaopopo i nā wahi o ke kuleana o nā lawelawe. Ua ho'āʻo mākou e hoʻokaʻawale iā lākou i nāʻoihanaʻoihana, e noʻonoʻo i nā kiko'ī o nā kaʻina hana. No ka laʻana, ʻo ka ʻae ʻana ma kahi hale kūʻai ʻaʻole ia he hana maʻamau, akā nui loa ka hana nui, i ka manawa e pono ai e loaʻa koke mai ka mokuʻāina hoʻoponopono ʻike e pili ana i nā ʻāpana o nā waiwai i ʻae ʻia, ʻo ka helu o ia mea i hoʻokahi hoʻouna a hiki i 600000. , e nānā i ka ʻae ʻana o ka ʻae ʻana i kēia huahana i loko o ka hale kūʻai a hoʻihoʻi i nā ʻike āpau e pono ai no ka ʻōnaehana automation warehouse. Akā ʻoi aku ka ikaika o ka hoʻouna ʻana mai nā hale kūʻai, akā i ka manawa like me nā liʻiliʻi liʻiliʻi o ka ʻikepili.

Hoʻokō mākou i nā lawelawe āpau ma ke ʻano mokuʻāina ʻole a hoʻāʻo hoʻi e hoʻokaʻawale i nā hana kūloko i nā ʻanuʻu, me ka hoʻohana ʻana i nā mea a mākou i kapa ai ʻo Kafka ponoʻī. ʻO kēia ka manawa e hoʻouna ai kahi microservice i kahi leka iā ia iho, e hiki ai iā ʻoe ke kaulike i ka ukana ma nā hana ʻoi aku ka nui o nā kumuwaiwai a hoʻomaʻamaʻa i ka mālama ʻana i nā huahana, akā ʻoi aku ka nui ma hope.

Ua hoʻoholo mākou e hoʻokaʻawale i nā modula no ka launa pū ʻana me nā ʻōnaehana waho i nā lawelawe ʻokoʻa. ʻO kēia ka mea i hiki ai ke hoʻoponopono i ka pilikia o ka hoʻololi pinepine ʻana i nā API o nā ʻōnaehana waho, me ka ʻole o ka hopena i nā lawelawe me ka hana ʻoihana.

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

Hoʻokomo ʻia nā microservice a pau i kahi pūʻulu OpenShift, kahi e hoʻoponopono ai i ka pilikia ʻelua o ka hoʻonui ʻana i kēlā me kēia microservice a hiki iā mākou ke hoʻohana i nā mea hana Service Discovery ʻekolu.

Hana 2. ʻO ka pono e mālama i ka ukana kiʻekiʻe a me ka hoʻololi ʻikepili koʻikoʻi ma waena o nā lawelawe platform: I ka wā o ka hoʻomaka ʻana o ka papahana wale nō, ma kahi o 600 mau hana i kēlā me kēia kekona e hana ʻia. Manaʻo mākou e hoʻonui kēia waiwai i 5000 ops/sec i ka wā e hoʻopili ai nā hale kūʻai kūʻai i kā mākou kahua.

Ua hoʻoholo ʻia kēia pilikia ma ka hoʻokau ʻana i kahi pūʻulu Kafka a aneane haʻalele loa i ka pilina synchronous ma waena o nā microservices o ka platform. Pono kēia e nānā pono i nā koi o ka ʻōnaehana, no ka mea ʻaʻole hiki i nā hana a pau ke asynchronous. I ka manawa like, ʻaʻole mākou e hoʻouna wale i nā hanana ma o ka mea kūʻai aku, akā hoʻouna pū i nā ʻike ʻoihana āpau i koi ʻia i ka leka. No laila, hiki i ka nui o ka memo ke hiki i nā haneli kilobytes. ʻO ka palena nui o ka memo ma Kafka e koi iā mākou e wānana pololei i ka nui o ka memo, a inā pono, e puʻunaue mākou iā lākou, akā kūpono ka mahele, pili i nā hana ʻoihana.
Eia kekahi laʻana, hoʻokaʻawale mākou i nā waiwai i hiki mai i loko o ke kaʻa i loko o nā pahu. No nā hana synchronous, hoʻokaʻawale ʻia nā microservice kaʻawale a hoʻokō ʻia ka hoʻāʻo ʻana o ka ukana. Ma ka hoʻohana ʻana iā Kafka i hāʻawi mai iā mākou i kahi paʻakikī ʻē aʻe - ʻo ka hoʻāʻo ʻana i ka hana o kā mākou lawelawe me ka noʻonoʻo ʻana i ka hoʻohui ʻana ʻo Kafka e hana i kā mākou mau hoʻāʻo ʻokoʻa asynchronous. Hoʻopau mākou i kēia pilikia ma ke kākau ʻana i kā mākou pono ponoʻī me ka hoʻohana ʻana i ka Embedded Kafka Broker. ʻAʻole kēia e hoʻopau i ka pono e kākau i nā hoʻokolohua ʻāpana no nā ʻano hoʻokahi, akā makemake mākou e hoʻāʻo i nā hihia paʻakikī me ka hoʻohana ʻana iā Kafka.

Nui ka nānā ʻana i ka ʻimi ʻana i nā lāʻau i ʻole e nalowale ko lākou TraceId i ka wā e kū ai nā ʻokoʻa i ka wā o ka lawelawe ʻana a i ka wā e hana pū ai me Kafka batch. A inā ʻaʻohe pilikia kūikawā me ka mea mua, a laila ma ka hihia ʻelua e koi ʻia mākou e hoʻopaʻa inoa i nā TraceId a pau i hele mai ka pūʻulu a koho i kahi e hoʻomau i ka huli ʻana. A laila, i ka ʻimi ʻana e ka TraceId kumu, e ʻike maʻalahi ka mea hoʻohana me ka mea i hoʻomau ʻia ai ka huli ʻana.

Hana 3. Pono e mālama i ka nui o ka ʻikepili: ʻOi aku ma mua o 1 biliona lepili i kēlā me kēia makahiki no ka paka wale nō e hele mai i X5. Pono lākou i ke komo mau a me ka wikiwiki. I ka huina, pono ka ʻōnaehana e hana ma kahi o 10 biliona mau moʻolelo o ka mōʻaukala neʻe o kēia mau mea i hōʻailona ʻia.

No ka hoʻoponopono i ke kolu o ka pilikia, ua koho ʻia ka ʻikepili NoSQL MongoDB. Ua kūkulu mākou i kahi ʻāpana o 5 nodes a ua loaʻa i kēlā me kēia node kahi Replica Set o nā kikowaena 3. Hāʻawi kēia iā ʻoe e hoʻonui i ka ʻōnaehana ma ke ākea, e hoʻohui i nā kikowaena hou i ka pūʻulu, a e hōʻoia i ka hoʻomanawanui hewa. Ma ʻaneʻi ua loaʻa iā mākou kahi pilikia ʻē aʻe - ka hōʻoia ʻana i ka transactionality i ka pūʻulu mongo, e noʻonoʻo ana i ka hoʻohana ʻana i nā microservices horizontally scalable. No ka laʻana, ʻo kekahi o nā hana o kā mākou ʻōnaehana ʻo ka ʻike ʻana i nā hoʻāʻo e kūʻai hou aku i nā huahana me nā code lepili like. Ma ʻaneʻi, ʻike ʻia nā overlays me nā hiʻohiʻona hewa a i ʻole nā ​​​​hana hewa a ka poʻe cashiers. Ua ʻike mākou e hiki ke hana ʻia kēlā mau kope i loko o hoʻokahi pūʻulu Kafka e hana ʻia ana, a i loko o ʻelua mau pūʻulu e hana like ʻia. No laila, ʻaʻole i hāʻawi i kekahi mea i ka nānā ʻana i nā kope kope ma ka nīnau ʻana i ka waihona. No kēlā me kēia microservice, ua hoʻoponopono mākou i ka pilikia ma muli o ka loiloi ʻoihana o kēia lawelawe. No ka laʻana, no ka nānā ʻana, ua hoʻohui mākou i kahi kikoʻī i loko o ka pūʻulu a me ka hoʻokaʻawale ʻana no ke ʻano o nā kope i ka wā e hoʻokomo ai.

No ka hōʻoia i ka hana a nā mea hoʻohana me ka mōʻaukala o nā hana ʻaʻole i pili i ka mea nui loa - ka hana ʻana o kā mākou ʻoihana ʻoihana, ua hoʻokaʻawale mākou i nā ʻikepili mōʻaukala āpau i kahi lawelawe ʻokoʻa me kahi waihona ʻokoʻa, kahi e loaʻa ai ka ʻike ma o Kafka. . ʻO kēia ala, hana nā mea hoʻohana me kahi lawelawe kaʻawale me ka ʻole o ka hoʻopili ʻana i nā lawelawe e hoʻoponopono i ka ʻikepili no nā hana hoʻomau.

Hana 4: Ka hoʻoponopono hou ʻana a me ka nānā ʻana:

Ma nā ʻōnaehana i hoʻolaha ʻia, hiki mai nā pilikia a me nā hewa i ka loaʻa ʻana o nā ʻikepili, queues, a me nā kumu ʻikepili waho. I ka hihia o Marcus, ʻo ke kumu o ia mau hewa ka hoʻohui ʻana me nā ʻōnaehana waho. Pono e ʻimi i kahi hoʻonā e ʻae i nā noi pinepine no nā pane hewa me kekahi manawa i ʻōlelo ʻia, akā i ka manawa like ʻaʻole e hoʻōki i ka hana ʻana i nā noi kūleʻa i ka laina nui. No kēia kumu, ua koho ʻia ka manaʻo i kapa ʻia ʻo "topic based retry". No kēlā me kēia kumuhana nui, hoʻokahi a ʻoi aʻe paha nā kumuhana hoʻāʻo hou i hoʻouna ʻia i nā leka hewa a i ka manawa like ke hoʻopau ʻia ka lohi o ka hoʻoili ʻana i nā leka mai ke kumuhana nui. Papahana pili -

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

No ka hoʻokō ʻana i ia ʻano hoʻolālā, pono mākou i kēia: e hoʻohui i kēia hoʻonā me Spring a pale i ka hoʻopili code. I ka heʻenalu ʻana i ka pūnaewele, ua ʻike mākou i kahi hopena like e pili ana i ka Spring BeanPostProccessor, akā he mea paʻakikī ʻole iā mākou. Ua hana kā mākou hui i kahi hoʻonā maʻalahi e hiki ai iā mākou ke hoʻohui i ka pōʻai puna no ka hana ʻana i nā mea kūʻai aku a hoʻohui pū i nā mea kūʻai hou. Hāʻawi mākou i kahi prototype o kā mākou hopena i ka hui Spring, hiki iā ʻoe ke ʻike maanei. Hoʻonohonoho ʻia ka helu o nā mea hoʻohana hou a me ka helu o nā hoʻāʻo no kēlā me kēia mea kūʻai aku ma o nā ʻāpana, e pili ana i nā pono o ke kaʻina ʻoihana, a no ka hana ʻana o nā mea a pau, ʻo nā mea a pau e hoʻohui i ka annotation org.springframework.kafka.annotation.KafkaListener , i kamaʻāina i nā mea hoʻomohala Spring āpau.

Inā 'a'ole hiki ke ho'oponopono 'ia ka memo ma hope o ka ho'ā'o hou 'ana, hele ia i DLT (ke kumuhana leka make) me ka ho'ohana 'ana i ka Spring DeadLetterPublishingRecoverer. Ma ke noi o ke kākoʻo, ua hoʻonui mākou i kēia hana a hana i kahi lawelawe kaʻawale e hiki ai iā ʻoe ke nānā i nā memo i hoʻokomo ʻia ma DLT, stackTrace, traceId a me nā ʻike pono ʻē aʻe e pili ana iā lākou. Eia kekahi, ua hoʻohui ʻia ka nānā ʻana a me nā mākaʻikaʻi i nā kumuhana DLT āpau, a i kēia manawa, ʻoiaʻiʻo, ʻo ke ʻano o kahi leka ma kahi kumuhana DLT he kumu ia e nānā a hoʻoponopono i kahi hemahema. He mea maʻalahi kēia - ma ka inoa o ke kumuhana, hoʻomaopopo koke mākou i ke ʻano o ke kaʻina hana i puka mai ai ka pilikia, e wikiwiki ana i ka ʻimi ʻana i ke kumu kumu.

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

ʻO ka mea hou loa, ua hoʻokō mākou i kahi kikowaena e hiki ai iā mākou ke hoʻouna hou i nā memo me ka hoʻohana ʻana i kā mākou kākoʻo ma hope o ka hoʻopau ʻana i kā lākou mau kumu (e laʻa, hoʻihoʻi i ka hana o ka ʻōnaehana waho) a, ʻoiaʻiʻo, hoʻokumu i ka hemahema kūpono no ka nānā ʻana. ʻO kēia kahi e hiki mai ai kā mākou mau kumuhana ponoʻī: i ʻole e hoʻomaka hou i kahi kaulahao hana lōʻihi, hiki iā ʻoe ke hoʻomaka hou iā ia mai ka pae i makemake ʻia.

"E hele ana i ko'u mau kāma'a" - e kali, ua kaha 'ia?

Ka hana ʻana i ke kahua

Aia ke kahua i ka hana huahua, i kēlā me kēia lā mākou e lawe i nā hoʻouna a me nā hoʻouna, hoʻopili i nā kikowaena hoʻolaha hou a me nā hale kūʻai. Ma keʻano he māhele o ka pilote, hana ka pūnaewele me nā hui huahana "Tobacco" a me "Shoes".

Ke komo nei kā mākou hui holoʻokoʻa i ke alakaʻi ʻana i nā pailaka, hoʻopaʻa i nā pilikia e kū mai ana a hāʻawi i nā manaʻo no ka hoʻomaikaʻi ʻana i kā mākou huahana, mai ka hoʻomaikaʻi ʻana i nā lāʻau a hiki i nā kaʻina hana.

I ʻole e hana hou i kā mākou mau hewa, ʻike ʻia nā hihia āpau i ka wā o ka pilote i nā hoʻāʻo automated. ʻO ka loaʻa ʻana o ka nui o nā autotests a me nā hoʻāʻo ʻāpana e hiki ai iā ʻoe ke hana i ka hoʻāʻo regression a hoʻokomo i kahi hotfix maoli i loko o kekahi mau hola.

I kēia manawa, hoʻomau mākou i ka hoʻomohala ʻana a me ka hoʻomaikaʻi ʻana i kā mākou kahua, a ke kū mau nei mākou i nā pilikia hou. Inā makemake ʻoe, e kamaʻilio mākou e pili ana i kā mākou hopena ma nā ʻatikala aʻe.

Source: www.habr.com

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