Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Oyambitsa ambiri adutsa izi: makamu a ogwiritsa ntchito atsopano amalembetsa tsiku lililonse, ndipo gulu lachitukuko likuvutika kuti ntchitoyo isayende.

Ndivuto labwino kukhala nalo, koma pali zambiri zomveka bwino pa intaneti za momwe mungakulitsire mosamalitsa pulogalamu yapaintaneti kuchoka pa chilichonse mpaka mazana masauzande a ogwiritsa ntchito. Nthawi zambiri pamakhala njira zothetsera moto kapena zotsekera (ndipo nthawi zambiri zonse ziwiri). Chifukwa chake, anthu amagwiritsa ntchito njira zodziwikiratu kuti awonjezere ntchito yawo yamasewera kukhala chinthu chovuta kwambiri.

Tiyeni tiyesetse kusefa zambiri ndi kulemba mfundo zofunika. Tikulitsa tsamba lathu latsopano logawana zithunzi la Graminsta pang'onopang'ono kuchokera pa 1 mpaka 100 ogwiritsa ntchito.

Tiyeni tilembe zimene tiyenera kuchita pamene omvera achuluka kufika pa 10, 100, 1000, 10 ndi 000.

1 wogwiritsa: 1 makina

Pafupifupi pulogalamu iliyonse, kaya tsamba kapena foni yam'manja, ili ndi zigawo zitatu zofunika:

  • API
  • database
  • kasitomala (pulogalamu yam'manja yokha kapena tsamba lawebusayiti)

Dongosolo la database limasunga zomwe zikupitilira. API imapereka zopempha ndi kuzungulira deta iyi. Wothandizira amatumiza deta kwa wogwiritsa ntchito.

Ndinafika ponena kuti ndizosavuta kulankhula za kukulitsa ntchito ngati, kuchokera kumalingaliro a zomangamanga, kasitomala ndi mabungwe a API agawanika kwathunthu.

Tikayamba kupanga pulogalamu, zigawo zonse zitatu zitha kuyendetsedwa pa seva yomweyo. Mwanjira zina, izi ndizofanana ndi malo athu otukuka: injiniya m'modzi amayendetsa nkhokwe, API, ndi kasitomala pamakina omwewo.

Mwachidziwitso, titha kuyiyika mumtambo pamtundu umodzi wa DigitalOcean Droplet kapena AWS EC2, monga zikuwonekera pansipa:
Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100
Ndi zomwe zanenedwa, ngati padzakhala ogwiritsa ntchito m'modzi patsamba, zimakhala zomveka kuti mupereke gawo la database.

Ogwiritsa 10: kusuntha nkhokwe kumalo osiyana

Kugawanitsa nkhokwe mu ntchito zoyendetsedwa ngati Amazon RDS kapena Digital Ocean Managed Database kudzatithandiza kwa nthawi yayitali. Ndizokwera mtengo pang'ono kuposa kudzipangira nokha pamakina amodzi kapena EC2, koma ndi mautumikiwa mumapeza zowonjezera zambiri kuchokera m'bokosi zomwe zidzakhale zothandiza mtsogolomo: zosunga zobwezeretsera madera ambiri, werengani zofananira, zodziwikiratu. backups, ndi zina.

Izi ndi momwe dongosololi likuwonekera:
Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Ogwiritsa ntchito 100: kusuntha kasitomala pamlingo wosiyana

Mwamwayi, ogwiritsa ntchito athu oyamba adakonda pulogalamu yathu. Magalimoto akukhala okhazikika, ndiye nthawi yakwana yosunthira kasitomala pamlingo wina. Izo ziyenera kudziΕ΅ika kuti kulekana mabungwe ndi gawo lofunikira pakumanga ntchito yowonjezereka. Monga gawo limodzi la dongosololi limalandira magalimoto ochulukirapo, titha kugawanitsa kuti tiwongolere momwe masikelo amautumiki amatengera momwe magalimoto amayendera.

Ichi ndichifukwa chake ndimakonda kuganiza za kasitomala ngati wosiyana ndi API. Izi zimapangitsa kuti zikhale zosavuta kuganiza zopanga nsanja zingapo: ukonde, intaneti yam'manja, iOS, Android, mapulogalamu apakompyuta, mautumiki a chipani chachitatu, ndi zina. Onsewo ndi makasitomala omwe amagwiritsa ntchito API yomweyo.

Mwachitsanzo, ogwiritsa ntchito athu nthawi zambiri amafunsa kuti atulutse pulogalamu yam'manja. Ngati mulekanitsa kasitomala ndi mabungwe a API, izi zimakhala zosavuta.

Izi ndi momwe dongosolo lotere likuwonekera:

Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Ogwiritsa ntchito 1000: onjezani zolemetsa

Zinthu zikuyenda bwino. Ogwiritsa ntchito Graminsta akukweza zithunzi zambiri. Chiwerengero cha anthu olembetsa chikukulanso. Seva yathu ya API yokhayo ikuvutika kuti igwirizane ndi kuchuluka kwa magalimoto. Mukufuna chitsulo china!

Load balancer ndi lingaliro lamphamvu kwambiri. Lingaliro lofunikira ndiloti timayika chowongolera katundu patsogolo pa API, ndipo imagawira kuchuluka kwa anthu pazochitika zautumiki. Umu ndi momwe timakulira mozungulira, kutanthauza kuti timawonjezera ma seva ambiri ndi code yomweyi, ndikuwonjezera kuchuluka kwa zopempha zomwe tingathe kukonza.

Tiyika zolemetsa zolemetsa padera kutsogolo kwa kasitomala wapaintaneti komanso kutsogolo kwa API. Izi zikutanthauza kuti mutha kuyendetsa kangapo pogwiritsa ntchito nambala ya API ndi nambala yamakasitomala apa intaneti. The load balancer idzatumiza zopempha kwa seva yomwe ili yochepa kwambiri.

Apa tikupeza mwayi wina wofunikira - redundancy. Nthawi imodzi ikakanika (mwina kulemedwa kapena kugwa), timasiyidwa ndi ena omwe amapitiliza kuyankha zopempha zomwe zikubwera. Ngati pali chochitika chimodzi chokha chomwe chikugwira ntchito, ndiye kuti zikakanika, dongosolo lonse likhoza kuwonongeka.

The load balancer imaperekanso makulitsidwe otomatiki. Titha kuyikonza kuti ionjezere kuchuluka kwa zochitika zisanachitike, ndikuchepetsa pomwe ogwiritsa ntchito onse akugona.

Ndi cholemetsa cholemetsa, mulingo wa API ukhoza kukulitsidwa pafupifupi kwanthawi yayitali, kungowonjezera zatsopano pomwe kuchuluka kwa zopempha kumawonjezeka.

Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Zindikirani. Pakali pano dongosolo lathu likufanana kwambiri ndi zomwe makampani a PaaS monga Heroku kapena Elastic Beanstalk pa AWS amapereka kunja kwa bokosi (ndicho chifukwa chake ali otchuka). Heroku amayika nkhokwe pagulu lapadera, amawongolera chowongolera chowongolera ma auto-scaling, ndikukulolani kuti mulandire kasitomala pa intaneti mosiyana ndi API. Ichi ndi chifukwa chachikulu chogwiritsira ntchito Heroku pamapulojekiti oyambirira kapena oyambitsa - mumapeza zofunikira zonse kuchokera m'bokosi.

Ogwiritsa ntchito 10: CDN

Mwina tikadachita izi kuyambira pachiyambi. Kukonza zopempha ndi kuvomereza zithunzi zatsopano kwayamba kubweretsa zovuta kwambiri pa maseva athu.

Pakadali pano, muyenera kugwiritsa ntchito ntchito yamtambo kuti musunge zinthu zosasunthika - zithunzi, makanema ndi zina zambiri (AWS S3 kapena Digital Ocean Spaces). Nthawi zambiri, API yathu iyenera kupewa kuchita zinthu monga kutumiza zithunzi ndikukweza zithunzi ku seva.

Ubwino winanso wa kuchititsa mitambo ndi CDN (AWS imatcha chowonjezera ichi Cloudfront, koma ambiri osungira mitambo amapereka kunja kwa bokosi). CDN imasunga zithunzi zathu m'malo osiyanasiyana padziko lonse lapansi.

Ngakhale malo athu akuluakulu a data angakhale ku Ohio, ngati wina apempha chithunzi kuchokera ku Japan, wopereka mtambo apanga kopi ndikuyisunga mu data center ya Japan. Munthu wotsatira amene apempha chithunzichi ku Japan achilandira mwachangu kwambiri. Izi ndizofunikira tikamagwira ntchito ndi mafayilo akulu, monga zithunzi kapena makanema, omwe amatenga nthawi yayitali kutsitsa ndikufalitsa padziko lonse lapansi.

Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Ogwiritsa ntchito 100: kukulitsa gawo la data

CDN yathandiza kwambiri: magalimoto akukula mwachangu. Wolemba mavidiyo otchuka Mavid Mobrick adangolembetsa nafe ndikuyika "nkhani" yake, monga akunena. Chifukwa cha zolemetsa zolemetsa, CPU ndi kugwiritsa ntchito kukumbukira pa ma seva a API kumakhala kochepa (zochitika khumi za API zikuyenda), koma tikuyamba kupeza nthawi yochuluka pa zopempha ... kuchedwa uku kumachokera kuti?

Kukumba pang'ono muzitsulo, tikuwona kuti CPU pa seva yachinsinsi ndi 80-90% yodzaza. Ife tiri pa malire.

Kuchulukitsa gawo la data mwina ndi gawo lovuta kwambiri la equation. Ma seva a API amapereka zopempha zopanda malire, kotero timangowonjezera zochitika za API. Mphuno ambiri ma database sangathe kuchita izi. Tidzakambirana za machitidwe odziwika bwino a database (PostgreSQL, MySQL, etc.).

posungira

Njira imodzi yosavuta yowonjezerera magwiridwe antchito a database yathu ndikuyambitsa gawo latsopano: cache layer. Njira yodziwika bwino yosungiramo zinthu zakale ndi malo osungiramo zinthu zakale, monga Redis kapena Memcached. Mitambo yambiri ili ndi mtundu woyendetsedwa wa mautumikiwa: Elasticache pa AWS ndi Memorystore pa Google Cloud.

Cache ndiyothandiza ngati ntchitoyo ikuyitanira mobwerezabwereza ku database kuti itengenso zomwezo. Kwenikweni, timapeza database kamodzi kokha, kusunga zambiri mu cache, ndipo osakhudzanso.

Mwachitsanzo, muutumiki wathu wa Graminsta, nthawi iliyonse wina akapita ku tsamba la mbiri ya nyenyezi ya Mobrik, seva ya API imafunsa nkhokwe kuti mudziwe zambiri kuchokera ku mbiri yake. Izi zimachitika mobwerezabwereza. Popeza zambiri za mbiri ya Mobrik sizisintha ndi pempho lililonse, ndizabwino kwambiri posungira.

Tidzasunga zotsatira kuchokera ku database ku Redis ndi kiyi user:id ndi nthawi yovomerezeka ya masekondi 30. Tsopano, wina akapita ku mbiri ya Mobrik, timayamba kuyang'ana Redis, ndipo ngati deta ilipo, timangoyitumiza kuchokera ku Redis. Tsopano zopempha ku mbiri yodziwika bwino patsambalo sizimatsitsa database yathu.

Ubwino wina wa mautumiki ambiri a caching ndikuti ndiwosavuta kukula kuposa ma seva a database. Redis ili ndi mawonekedwe a Redis Cluster. Zofanana ndi zolemetsa zolemetsa1, imakulolani kugawa cache yanu ya Redis pamakina angapo (kudutsa masauzande a maseva ngati pakufunika).

Pafupifupi mapulogalamu onse akuluakulu amagwiritsa ntchito caching; ndi gawo lofunikira kwambiri la API yachangu. Kukonza kwamafunso mwachangu komanso ma code opindulitsa ndizofunikira, koma popanda cache ndizosatheka kukulitsa ntchito kwa ogwiritsa ntchito mamiliyoni ambiri.

Werengani Replicas

Pamene chiwerengero cha mafunso ku database chawonjezeka kwambiri, chinthu chimodzi chomwe tingachite ndikuwonjezera zolemba zowerengera mu kasamalidwe ka database. Ndi ntchito zoyendetsedwa zomwe zafotokozedwa pamwambapa, izi zitha kuchitika ndikudina kamodzi. Zofananira zomwe zawerengedwa zikhalabe zomwe zili munkhokwe yayikulu ndipo zikupezeka pazosankha za SELECT.

Nayi dongosolo lathu tsopano:

Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Zotsatira Zotsatira

Pamene ntchito ikupitilira kukula, tipitiliza kulekanitsa mautumiki kuti tiwongolere paokha. Mwachitsanzo, ngati tiyamba kugwiritsa ntchito ma Websockets, ndiye kuti ndizomveka kukoka ma code a Websockets mu ntchito yosiyana. Titha kuziyika pamikhalidwe yatsopano kumbuyo kwathu kolemetsa, komwe kumatha kukwera ndi kutsika kutengera maulalo otseguka a Websockets ndipo mosasamala kanthu za kuchuluka kwa zopempha za HTTP.

Tidzapitilizanso kulimbana ndi zoletsa pamlingo wa database. Ino ndi nthawi yoti muphunzire kugawa magawo a database ndi sharding. Njira zonse ziwiri zimafunikira zowonjezera, koma zimakulolani kuti muwonjeze nkhokwe mpaka kalekale.

Tikufunanso kukhazikitsa ntchito yowunikira ndi kusanthula ngati New Relic kapena Datadog. Izi zidzakuthandizani kuzindikira mafunso ochedwa ndikumvetsetsa komwe kukufunika kusintha. Pamene tikukula, tikufuna kuyang'ana kwambiri kupeza zolepheretsa ndikuzichotsa-nthawi zambiri pogwiritsa ntchito malingaliro ena a m'magawo apitawo.

Zotsatira

Nkhaniyi idauziridwa ndi imodzi mwa zomwe ndimakonda kwambiri za scalability yapamwamba. Ndinkafuna kuti nkhaniyi ikhale yachindunji kwambiri pamagawo oyambilira a ntchito ndikumasula kuchokera kwa wogulitsa m'modzi. Onetsetsani kuti mukuwerenga ngati mukufuna chidwi ndi mutuwu.

Mawu a M'munsi

  1. Ngakhale zofanana pakugawa katundu nthawi zambiri, kukhazikitsidwa kwa gulu la Redis kumakhala kosiyana kwambiri ndi chojambulira katundu. [bwerera]

Momwe mungakulitsire ogwiritsa ntchito 1 mpaka 100

Source: www.habr.com

Kuwonjezera ndemanga