Nānā. unuhi.: Ua hōʻike koke aku nā limahana o ka lawelawe Tinder kaulana i ka honua i kekahi mau kikoʻī ʻenehana no ka neʻe ʻana i kā lākou ʻoihana i Kubernetes. ʻO ke kaʻina hana ma kahi o ʻelua mau makahiki a ua hopena i ka hoʻomaka ʻana o kahi paepae nui loa ma K8s, nona nā lawelawe 200 i mālama ʻia ma 48 tausani pahu. He aha nā pilikia hoihoi i hālāwai ai nā ʻenekinia Tinder a he aha nā hopena i loaʻa mai iā lākou? E heluhelu i kēia unuhi.
No ke aha?
Ma kahi kokoke i ʻelua makahiki i hala aku nei, ua hoʻoholo ʻo Tinder e neʻe i kāna kahua i Kubernetes. E ʻae ʻo Kubernetes i ka hui Tinder e hoʻopaʻa a neʻe i ka hana me ka liʻiliʻi o ka hoʻoikaika ʻana ma o ka hoʻoili ʻole ʻia. (ka hoʻoili ʻole ʻia). I kēia hihia, ʻo ka hui ʻana o nā noi, kā lākou hoʻolaha ʻana, a me nā ʻōnaehana ponoʻī e wehewehe ʻokoʻa ʻia e ke code.
Ua ʻimi pū mākou i kahi hoʻonā i ka pilikia o ka scalability a me ke kūpaʻa. Ke lilo ka scaling i mea koʻikoʻi, pono mākou e kali i kekahi mau minuke no nā manawa EC2 hou e wili. ʻO ka manaʻo o ka hoʻokuʻu ʻana i nā ipu a hoʻomaka i ka lawelawe ʻana i ke kaʻa i kekona ma mua o nā minuke i lilo i mea hoihoi loa iā mākou.
Ua paʻakikī ke kaʻina hana. I ko mākou neʻe ʻana i ka hoʻomaka ʻana o 2019, ua hōʻea ka pūʻulu Kubernetes i ka nui koʻikoʻi a hoʻomaka mākou e hālāwai me nā pilikia like ʻole ma muli o ka nui o ke kaʻa, ka nui o ka cluster, a me DNS. Ma ke ala, ua hoʻoponopono mākou i nā pilikia hoihoi e pili ana i ka neʻe ʻana i nā lawelawe 200 a me ka mālama ʻana i kahi pūʻulu Kubernetes me 1000 nodes, 15000 pods a me 48000 pahu holo.
Pehea?
Mai Ianuali 2018, ua hele mākou i nā pae like ʻole o ka neʻe ʻana. Hoʻomaka mākou ma ka hoʻopaʻa ʻana i kā mākou mau lawelawe āpau a kau iā lākou i nā kaiapuni ao hoʻāʻo Kubernetes. E hoʻomaka ana i ʻOkakopa, ua hoʻomaka mākou e neʻe i nā lawelawe āpau i Kubernetes. Ma Malaki o ka makahiki aʻe, ua hoʻopau mākou i ka neʻe ʻana a i kēia manawa ke holo wale nei ka platform Tinder ma Kubernetes wale nō.
Ke kūkulu nei i nā kiʻi no nā Kubernetes
Loaʻa iā mākou he 30 mau waihona kumu kumu no nā microservice e holo ana ma kahi pūʻulu Kubernetes. Ua kākau ʻia ke code i loko o kēia mau waihona i nā ʻōlelo like ʻole (no ka laʻana, Node.js, Java, Scala, Go) me nā kaiapuni runtime he nui no ka ʻōlelo like.
Hoʻolālā ʻia ka ʻōnaehana kūkulu e hāʻawi i kahi "kūkulu kūkulu" piha no kēlā me kēia microservice. Loaʻa iā ia kahi Dockerfile a me kahi papa inoa o nā kauoha shell. Hoʻonohonoho pono ʻia kā lākou ʻike, a i ka manawa like, ua kākau ʻia kēia mau ʻano kūkulu a pau e like me ke ʻano maʻamau. ʻO ka hoʻohālikelike ʻana i nā pōʻaiapili kūkulu e ʻae i hoʻokahi ʻōnaehana kūkulu hoʻokahi e mālama i nā microservice a pau.
Helu 1-1. Kaʻina hana maʻamau ma o ka pahu Builder
No ka loaʻa ʻana o ka kūlike loa ma waena o nā manawa holo (Kaiapuni holo manawa) hoʻohana ʻia ke kaʻina hana kūkulu like i ka wā hoʻomohala a hoʻāʻo. Ua loaʻa iā mākou kahi paʻakikī hoihoi loa: pono mākou e hoʻomohala i kahi ala e hōʻoia ai i ka kūlike o ka ʻenehana kūkulu ʻana ma waena o ka paepae holoʻokoʻa. No ka hoʻokō ʻana i kēia, lawe ʻia nā kaʻina hui āpau i loko o kahi pahu kūikawā. hana.
Pono kāna hoʻokō pahu i nā ʻenehana Docker kiʻekiʻe. Loaʻa ka mea hana i ka ID mea hoʻohana kūloko a me nā mea huna (e like me ke kī SSH, nā hōʻoia AWS, a me nā mea ʻē aʻe) e pono ai ke komo i nā waihona Tinder pilikino. Hoʻopili ia i nā papa kuhikuhi kūloko i loaʻa nā kumu e mālama maoli i nā mea hana. Hoʻomaikaʻi kēia ala i ka hana no ka mea e hoʻopau i ka pono e kope i nā mea hana kiʻi ma waena o ka pahu Builder a me ka mea hoʻokipa. Hiki ke hoʻohana hou ʻia nā mea hana i mālama ʻia me ka ʻole o ka hoʻonohonoho ʻana.
No kekahi mau lawelawe, pono mākou e hana i kahi pahu ʻē aʻe no ka palapala ʻana i ke kaiapuni hōʻuluʻulu ʻana i ke kaiapuni runtime (no ka laʻana, hoʻopuka ka waihona Node.js bcrypt i nā mea hana binary kikoʻī i ka platform i ka wā e hoʻokomo ai). I ka wā o ke kaʻina hana, ʻokoʻa paha nā koi ma waena o nā lawelawe, a ʻo ka Dockerfile hope loa i hui ʻia ma ka lele.
Kubernetes cluster architecture a me ka neʻe ʻana
Hoʻoponopono i ka nui o ka pūʻulu
Ua hoʻoholo mākou e hoʻohana kube-aws no ka hoʻopili ʻana i nā pūʻulu ʻakomi ma nā hihia Amazon EC2. I ka hoʻomaka ʻana, ua hana nā mea a pau i hoʻokahi pūnāwai maʻamau o nā nodes. Ua ʻike koke mākou i ka pono e hoʻokaʻawale i nā haʻahaʻa hana ma ka nui a me ke ʻano hoʻohālike e hoʻohana pono ai i nā kumuwaiwai. ʻO ka loina, ʻo ka holo ʻana i nā pods multi-threaded i hoʻouka ʻia i ʻoi aku ka wānana ma ke ʻano o ka hana ma mua o ko lākou noho pū ʻana me kahi helu nui o nā pods hoʻokahi.
I ka hopena, ua hoʻoholo mākou i:
m5.4x nui - no ka nānā ʻana (Prometheus);
c5.4x nui - no ka haawe hana Node.js (hoʻokahi-threaded workload);
c5.2x nui - no Java a me Go (nuithreaded workload);
c5.4x nui - no ka papa hoʻomalu (3 nodes).
Ka neʻe ʻana
ʻO kekahi o nā hana hoʻomākaukau no ka neʻe ʻana mai ka ʻoihana kahiko i Kubernetes, ʻo ia ka hoʻohuli ʻana i ke kamaʻilio pololei e kū nei ma waena o nā lawelawe i nā mea kaulike ukana hou (Elastic Load Balancers (ELB). Ua hana ʻia lākou ma kahi subnet kikoʻī o kahi ao pilikino virtual (VPC). Hoʻopili ʻia kēia subnet i kahi VPC Kubernetes. ʻAe kēia iā mākou e neʻe mālie i nā modula, me ka noʻonoʻo ʻole i ke ʻano kikoʻī o nā hilinaʻi lawelawe.
Ua hana ʻia kēia mau hopena me ka hoʻohana ʻana i nā pūʻulu paona o nā moʻolelo DNS i loaʻa nā CNAME e kuhikuhi ana i kēlā me kēia ELB hou. No ka hoʻololiʻana, ua hoʻohui mākou i kahi helu hou e kuhikuhi ana i ka ELB hou o ka lawelawe Kubernetes me ke kaumaha o 0. A laila hoʻonoho mākou i ka Time To Live (TTL) o ka helu i hoʻonohonohoʻia i ka 0. Ma hope o kēia, ua kauʻia nā kaumaha kahiko a me nā mea hou. Ua hoʻololi mālie ʻia, a ma hope ua hoʻouna ʻia ka 100% o ka ukana i kahi kikowaena hou. Ma hope o ka pau ʻana o ka hoʻololi ʻana, ua hoʻi ka waiwai TTL i kahi pae kūpono.
Hiki i nā modula Java iā mākou ke hoʻokō me ka TTL DNS haʻahaʻa, akā ʻaʻole hiki i nā noi Node. Ua kākau hou kekahi o nā mea ʻenekinia i kekahi ʻāpana o ke code pool connection a wahī ʻia i loko o kahi manakia nāna i hoʻonui i nā loko i kēlā me kēia 60 kekona. ʻO ke ala i koho ʻia ua hana maikaʻi loa a me ka ʻike ʻole ʻia o ka hoʻohaʻahaʻa hana.
Nā haʻawina
Nā palena o ka lole pūnaewele
I ke kakahiaka nui o Ianuali 8, 2019, ua hāʻule ʻole ka paepae Tinder. I ka pane ʻana i kahi piʻi pili ʻole o ka latency platform ma mua o kēlā kakahiaka, ua hoʻonui ʻia ka helu o nā pods a me nā nodes i ka hui. Ua hoʻopau kēia i ka cache ARP ma kā mākou mau node a pau.
gc_thresh3 - he palena paʻakikī kēia. ʻO ka ʻike ʻia ʻana o nā mea hoʻokomo i loko o ka lāʻau ʻo ia ka mea ma hope o ka hōʻiliʻili ʻana i nā ʻōpala (GC), ʻaʻole lawa ka nui o ka wahi i loko o ka cache ARP e mālama ai i ke komo ʻana. I kēia hihia, ua hoʻolei wale ka kernel i ka ʻeke.
Hoʻohana mākou Flannel ma ke ʻano he ʻupena pūnaewele ma Kubernetes. Hoʻouna ʻia nā ʻeke ma luna o VXLAN. ʻO VXLAN kahi tunnel L2 i hoʻāla ʻia ma luna o kahi pūnaewele L3. Hoʻohana ka ʻenehana i ka MAC-in-UDP (MAC Address-in-User Datagram Protocol) encapsulation a hiki ke hoʻonui i nā ʻāpana pūnaewele Layer 2. ʻO ka protocol transport ma ka pūnaewele kikowaena ʻikepili kino ʻo IP me UDP.
Hoʻokaʻawale kēlā me kēia node limahana Kubernetes i kahi kikowaena helu virtual me kahi mask /24 mai kahi poloka /9 nui aʻe. No kēlā me kēia node kēia ʻo ia hoʻi hoʻokahi komo ma ka papa kuhikuhi, hoʻokahi komo i ka papa ARP (ma ka flannel.1 interface), a hoʻokahi komo i ka papa hoʻololi (FDB). Hoʻohui ʻia lākou i ka manawa mua i hoʻomaka ʻia kahi node limahana a i ʻole kēlā me kēia manawa i ʻike ʻia kahi node hou.
Hoʻohui ʻia, hele hope ke kamaʻilio node-pod (a i ʻole pod-pod). eth0 (e like me ka hōʻike ʻana ma ke kiʻi Flannel ma luna). Loaʻa kēia i kahi komo hou i ka papa ARP no kēlā me kēia kumu kūpono a me ka mea hoʻokipa huakaʻi.
I ko mākou kaiapuni, he mea maʻamau kēia ʻano kamaʻilio. No nā mea lawelawe ma Kubernetes, hana ʻia kahi ELB a hoʻopaʻa inoa ʻo Kubernetes i kēlā me kēia node me ka ELB. ʻAʻole ʻike ka ELB e pili ana i nā pods a ʻo ka node i koho ʻia ʻaʻole paha ka hopena hope o ka ʻeke. ʻO ka manaʻo ke loaʻa i kahi node kahi ʻeke mai ka ELB, manaʻo ʻo ia e noʻonoʻo i nā lula ipoku no kahi lawelawe kiko'ī a koho wale i kahi pod ma kekahi node.
I ka manawa o ka hāʻule ʻana, aia he 605 nodes i ka hui. No nā kumu i ʻōlelo ʻia ma luna, ua lawa kēia e lanakila ai i ke koʻikoʻi gc_thresh3, ʻo ia ka mea paʻamau. Ke hana ʻia kēia, ʻaʻole wale ka hoʻomaka ʻana e hoʻokuʻu ʻia nā ʻeke, akā nalo ka wahi kikoʻī kikoʻī Flannel āpau me kahi mask /24 mai ka papa ARP. Hoʻopau ʻia ke kamaʻilio Node-pod a me nā nīnau DNS (Hoʻokipa ʻia ʻo DNS ma kahi hui; heluhelu ma hope o kēia ʻatikala no nā kikoʻī).
No ka hoʻoponopono i kēia pilikia, pono ʻoe e hoʻonui i nā waiwai gc_thresh1, gc_thresh2 и gc_thresh3 a hoʻomaka hou iā Flannel e hoʻopaʻa inoa hou i nā pūnaewele i nalowale.
ʻAʻole i manaʻo ʻia ka scaling DNS
I ka wā o ka neʻe ʻana, ua hoʻohana ikaika mākou i ka DNS no ka hoʻokele ʻana i nā kaʻa a hoʻololi mālie i nā lawelawe mai ka ʻoihana kahiko i Kubernetes. Hoʻonoho mākou i nā koina TTL haʻahaʻa no nā RecordSets pili ma Route53. I ka wā e holo ana ka ʻōnaehana kahiko ma nā manawa EC2, ua kuhikuhi kā mākou hoʻonohonoho hoʻonā i Amazon DNS. Ua lawe mākou i kēia no ka ʻae ʻia a me ka hopena o ka TTL haʻahaʻa i kā mākou lawelawe a me nā lawelawe Amazon (e like me DynamoDB) i ʻike ʻole ʻia.
I ko mākou neʻe ʻana i nā lawelawe i Kubernetes, ʻike mākou e hana ana ʻo DNS i 250 tausani mau noi i kēlā me kēia kekona. ʻO ka hopena, ua hoʻomaka nā noi e ʻike i ka manawa mau a koʻikoʻi no nā nīnau DNS. Ua hana ʻia kēia ma muli o nā hoʻoikaika nui e hoʻololi a hoʻololi i ka mea hāʻawi DNS i CoreDNS (ʻo ia ma ka haʻahaʻa kiʻekiʻe i hiki i 1000 pods e holo ana ma 120 cores).
ʻOiai e noiʻi ana i nā kumu a me nā hopena ʻē aʻe, ua ʻike mākou ʻO kahi mea kākau, e wehewehe ana i nā kūlana lāhui e pili ana i ke kāʻei kānana packet net kānana ma Linux. ʻO nā manawa pau a mākou i ʻike ai, i hui pū ʻia me ka helu helu hoʻonui insert_failed i ka Flannel interface i kūlike me nā ʻike o ka ʻatikala.
Aia ka pilikia ma ke kahua o Source and Destination Network Address Translation (SNAT a me DNAT) a me ke komo ʻana i ka papaʻaina. hoʻohui hou. ʻO kekahi o nā workarounds i kūkākūkā ʻia i loko a i ʻōlelo ʻia e ke kaiāulu ʻo ia ka neʻe ʻana i ka DNS i ka node hana ponoʻī. I kēia hihia:
ʻAʻole pono ʻo SNAT no ka mea e noho ana ke kaʻa i loko o ka node. ʻAʻole pono e hoʻokele ʻia ma o ka interface eth0.
ʻAʻole pono ʻo DNAT no ka mea ʻo ka IP wahi e hele ai i ka node, ʻaʻole kahi pod i koho ʻia e like me nā lula ipoku.
Ua hoʻoholo mākou e hoʻomau i kēia ala. Ua kau ʻia ʻo CoreDNS ma ke ʻano he DaemonSet ma Kubernetes a ua hoʻokō mākou i kahi kikowaena DNS node kūloko ma hoʻoholo.conf kēlā me kēia pod ma ke kau ʻana i ka hae --huihui-dns kauoha kubelet . Ua lilo kēia hopena i mea maikaʻi no nā manawa palena DNS.
Eia nō naʻe, ʻike mākou i ka nalowale ʻana o ka ʻeke a me ka piʻi ʻana o ka counter insert_failed ma ka ʻaoʻao Flannel. Ua hoʻomau ʻia kēia ma hope o ka hoʻokō ʻia ʻana o ka workaround no ka mea ua hiki iā mākou ke hoʻopau iā SNAT a / a i ʻole DNAT no ke kālepa DNS wale nō. Ua mālama ʻia nā kūlana heihei no nā ʻano kaʻa ʻē aʻe. ʻO ka mea pōmaikaʻi, ʻo ka hapa nui o kā mākou ʻeke he TCP, a inā loaʻa kahi pilikia e hoʻouna hou ʻia lākou. Ke hoʻāʻo nei mākou e ʻimi i kahi hopena kūpono no nā ʻano kaʻa āpau.
Ke hoʻohana nei i ka ʻelele no ka ʻoi aku ka maikaʻi o ka hoʻouka ʻana
I ko mākou neʻe ʻana i nā lawelawe backend i Kubernetes, hoʻomaka mākou e ʻeha i ka ukana kaulike ʻole ma waena o nā pods. Ua ʻike mākou ua hoʻokau ʻo HTTP Keepalive i nā pilina ELB e kau ma luna o nā pods mākaukau mua o kēlā me kēia deployment i ʻōwili ʻia. No laila, ua hele ka nui o ke kaʻa ma kahi hapa liʻiliʻi o nā pods i loaʻa. ʻO ka hopena mua a mākou i hoʻāʻo ai ʻo ka hoʻonohonoho ʻana iā MaxSurge i 100% ma nā hoʻolālā hou no nā hiʻohiʻona ʻino loa. Ua lilo ka hopena i mea nui ʻole a ʻaʻole hoʻohiki i nā ʻōlelo o ka hoʻolaha nui ʻana.
ʻO kekahi hoʻonā a mākou i hoʻohana ai, ʻo ia ka hoʻonui ʻana i nā noi waiwai no nā lawelawe koʻikoʻi. I kēia hihia, ʻoi aku ka nui o ka lumi o nā pods i hoʻonoho ʻia ma kahi kokoke e hoʻohālikelike ʻia me nā pods kaumaha ʻē aʻe. ʻAʻole ia e hana i ka wā lōʻihi no ka mea e lilo ana ia i mea hoʻopau waiwai. Eia kekahi, ʻo kā mākou mau noi Node he kaula hoʻokahi a, no laila, hiki ke hoʻohana i hoʻokahi kumu. ʻO ka hoʻonā maoli wale nō ka hoʻohana ʻana i ka ʻoi aku ka maikaʻi o ka load balancing.
Ua lōʻihi ko mākou makemake e mahalo piha ʻelele. ʻO ke kūlana o kēia manawa ua ʻae iā mākou e hoʻokau iā ia ma kahi ala palena loa a loaʻa nā hopena koke. ʻO Envoy kahi hana kiʻekiʻe, open-source, layer-XNUMX proxy i hoʻolālā ʻia no nā noi SOA nui. Hiki iā ia ke hoʻokō i nā ʻenehana hoʻohālikelike ukana holomua, me ka hoʻāʻo hou ʻana, nā mea hoʻokaʻawale kaapuni, a me ka palena palena honua. (Nānā. unuhi.: Hiki iā ʻoe ke heluhelu hou aʻe e pili ana i kēia ma kēiaʻatikala e pili ana iā Istio, kahi i hoʻokumu ʻia ma luna o Envoy.)
Ua hele mai mākou me kēia hoʻonohonoho: loaʻa kahi kaʻa kaʻa ʻElele no kēlā me kēia pod a me kahi ala hoʻokahi, a hoʻohui i ka pūʻulu i ka ipu kūloko ma o ke awa. No ka hōʻemi ʻana i ka hoʻokuʻu ʻana a mālama i kahi radius pā liʻiliʻi, ua hoʻohana mākou i nā ʻauwaʻa o Envoy front-proxy pods, hoʻokahi no Availability Zone (AZ) no kēlā me kēia lawelawe. Ua hilinaʻi lākou i kahi ʻenekini ʻike lawelawe maʻalahi i kākau ʻia e kekahi o kā mākou ʻenekinia i hoʻihoʻi wale i kahi papa inoa o nā pods i kēlā me kēia AZ no kahi lawelawe i hāʻawi ʻia.
A laila hoʻohana ʻo Service Front-Envoys i kēia ʻenehana ʻike lawelawe me hoʻokahi puʻupuʻu a me ke ala. Hoʻonoho mākou i nā manawa kūpono, hoʻonui i nā hoʻonohonoho hoʻonohonoho kaapuni āpau, a hoʻohui i ka hoʻonohonoho hoʻāʻo hou liʻiliʻi e kōkua i nā hemahema hoʻokahi a e hōʻoia i ka hoʻonohonoho ʻana. Ua kau mākou i kahi TCP ELB i mua o kēlā me kēia o kēia mau ʻelele lawelawe mua. ʻOiai inā paʻa ka keepalive mai kā mākou papa proxy nui ma luna o kekahi poʻe Envoy, ua hiki nō iā lākou ke mālama i ka ukana ʻoi aku ka maikaʻi a ua hoʻonohonoho ʻia e kaulike ma o least_request ma ka hope.
No ka hoʻouka ʻana, ua hoʻohana mākou i ka makau preStop ma nā pahu noi a me nā pods sidecar. Ua hoʻomaka ka makau i ka hewa i ka nānā ʻana i ke kūlana o ka admin endpoint aia ma ka pahu kaʻa ʻaoʻao a hele i ka hiamoe no kekahi manawa e ʻae i nā pilina ikaika e hoʻopau.
ʻO kekahi o nā kumu i hiki ai iā mākou ke neʻe wikiwiki ma muli o nā kikoʻī kikoʻī i hiki iā mākou ke hoʻohui maʻalahi i kahi hoʻonohonoho Prometheus maʻamau. Ua ʻae kēia iā mākou e ʻike pono i ka mea e hana nei ʻoiai mākou i hoʻoponopono i nā ʻāpana hoʻonohonoho a hoʻohele hou i nā kaʻa.
Ua ʻike koke ʻia nā hopena. Ua hoʻomaka mākou me nā lawelawe kaulikeʻole, a i kēia manawa ke hana nei i mua o nā lawelawe koʻikoʻi o 12 i ka hui. I kēia makahiki ke hoʻolālā nei mākou i ka hoʻololi ʻana i kahi mīkini lawelawe piha me ka ʻike ʻoihana ʻoi aku ka holomua, ka haʻihaʻi kaapuni, ka ʻike o waho, ka palena palena a me ka huli ʻana.
Helu 3–1. ʻO ka hui ʻana o ka CPU o kahi lawelawe i ka wā o ka hoʻololi ʻana i Envoy
Ka hopena hope loa
Ma o kēia ʻike a me nā noiʻi hou aʻe, ua kūkulu mākou i kahi hui ʻoihana ikaika me nā mākau ikaika i ka hoʻolālā ʻana, hoʻolālā, a me ka hana ʻana i nā pūʻulu Kubernetes nui. Loaʻa i nā ʻenekinia Tinder ka ʻike a me ka ʻike e hoʻopaʻa i nā ipu a kau i nā noi iā Kubernetes.
Ke piʻi aʻe ka pono o ka mana hou ma ka ʻōnaehana kahiko, pono mākou e kali i kekahi mau minuke no ka hoʻomaka ʻana o nā manawa EC2 hou. I kēia manawa, hoʻomaka nā pahu e holo a hoʻomaka i ka hoʻoili ʻana i ke kaʻa i loko o kekona ma mua o nā minuke. ʻO ka hoʻonohonoho ʻana i nā pahu he nui ma kahi laʻana EC2 hoʻokahi e hāʻawi i ka hoʻonui ʻana i ka ʻike ākea. ʻO ka hopena, wānana mākou i kahi hōʻemi nui o nā kumukūʻai EC2019 ma 2 i hoʻohālikelike ʻia i ka makahiki i hala.
Ua aneane ʻelua makahiki ka neʻe ʻana, akā ua hoʻopau mākou iā Malaki 2019. I kēia manawa, holo wale ka paepae Tinder ma kahi pūʻulu Kubernetes nona nā lawelawe 200, 1000 nodes, 15 pods a me 000 mau pahu holo. ʻAʻole ʻo Infrastructure ke kahua hoʻokahi o nā hui hana. Kaʻana like kā mākou poʻe ʻenekinia āpau i kēia kuleana a mālama i ke kaʻina hana o ke kūkulu ʻana a me ka hoʻohana ʻana i kā lākou mau noi me ka hoʻohana ʻana i ke code wale nō.