Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Ma RIT 2019, ua hana kā mākou hoa hana ʻo Alexander Korotkov ka loio e pili ana i ka automation o ka hoʻomohala ʻana ma CIAN: e hoʻomaʻamaʻa i ke ola a me ka hana, hoʻohana mākou i kā mākou kikowaena Integro ponoʻī. Mālama ia i ke ola o nā hana, hoʻomaha i nā mea hoʻomohala i nā hana maʻamau a hoʻemi nui i ka nui o nā pōpoki i ka hana. Ma kēia pou, e hoʻokō mākou i ka hōʻike a Alexander a haʻi iā ʻoe pehea mākou i hele ai mai nā palapala maʻalahi i ka hoʻohui ʻana i nā huahana open source ma o kā mākou kahua ponoʻī a me kā mākou hui automation kaʻawale.
 

ʻAleʻele

"ʻAʻohe mea e like me ka pae ʻole, ʻaʻole wau ʻike i kēlā mea"
Master Shifu mai ke kiʻiʻoniʻoni "Kung Fu Panda"

Ua hoʻomaka ʻo Automation ma CIAN i 14 mau makahiki ma hope o ka hoʻokumu ʻia ʻana o ka hui. I kēlā manawa he 35 mau kānaka i ka hui hoʻomohala. Paʻakikī ke manaʻoʻiʻo, ʻeā? ʻOiaʻiʻo, ua loaʻa ka automation ma kekahi ʻano, akā ua hoʻomaka kahi kuhikuhi ʻokoʻa no ka hoʻohui mau ʻana a me ka hāʻawi ʻana i nā code i ka makahiki 2015. 

I kēlā manawa, loaʻa iā mākou kahi monolith nui o Python, C# a me PHP, i kau ʻia ma nā kikowaena Linux/Windows. No ka hoʻokau ʻana i kēia monster, loaʻa iā mākou kahi pūʻulu o nā palapala a mākou i holo lima ai. Aia kekahi hui o ka monolith, ka mea i lawe mai i ka ʻeha a me ka ʻeha ma muli o nā paio i ka hoʻohui ʻana i nā lālā, hoʻoponopono i nā hemahema, a me ke kūkulu hou ʻana "me nā ʻano hana ʻē aʻe i ke kūkulu ʻana." Ua like ke kaʻina hana maʻalahi:

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

ʻAʻole mākou hauʻoli i kēia, a ua makemake mākou e kūkulu i kahi hana hana hou, ʻakomi a hiki ke hoʻokele ʻia a me ke kaʻina hana. No kēia, pono mākou i kahi ʻōnaehana CI / CD, a ua koho mākou ma waena o ka mana manuahi o Teamcity a me ka mana manuahi o Jenkins, no ka mea, ua hana pū mākou me lākou a ua kūpono nā mea ʻelua iā mākou e pili ana i ka hoʻonohonoho o nā hana. Ua koho mākou iā Teamcity ma ke ʻano he huahana hou loa. I kēlā manawa, ʻaʻole mākou i hoʻohana i ka microservice architecture a ʻaʻole i manaʻo i ka nui o nā hana a me nā papahana.

Hele mākou i ka manaʻo o kā mākou ʻōnaehana ponoʻī

ʻO ka hoʻokō ʻana o Teamcity ua wehe wale i kahi hapa o ka hana lima: ʻo ka mea i koe ka hana ʻana i nā noi huki, hoʻolaha i nā pilikia ma ke kūlana ma Jira, a me ke koho ʻana i nā pilikia no ka hoʻokuʻu ʻana. ʻAʻole hiki i ka ʻōnaehana Teamcity ke hoʻokō hou i kēia. Pono e koho i ke ala o ka automation hou aʻe. Ua noʻonoʻo mākou i nā koho no ka hana ʻana me nā palapala i Teamcity a i ʻole ke hoʻololi ʻana i nā ʻōnaehana automation ʻaoʻao ʻekolu. Akā i ka hopena, ua hoʻoholo mākou e pono mākou i ka hiki ke maʻalahi, ʻo ia wale nō ka mea hiki ke hāʻawi i kā mākou hoʻonā. ʻO kēia ke ʻano o ka mana mua o ka ʻōnaehana automation kūloko i kapa ʻia ʻo Integro.

Kūleʻa ʻo Teamcity i ka automation ma ke kiʻekiʻe o ka hoʻomaka ʻana i nā kaʻina hana kūkulu a me nā kaʻina hana, ʻoiai ʻo Integro i kālele i ka automation kiʻekiʻe o nā kaʻina hana hoʻomohala. Pono e hoʻohui i ka hana me nā pilikia ma Jira me ka hana ʻana i nā code kumu pili i Bitbucket. I kēia pae, ua hoʻomaka ʻo Integro e loaʻa i kāna mau kaila hana no ka hana ʻana me nā hana o nā ʻano ʻano like ʻole. 

Ma muli o ka piʻi ʻana o ka automation i nā kaʻina ʻoihana, ua hoʻonui ʻia ka nui o nā papahana a me nā holo ma Teamcity. No laila ua hiki mai kahi pilikia hou: ʻaʻole i lawa ka laʻana o Teamcity manuahi (3 ʻelele a me 100 papahana), ua hoʻohui mākou i kahi laʻana (3 mau ʻelele hou a me 100 papahana), a laila kekahi. ʻO ka hopena, ua hoʻopau mākou i kahi ʻōnaehana o kekahi mau puʻupuʻu, i paʻakikī ke mālama:

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

I ka wā i kū mai ai ka nīnau o kahi hihia 4, ua ʻike mākou ʻaʻole hiki iā mākou ke hoʻomau i ka noho ʻana e like me kēia, no ka mea, ʻaʻole i loko o nā palena ka huina o ke kākoʻo ʻana i nā hihia 4. Ua kū ka nīnau e pili ana i ke kūʻai ʻana iā Teamcity uku a i ʻole ke koho ʻana iā Jenkins manuahi. Ua helu mākou i nā manawa a me nā hoʻolālā automation a hoʻoholo mākou e noho ma Jenkins. Ma hope o kekahi mau pule, ua hoʻololi mākou iā Jenkins a hoʻopau i kekahi o nā ʻeha ʻeha e pili ana i ka mālama ʻana i nā manawa Teamcity he nui. No laila, ua hiki iā mākou ke nānā aku i ka hoʻomohala ʻana i ka Integro a me ka hana maʻamau iā Jenkins no mākou iho.

Me ka ulu ʻana o ka automation maʻamau (ma ke ʻano o ka hoʻokumu ʻana i nā Pull Requests, ka hōʻiliʻili ʻana a me ka hoʻolaha ʻana i ka uhi Code a me nā loiloi ʻē aʻe), aia ka makemake nui e haʻalele i nā hoʻokuʻu manual e like me ka hiki a hāʻawi i kēia hana i nā robots. Eia hou, ua hoʻomaka ka hui e neʻe i nā microservices i loko o ka hui, e koi ana i ka hoʻokuʻu pinepine ʻana, a kaʻawale mai kekahi i kekahi. ʻO kēia ka mea i hele mālie ai mākou i ka hoʻokuʻu ʻana i kā mākou microservices (ke hoʻokuʻu nei mākou i ka monolith me ka lima ma muli o ka paʻakikī o ke kaʻina hana). Akā, e like me ka mea maʻamau, ua puka mai kahi paʻakikī hou. 

Hoʻokolo mākou i ka hoʻāʻo

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Ma muli o ka automation o nā hoʻokuʻu, ua wikiwiki nā kaʻina hana hoʻomohala, ma muli o ka lele ʻana o kekahi mau pae hoʻāʻo. A ua alakaʻi kēia i ka nalo ʻana o ka maikaʻi. He mea liʻiliʻi ia, akā me ka wikiwiki o ka hoʻokuʻu ʻana, pono ia e hoʻololi i ke ʻano hana hoʻomohala huahana. Pono e noʻonoʻo e pili ana i ka automation o ka hoʻāʻo ʻana, hoʻokomo i ke kuleana pilikino (eia mākou e kamaʻilio nei e pili ana i ka "ʻae ʻana i ka manaʻo ma ke poʻo", ʻaʻole nā ​​uku kālā) o ka mea hoʻomohala no ka code i hoʻokuʻu ʻia a me nā pōpoki i loko, a me ka hoʻoholo hoʻokuʻu/ʻaʻole hoʻokuʻu i kahi hana ma o ka hoʻolaha ʻakomi. 

Ke hoʻopau nei i nā pilikia maikaʻi, ua hiki mākou i ʻelua mau hoʻoholo koʻikoʻi: ua hoʻomaka mākou e hana i ka hoʻāʻo canary a hoʻokomo i ka nānā ʻana i ke kāʻei hewa me ka pane maʻalahi i kāna keu. ʻO ka hoʻonā mua i hiki ke ʻike i nā hewa ʻike ma mua o ka hoʻokuʻu ʻia ʻana o ke code i ka hana ʻana, ʻo ka lua i hoʻemi i ka manawa pane i nā pilikia i ka hana. ʻO nā hewa, ʻoiaʻiʻo, hiki mai, akā hoʻolilo mākou i ka hapa nui o kā mākou manawa a me kā mākou hoʻoikaika ʻana ʻaʻole ma ka hoʻoponopono ʻana iā lākou, akā ma ka hōʻemi ʻana iā lākou. 

Pūʻulu Automation

Loaʻa iā mākou he limahana o nā mea hoʻomohala 130, a ke hoʻomau nei mākou e ulu. ʻO ka hui no ka hoʻohui mau ʻana a me ka hāʻawi ʻana i nā code (ma hope i kapa ʻia ʻo ka Deploy and Integration a i ʻole ka hui DI) he 7 poʻe a hana i nā ʻaoʻao 2: hoʻomohala ʻana i ka platform automation Integro a me DevOps. 

ʻO DevOps ke kuleana no ka Dev/Beta kaiapuni o ka pūnaewele CIAN, ka Integro environment, kōkua i nā mea hoʻomohala e hoʻoponopono i nā pilikia a hoʻomohala i nā ala hou i ka scaling environment. ʻO ke kuhikuhi hoʻomohala Integro e pili ana me Integro ponoʻī a me nā lawelawe pili, no ka laʻana, nā plugins no Jenkins, Jira, Confluence, a hoʻomohala pū i nā pono kōkua a me nā noi no nā hui hoʻomohala. 

Hana pū ka hui DI me ka hui Platform, nāna e hoʻomohala i ka hoʻolālā hale, nā hale waihona puke, a me nā ala hoʻomohala i loko. Ma ka manawa like, hiki i kekahi mea hoʻomohala i loko o CIAN ke hāʻawi i ka automation, no ka laʻana, hana i ka micro-automation e kūpono i nā pono o ka hui a i ʻole kaʻana like i kahi manaʻo maikaʻi e hoʻomaikaʻi i ka automation.

ʻO ka papaʻaina keke o ka automation ma CIAN

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Hiki ke hoʻokaʻawale ʻia nā ʻōnaehana āpau e pili ana i ka automation i kekahi mau papa:

  1. Nā ʻōnaehana waho (Jira, Bitbucket, etc.). Hana pū nā hui hoʻomohala me lākou.
  2. kahua hui pū. ʻO ka pinepine, ʻaʻole hana pololei nā mea hoʻomohala me ia, akā ʻo ia ka mea e mālama ai i ka holo ʻana o ka automation āpau.
  3. ʻO nā lawelawe hoʻouna, hoʻokalakupua a ʻike (no ka laʻana, Jeknins, Consul, Nomad). Me kā lākou kōkua, kau mākou i nā code ma nā kikowaena a hōʻoia i ka hana ʻana o nā lawelawe me kekahi.
  4. Papa kino (nā kikowaena, OS, polokalamu pili). Ke hana nei kā mākou code ma kēia pae. Hiki i kēia ke kikowaena kino a i ʻole kahi virtual (LXC, KVM, Docker).

Ma muli o kēia manaʻo, hoʻokaʻawale mākou i nā wahi kuleana i loko o ka hui DI. Aia nā pae mua ʻelua ma ka wahi o ke kuleana o ke alakaʻi hoʻomohala Integro, a ʻo nā pae hope ʻelua aia i ka wahi o ke kuleana o DevOps. ʻO kēia kaʻawaleʻana e hiki ai iā mākou ke nānā aku i nā hana aʻaʻole e hoʻopilikia i ka pilina, no ka mea, kokoke mākou i kekahi i kekahi a hoʻololi mau i kaʻike a me kaʻike.

Paʻa

E noʻonoʻo kākou i ka Integro a hoʻomaka me ka ʻenehana ʻenehana:

  • CentOS 7
  • Docker + Nomad + Consul + Vault
  • Java 11 (e mau ana ka Integro monolith kahiko ma Java 8)
  • Puna Pua 2.X + Puna Kapua Config
  • PostgreSql 11
  • ʻO RabbitMQ 
  • ʻAha ʻo Apache
  • Camunda (hoʻokomo ʻia)
  • ʻO Grafana + Graphite + Prometheus + Jaeger + ELK
  • UI Pūnaewele: React (CSR) + MobX
  • SSO: Keycloak

Hoʻopili mākou i ke kumu o ka hoʻomohala microservice, ʻoiai ua loaʻa iā mākou ka hoʻoilina ma ke ʻano o kahi monolith o kahi mana mua o Integro. E holo ana kēlā me kēia microservice i kāna pahu Docker ponoʻī, a kamaʻilio nā lawelawe me kekahi ma o nā noi HTTP a me nā leka RabbitMQ. Loaʻa nā Microservices kekahi i kekahi ma o ke Kanikela a noi aku iā ia, e hāʻawi ana i ka mana ma o SSO (Keycloak, OAuth 2/OpenID Connect).

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Ma ke ʻano he hiʻohiʻona maoli, e noʻonoʻo e launa pū me Jenkins, aia nā pae aʻe:

  1. ʻO ka microservice hoʻokele workflow (ma hope aku i kapa ʻia ʻo Flow microservice) makemake e holo i kahi kūkulu ma Jenkins. No ka hana ʻana i kēia, hoʻohana ʻo ia i ke Kanikela e ʻimi i ka IP: PORT o ka microservice no ka hoʻohui ʻana me Jenkins (ma hope i kapa ʻia ʻo Jenkins microservice) a hoʻouna i kahi noi asynchronous iā ia e hoʻomaka i ke kūkulu ʻana ma Jenkins.
  2. Ma hope o ka loaʻa ʻana o kahi noi, hoʻopuka a pane ʻo Jenkins microservice me kahi ID Job, a laila hiki ke hoʻohana ʻia e ʻike i ka hopena o ka hana. I ka manawa like, hoʻomaka ia i ke kūkulu ʻana ma Jenkins ma o kahi kelepona REST API.
  3. Hana ʻo Jenkins i ke kūkulu ʻana a, ma hope o ka pau ʻana, hoʻouna i kahi webhook me nā hopena hoʻokō i ka microservice Jenkins.
  4. ʻO ka microservice Jenkins, ua loaʻa iā ia ka webhook, hoʻopuka i kahi leka e pili ana i ka hoʻopau ʻana i ka hoʻoponopono noi a hoʻopili i nā hopena hoʻokō iā ia. Hoʻouna ʻia ka memo i hana ʻia i ka queue RabbitMQ.
  5. Ma o RabbitMQ, hiki i ka memo i paʻi ʻia i ka Flow microservice, ka mea e aʻo ai e pili ana i ka hopena o ka hana ʻana i kāna hana ma ka hoʻohālikelike ʻana i ka Job ID mai ka noi a me ka memo i loaʻa.

I kēia manawa ua loaʻa iā mākou he 30 microservices, hiki ke hoʻokaʻawale ʻia i nā pūʻulu he nui:

  1. Hoʻoponopono hoʻonohonoho.
  2. ʻIke a me ka launa pū me nā mea hoʻohana (nā ʻelele, leka uila).
  3. Ke hana nei me ka code kumu.
  4. Hoʻohui me nā mea hana hoʻolaha (jenkins, nomad, consul, etc.).
  5. Ka nānā ʻana (nā hoʻokuʻu, nā hewa, etc.).
  6. Nā pono pūnaewele (UI no ka hoʻokele ʻana i nā kaiapuni hoʻāʻo, hōʻiliʻili ʻikepili, etc.).
  7. Hoʻohui pū me nā mea nānā hana a me nā ʻōnaehana like.
  8. Hoʻoponopono kaʻina hana no nā hana like ʻole.

Nā hana kaʻina hana

Hoʻokomo ʻo Integro i nā hana e pili ana i ke ola ola hana. Ma nā ʻōlelo maʻalahi, e hoʻomaopopo ʻia ke kaʻina ola o kahi hana ma ke ʻano he kaʻina hana o kahi hana ma Jira. Loaʻa i kā mākou mau kaʻina hana hoʻomohala nā ʻano like ʻole e pili ana i ka papahana, ke ʻano o ka hana a me nā koho i koho ʻia i kahi hana. 

E nānā i ke kaʻina hana a mākou e hoʻohana pinepine ai:

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Ma ke kiʻikuhi, hōʻike ka mea e kapa ʻia ka hoʻololi ʻana e Integro, aʻo ke kiʻi kanaka e hōʻike ana ua kapa ʻia ka hoʻololi ʻana e ke kanaka. E nānā i kekahi mau ala e hiki ai i kahi hana ke hana i kēia kaʻina hana.

ʻO ka hoʻāʻo ʻana i ka manual ma DEV+BETA me ka ʻole o nā hoʻāʻo canary (ʻo ia ka mea e hoʻokuʻu ai mākou i kahi monolith):

Mai nā palapala i kā mākou kahua ponoʻī: pehea mākou i hoʻomohala ai i ka CIAN

Aia paha nā hui hoʻololi ʻē aʻe. I kekahi manawa hiki ke koho ʻia ke ala e hele ai kahi pilikia ma o nā koho ma Jira.

Ka neʻe hana

E nānā i nā ʻanuʻu nui i hana ʻia i ka neʻe ʻana o kahi hana ma o ke kahe hana "DEV Testing + Canary Tests".

1. Hoʻokumu ka mea hoʻomohala a i ʻole PM i ka hana.

2. Lawe ka mea hoʻomohala i ka hana e hana. Ma hope o ka pau ʻana, hoʻololi ia i ke kūlana IN REVIEW.

3. Hoʻouna ʻo Jira i kahi Webhook i ka Jira microservice (kūpono no ka hoʻohui ʻana me Jira).

4. Hoʻouna ka Jira microservice i kahi noi i ka lawelawe Flow (kuleana no nā kahe hana kūloko i hana ʻia ai ka hana) e hoʻomaka i ke kaʻina hana.

5. I loko o ka lawelawe Flow:

  • Hāʻawi ʻia nā mea loiloi i ka hana (Users microservice i ʻike i nā mea āpau e pili ana i nā mea hoʻohana + Jira microservice).
  • Ma o ka Source microservice (ʻike ia e pili ana i nā waihona a me nā lālā, akā ʻaʻole hana me ke code ponoʻī), hana ʻia kahi ʻimi no nā waihona i loaʻa kahi lālā o kā mākou pilikia (e hoʻomaʻamaʻa i ka ʻimi ʻana, pili ka inoa o ka lālā me ka pilikia. helu ma Jira). ʻO ka pinepine, hoʻokahi wale nō lālā o ka hana i loko o ka waihona hoʻokahi; hoʻomaʻamaʻa kēia i ka hoʻokele ʻana i ka queue deployment a hōʻemi i ka pilina ma waena o nā waihona.
  • No kēlā me kēia lālā i ʻike ʻia, hana ʻia kēia kaʻina hana:

    i) Hoʻohou i ka lālā kumu (Git microservice no ka hana ʻana me ke code).
    ii) Ua ālai ʻia ka lālā mai nā hoʻololi e ka mea hoʻomohala (Bitbucket microservice).
    iii) Hoʻokumu ʻia kahi noi huki no kēia lālā (Bitbucket microservice).
    iv) Hoʻouna ʻia kahi leka e pili ana i kahi Noi Huki hou i nā kamaʻilio hoʻomohala (Hoʻomaopopo i ka microservice no ka hana ʻana me nā hoʻolaha).
    v) Hoʻomaka ʻia nā hana kūkulu, hoʻāʻo a kau ʻana ma DEV (Jenkins microservice no ka hana pū ʻana me Jenkins).
    vi) Inā hoʻokō maikaʻi ʻia nā ʻanuʻu mua, a laila hoʻokomo ʻo Integro i kāna Approve ma ka Pull Request (Bitbucket microservice).

  • Ke kali nei ʻo Integro i ka ʻae ʻana i ka noi huki mai nā mea loiloi i koho ʻia.
  • I ka loaʻa ʻana o nā ʻae kūpono (me nā hoʻokolohua automated i hala maikaʻi), hoʻololi ʻo Integro i ka hana i ke kūlana Test on Dev (Jira microservice).

6. Ho'āʻo nā mea hōʻike i ka hana. Inā ʻaʻohe pilikia, a laila hoʻoneʻe ʻia ka hana i ke kūlana Ready For Build.

7. "ʻIke" ʻo Integro ua mākaukau ka hana no ka hoʻokuʻu ʻana a hoʻomaka i kāna kau ʻana ma ke ʻano canary (Jenkins microservice). Hoʻoholo ʻia ka mākaukau no ka hoʻokuʻu ʻia ʻana e kekahi mau lula. No ka laʻana, aia ka hana i ke kūlana i koi ʻia, ʻaʻohe laka i nā hana ʻē aʻe, ʻaʻohe hoʻouka ʻana o kēia microservice i kēia manawa, etc.

8. Hoʻololi ʻia ka hana i ke kūlana Canary (Jira microservice).

9. Hoʻomaka ʻo Jenkins i kahi hana hoʻolaha ma o Nomad ma ke ʻano canary (maʻa mau 1-3 mau manawa) a hoʻolaha i ka lawelawe nānā hoʻokuʻu (DeployWatch microservice) e pili ana i ka hoʻolaha.

10. 'Ohi ka DeployWatch microservice i ke kua o ka hewa a pane aku ia ia, ina pono. Inā ʻoi aku ka nui o ka hewa (heluhelu ʻia ke kumu maʻamau), hoʻolaha ʻia nā mea hoʻomohala ma o ka Notify microservice. Inā ma hope o 5 mau minuke ʻaʻole i pane mai ka mea hoʻomohala (e kaomi iā Revert a Noho paha), a laila hoʻomaka ʻia kahi rollback maʻalahi o nā manawa canary. Inā ʻaʻole i ʻoi aku ka nui o ke kua, a laila pono ka mea hoʻomohala e hoʻomaka me ka lima i ka hoʻonohonoho hana i Production (ma ke kaomi ʻana i kahi pihi ma ka UI). Inā i loko o 60 mau minuke ʻaʻole i hoʻomaka ka mea hoʻomohala i ka hoʻoili ʻana i Production, a laila e ʻōwili ʻia nā hihia canary no nā kumu palekana.

11. Ma hope o ka hoʻomaka ʻana i ka hoʻolaha ʻana i Production:

  • Hoʻololi ʻia ka hana i ke kūlana Production (Jira microservice).
  • Hoʻomaka ka microservice Jenkins i ke kaʻina hana hoʻolaha a hoʻolaha i ka microservice DeployWatch e pili ana i ka lawe ʻana.
  • Nānā ka DeployWatch microservice ua hoʻonui hou ʻia nā ipu a pau ma Production (he mau hihia inā ʻaʻole i hoʻonui ʻia nā mea a pau).
  • Ma o ka Notify microservice, hoʻouna ʻia kahi leka e pili ana i nā hopena o ka hoʻolaha ʻana i Production.

12. Loaʻa i nā mea hoʻomohala he 30 mau minuke e hoʻomaka ai e hoʻihoʻi i kahi hana mai Production inā ʻike ʻia ka hana microservice hewa. Ma hope o kēia manawa, e hoʻohui ʻia ka hana i master (Git microservice).

13. Ma hope o ka hoʻohui ʻana i ka haku, e hoʻololi ʻia ke kūlana hana i pani ʻia (Jira microservice).

ʻAʻole hoʻohālikelike ka kiʻi i ka kikoʻī piha (ʻo ka ʻoiaʻiʻo, aia nā ʻanuʻu hou aʻe), akā hiki iā ʻoe ke loiloi i ke kiʻekiʻe o ka hoʻohui ʻana i nā kaʻina hana. ʻAʻole mākou e noʻonoʻo pono i kēia papahana a ke hoʻomaikaʻi nei i nā kaʻina hana o ka hoʻokuʻu ʻana a me ke kākoʻo hoʻolaha.

He aha ka mea aʻe

Loaʻa iā mākou nā hoʻolālā nui no ka hoʻomohala ʻana i ka automation, no ka laʻana, ka hoʻopau ʻana i nā hana lima i ka wā o ka hoʻokuʻu ʻana o ka monolith, hoʻomaikaʻi i ka nānā ʻana i ka wā o ka hoʻoili ʻana, a me ka hoʻomaikaʻi ʻana i ka pilina me nā mea hoʻomohala.

Akā, e kū kāua i kēia manawa. Ua uhi mākou i nā kumuhana he nui i ka loiloi automation, ʻaʻole i hoʻopā ʻia kekahi, no laila e hauʻoli mākou e pane i nā nīnau. Ke kali nei mākou i nā manaʻo i ka mea e uhi i nā kikoʻī, e kākau i nā manaʻo.

Source: www.habr.com

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