Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

Nui nā mea hoʻomaka i hele i kēia: ka lehulehu o nā mea hoʻohana hou e hoʻopaʻa inoa i kēlā me kēia lā, a paʻakikī ka hui hoʻomohala e mālama i ka lawelawe.

He pilikia maikaʻi ka loaʻa ʻana, akā ʻaʻole liʻiliʻi ka ʻike maopopo ma ka pūnaewele e pili ana i ka hoʻonui pono ʻana i kahi noi pūnaewele mai ka mea ʻole a hiki i nā haneli kaukani o nā mea hoʻohana. ʻO ka maʻamau, loaʻa nā hopena ahi a i ʻole nā ​​hopena bottleneck (a pinepine nā mea ʻelua). No laila, hoʻohana ka poʻe i nā ʻenehana cliched e hoʻonui i kā lākou papahana amateur i kahi mea koʻikoʻi.

E ho'āʻo kākou e kānana i ka ʻike a kākau i ke ʻano kumu. E hoʻonui mākou i kā mākou pūnaewele kaʻana kiʻi hou Graminsta i kēlā me kēia pae mai ka 1 a hiki i ka 100 mea hoʻohana.

E kākau kākou i nā hana kiko'ī e pono ai ke hana i ka pi'i 'ana o ka po'e i ka 10, 100, 1000, 10 a me 000 po'e.

1 mea hoʻohana: 1 mīkini

Kokoke i kēlā me kēia noi, inā he pūnaewele a i ʻole he polokalamu kelepona, ʻekolu mau mea nui:

  • API
  • waihona waihona
  • mea kūʻai aku (noi kelepona a i ʻole ka pūnaewele)

Mālama ka waihona i ka ʻikepili mau. Hāʻawi ka API i nā noi i kēia ʻikepili a puni. Hoʻouna ka mea kūʻai i ka ʻikepili i ka mea hoʻohana.

Ua hiki iaʻu i ka hopena he mea maʻalahi loa ke kamaʻilio e pili ana i ka hoʻonui ʻana i kahi noi inā, mai kahi hiʻohiʻona hoʻolālā, hoʻokaʻawale loa ka mea kūʻai aku a me nā hui API.

Ke hoʻomaka mua mākou e kūkulu i kahi noi, hiki ke holo i nā ʻāpana ʻekolu ma ka server hoʻokahi. Ma kekahi mau ʻano, ua like kēia me ko mākou kaiapuni hoʻomohala: hoʻokahi ʻenekini e holo i ka waihona, API, a me ka mea kūʻai aku ma ka mīkini hoʻokahi.

Ma ke kumumanaʻo, hiki iā mākou ke kau iā ia ma ke ao ma kahi hoʻokahi DigitalOcean Droplet a i ʻole AWS EC2, e like me ka mea i hōʻike ʻia ma lalo nei.
Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana
Me kēlā ʻōlelo, inā ʻoi aku ka nui o ka mea hoʻohana ma kahi pūnaewele, ʻaneʻane kūpono ke hoʻolaʻa i kahi papa waihona.

10 mea hoʻohana: hoʻoneʻe i ka waihona i kahi pae ʻokoʻa

ʻO ka hoʻokaʻawale ʻana i ka waihona i nā lawelawe hoʻokele e like me Amazon RDS a i ʻole Digital Ocean Managed Database e lawelawe maikaʻi iā mākou no ka manawa lōʻihi. He ʻoi aku ka maikaʻi ma mua o ka hoʻokipa ponoʻī ʻana ma kahi mīkini hoʻokahi a i ʻole EC2, akā me kēia mau lawelawe e loaʻa iā ʻoe nā mea hoʻonui pono mai ka pahu e hiki mai ana i ka wā e hiki mai ana: multi-region backup, read replicas, automatic backups, a me nā mea hou aku.

ʻO kēia ke ʻano o ka ʻōnaehana i kēia manawa:
Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

100 mea hoʻohana: hoʻoneʻe i ka mea kūʻai aku i kahi pae ʻokoʻa

ʻO ka mea pōmaikaʻi, makemake nui kā mākou mea hoʻohana mua i kā mākou noi. Ke paʻa nei ke kaʻa kaʻa, no laila ua hiki i ka manawa e hoʻoneʻe i ka mea kūʻai aku i kahi pae ʻokoʻa. Pono e hoʻomaopopo i kēlā kaawale ana ʻO nā hui kahi mea nui o ke kūkulu ʻana i kahi noi scalable. I ka loaʻa ʻana o kekahi ʻāpana o ka ʻōnaehana i nā kaʻa hou aku, hiki iā mākou ke hoʻokaʻawale iā ia e hoʻomalu i ke ʻano o ka lawelawe ʻana ma muli o nā ʻano kaʻa.

ʻO kēia ke kumu makemake wau e noʻonoʻo i ka mea kūʻai aku he kaʻawale mai ka API. He mea maʻalahi kēia i ka noʻonoʻo ʻana e pili ana i ka hoʻomohala ʻana no nā paepae he nui: pūnaewele, pūnaewele paʻa lima, iOS, Android, nā polokalamu papapihi, nā lawelawe ʻaoʻao ʻekolu, a pēlā aku.

No ka laʻana, i kēia manawa ke noi pinepine nei kā mākou mea hoʻohana e hoʻokuʻu i kahi polokalamu kelepona. Inā hoʻokaʻawale ʻoe i ka mea kūʻai aku a me nā hui API, e maʻalahi kēia.

ʻO kēia ke ʻano o ia ʻōnaehana:

Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

1000 mea hoʻohana: hoʻohui i ka mea hoʻohālikelike

Ke nānā nei nā mea i luna. Ke hoʻouka nei nā mea hoʻohana Graminsta i nā kiʻi hou aʻe. Ke ulu nei ka nui o nā inoa inoa. Paʻakikī kā mākou kikowaena API hoʻokahi e mālama i nā kaʻa āpau. Pono hou i ka hao!

He manaʻo ikaika loa ka load balancer. ʻO ka manaʻo koʻikoʻi, ʻo ia ke kau ʻana i kahi mea hoʻohālikelike ukana i mua o ka API, a hāʻawi ia i nā kaʻa i nā manawa lawelawe pākahi. ʻO kēia ke ʻano o kā mākou hoʻonui ʻia ʻana, ʻo ia hoʻi, hoʻohui mākou i nā kikowaena hou aʻe me ka code like, e hoʻonui ana i ka nui o nā noi hiki iā mākou ke hana.

E hoʻonoho mākou i nā mea kaulike hoʻokaʻawale i mua o ka mea kūʻai pūnaewele a i mua o ka API. ʻO kēia ke ʻano hiki iā ʻoe ke holo i nā manawa he nui e holo ana i ka code API a me ka code client web. E kuhikuhi ka mea kaulike i nā noi i ke kikowaena i emi iho ka ukana.

Eia mākou e loaʻa ai kekahi pono nui - redundancy. Ke hāʻule kekahi laʻana (ua hoʻonui ʻia paha a hāʻule paha), waiho ʻia mākou me nā poʻe ʻē aʻe e hoʻomau i ka pane ʻana i nā noi e hiki mai ana. Inā hoʻokahi wale nō laʻana e hana ana, a laila inā hāʻule ka ʻōnaehana holoʻokoʻa.

Hāʻawi ka load balancer i ka hoʻonui ʻakomi. Hiki iā mākou ke hoʻonohonoho iā ia e hoʻonui i ka helu o nā manawa ma mua o ka hoʻouka ʻana, a hoʻemi i ka wā e hiamoe ana nā mea hoʻohana a pau.

Me ka hoʻokolo ʻana o ka ukana, hiki ke hoʻonui ʻia ka pae o ka API no ka manawa pau ʻole, me ka hoʻohui ʻana i nā manawa hou i ka piʻi ʻana o ka nui o nā noi.

Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

Nānā. I kēia manawa ua like loa kā mākou ʻōnaehana me nā ʻoihana PaaS e like me Heroku a i ʻole Elastic Beanstalk ma AWS e hāʻawi ai i waho o ka pahu (ʻo ia ke kumu i kaulana loa ai lākou). Hoʻokomo ʻo Heroku i ka ʻikepili ma kahi hoʻokipa ʻokoʻa, hoʻokele i kahi mea hoʻohālikelike ukana hoʻonui, a hiki iā ʻoe ke hoʻokipa i ka mea kūʻai pūnaewele ma kahi kaʻawale mai ka API. He kumu nui kēia e hoʻohana ai iā Heroku no nā papahana mua a i ʻole nā ​​​​hoʻomaka - loaʻa iā ʻoe nā lawelawe kumu āpau mai ka pahu.

10 mea hoʻohana: CDN

Malia paha ua hana kakou i keia mai kinohi mai. Ke hoʻomaka nei ka hoʻoponopono ʻana i nā noi a me ka ʻae ʻana i nā kiʻi hou e hoʻokau nui loa i kā mākou mau kikowaena.

I kēia manawa, pono ʻoe e hoʻohana i kahi lawelawe kapua no ka mālama ʻana i nā ʻike static - nā kiʻi, nā wikiō a me nā mea hou aku (AWS S3 a i ʻole Digital Ocean Spaces). Ma keʻano laulā, pono kā mākou API e pale i ka lawelawe ʻana i nā mea e like me ka lawelawe ʻana i nā kiʻi a me ka hoʻouka ʻana i nā kiʻi i ke kikowaena.

ʻO kekahi pōmaikaʻi ʻē aʻe o ka hoʻokipa ʻana i ke ao ʻo ia ka CDN (Kahea ʻo AWS i kēia add-on Cloudfront, akā hāʻawi nā mea hoʻolako kapuaʻi he nui i waho o ka pahu). Hoʻopili maʻalahi ka CDN i kā mākou mau kiʻi ma nā kikowaena ʻikepili like ʻole a puni ka honua.

ʻOiai aia paha kā mākou kikowaena ʻikepili nui ma Ohio, inā noi kekahi i kahi kiʻi mai Iapana, e hana ka mea hāʻawi kapua i kope a mālama i loko o kā lākou kikowaena ʻikepili Iapana. ʻOi aku ka wikiwiki o ka mea e noi ana i kēia kiʻi ma Iapana. He mea koʻikoʻi kēia ke hana mākou me nā faila nui, e like me nā kiʻi a i ʻole nā ​​wikiō, lōʻihi ka manawa e hoʻoiho a hoʻouna i ka honua.

Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

100 mea hoʻohana: hoʻonui i ka papa ʻikepili

Ua kōkua nui ʻo CDN: ke ulu nei ke kaʻa i ka wikiwiki piha. Ua hoʻopaʻa inoa wale ʻo Mavid Mobrick wikiō kaulana me mākou a kau i kāna "moʻolelo", e like me kā lākou e ʻōlelo nei. Mahalo i ka load balancer, mālama haʻahaʻa ka CPU a me ka hoʻohana ʻana i ka hoʻomanaʻo ma nā kikowaena API (ʻumi mau manawa API e holo ana), akā ke hoʻomaka nei mākou e loaʻa i nā manawa he nui ma nā noi ... no hea mai kēia mau lohi?

ʻO kaʻeliʻana i kahi liʻiliʻi i loko o nā metrics,ʻike mākou he 80-90% ka CPU ma ka pūnaewele kikowaena. Aia mākou i ka palena.

ʻO ka hoʻonui ʻana i ka papa ʻikepili ka mea paʻakikī loa o ka hoohalike. Hāʻawi nā kikowaena API i nā noi mokuʻāina, no laila mākou e hoʻohui i nā manawa API hou aʻe. Ihu ka hapa nui ʻAʻole hiki i nā ʻikepili ke hana i kēia. E kamaʻilio mākou e pili ana i nā ʻōnaehana hoʻokele database relational kaulana (PostgreSQL, MySQL, etc.).

kāʻei kapu

ʻO kekahi o nā ala maʻalahi e hoʻonui ai i ka hana o kā mākou waihona ʻo ka hoʻokomo ʻana i kahi mea hou: ka papa huna. ʻO ke ʻano o ka hoʻopaʻa ʻana maʻamau he hale waihona moʻolelo waiwai kī-memo, e like me Redis a i ʻole Memcached. ʻO ka hapa nui o nā ao he mana hoʻokele o kēia mau lawelawe: Elasticache ma AWS a me Memorystore ma Google Cloud.

Hiki ke hoʻohana ʻia kahi huna huna i ka wā e hana pinepine ai kahi lawelawe i ka ʻikepili e kiʻi i ka ʻike like. ʻO ka mea nui, ke komo mākou i ka ʻikepili i hoʻokahi wale nō, mālama i ka ʻike i loko o ka cache, a mai hoʻopā hou iā ia.

No ka laʻana, i kā mākou lawelawe Graminsta, i kēlā me kēia manawa e hele ai kekahi i ka ʻaoʻao ʻaoʻao o ka hōkū Mobrik, nīnau ka server API i ka ʻikepili no ka ʻike mai kāna ʻaoʻao. Hana hou kēia. No ka mea ʻaʻole loli ka ʻike pili ʻana o Mobrik me kēlā me kēia noi, maikaʻi loa ia no ka cache.

E hūnā mākou i nā hopena mai ka waihona ma Redis ma ke kī user:id me ka manawa kūpono o 30 kekona. I kēia manawa, ke hele kekahi i ka ʻaoʻao o Mobrik, nānā mua mākou iā Redis, a inā aia ka ʻikepili, hoʻoili pololei mākou iā Redis. I kēia manawa, ʻaʻole e hoʻouka i kā mākou ʻikepili i nā noi i ka ʻaoʻao kaulana loa ma ka pūnaewele.

ʻO kekahi pōmaikaʻi ʻē aʻe o ka hapa nui o nā lawelawe caching ʻoi aku ka maʻalahi o ka paona ma mua o nā kikowaena waihona. Loaʻa iā Redis kahi mode Redis Cluster i kūkulu ʻia. E like me ka mea kaulike haawe1, hiki iā ʻoe ke puʻunaue i kāu cache Redis ma nā mīkini he nui (ma waena o nā kaukani mau kikowaena inā pono).

Aneane nā noi nui a pau e hoʻohana i ka caching; he ʻāpana koʻikoʻi loa ia o kahi API wikiwiki. He mea nui ka hoʻoponopono ʻana i ka nīnau wikiwiki a me ka code ʻoi aku ka maikaʻi, akā me ka ʻole o kahi huna, aneane hiki ʻole ke hoʻonui i kahi lawelawe i nā miliona o nā mea hoʻohana.

Heluhelu i nā kope

Ke hoʻonui nui ʻia ka helu o nā nīnau i ka waihona, hoʻokahi mea hiki iā mākou ke hana ʻo ia ke hoʻohui i nā replicas heluhelu i ka ʻōnaehana hoʻokele waihona. Me nā lawelawe mālama ʻia i hōʻike ʻia ma luna nei, hiki ke hana i kēia ma ke kaomi hoʻokahi. E mau ana ka palapala heluhelu i kēia manawa ma ka waihona nui a loaʻa no nā ʻōlelo SELECT.

Eia kā mākou ʻōnaehana i kēia manawa:

Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

Nā Pākuʻi

Ke hoʻomau nei ka hoʻonui ʻana o ka noi, e hoʻomau mākou i ka hoʻokaʻawale ʻana i nā lawelawe e hoʻonui iā lākou kūʻokoʻa. No ka laʻana, inā hoʻomaka mākou e hoʻohana i nā Websockets, a laila kūpono ke huki i ka code processing Websockets i kahi lawelawe ʻokoʻa. Hiki iā mākou ke kau iā ia ma nā manawa hou ma hope o kā mākou mea kaulike ukana, hiki ke piʻi i luna a i lalo e pili ana i nā pilina Websockets wehe a me ka nānā ʻole i ka nui o nā noi HTTP.

E hoʻomau nō hoʻi mākou i ka hakakā ʻana i nā kapu ma ka pae waihona. ʻO kēia ka manawa e aʻo ai i ka hoʻokaʻawale ʻana i ka waihona a me ka sharding. Pono nā ʻaoʻao ʻelua i ke poʻo ʻē aʻe, akā e ʻae iā ʻoe e hoʻonui i ka ʻikepili kokoke i ka pau ʻole.

Makemake mākou e hoʻokomo i kahi lawelawe nānā a me ka ʻikepili e like me New Relic or Datadog. E kōkua kēia iā ʻoe e ʻike i nā nīnau lohi a hoʻomaopopo i kahi e pono ai ka hoʻomaikaʻi. I ko mākou hoʻonui ʻana, makemake mākou e kālele i ka ʻimi ʻana i nā bottlenecks a hoʻopau iā lākou - e hoʻohana pinepine i kekahi o nā manaʻo mai nā ʻāpana mua.

Pūnaewele

Hoʻoulu ʻia kēia pou e kekahi o kaʻu mau pou punahele e pili ana i ka scalability kiʻekiʻe. Ua makemake au e hana i ka ʻatikala i mea kikoʻī iki no nā pae mua o nā papahana a wehe iā ia mai kahi mea kūʻai aku. E heluhelu inā makemake ʻoe i kēia kumuhana.

Nūhou wāwae

  1. ʻOiai e like me ke ʻano o ka hāʻawi ʻana i ka ukana ma nā manawa he nui, ʻokoʻa loa ka hoʻokō ʻana o kahi pūʻulu Redis mai kahi mea kaulike. [hoʻi]

Pehea e hoʻonui ai mai 1 a 100 mea hoʻohana

Source: www.habr.com

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