Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

Mazhinji ekutanga akafamba neizvi: mhomho yevashandisi vatsva inonyoresa zuva rega rega, uye timu yekusimudzira inonetsekana kuti basa rirambe richimhanya.

Iri idambudziko rakanaka kuva nazvo, asi pane zvishoma ruzivo rwakajeka pawebhu nezve maitiro ekunyatso kuyera webhu application kubva pasina kuenda kumazana ezviuru zvevashandisi. Kazhinji kune zvingave zvigadziriso zvemoto kana zvigadziriso zvebhodhoro (uye kazhinji zvese zviri zviviri). Naizvozvo, vanhu vanoshandisa hunyanzvi hwekuita kuyera chirongwa chavo cheamateur kuita chimwe chinhu chakakomba.

Ngatiedzei kusefa ruzivo uye tinyore pasi iyo yakakosha formula. Tiri kuenda kuyera yedu nyowani yekugovera mafoto saiti Graminsta nhanho nhanho kubva pa1 kusvika ku100 vashandisi.

Ngatinyorei kuti ndezvipi matanho anofanirwa kutorwa kana vateereri vawedzera kusvika pa10, 100, 1000, 10 uye 000 vanhu.

1 mushandisi: 1 muchina

Anenge ese application, ingave webhusaiti kana nharembozha, ine zvinhu zvitatu zvakakosha:

  • API
  • database
  • mutengi (mobile application pachayo kana webhusaiti)

Iyo database inochengetedza data inoenderera. Iyo API inoshandisa zvikumbiro kune nekutenderedza iyi data. Mutengi anotumira data kumushandisi.

Ndakasvika pamhedziso yekuti zviri nyore kutaura nezve kuyera application kana, kubva pakuona kwekuvaka, mutengi uye API masangano akaparadzaniswa zvachose.

Kana isu tatanga kutanga kuvaka application, ese matatu zvikamu zvinogona kumhanya pane imwechete server. Mune dzimwe nzira, izvi zvakafanana nenharaunda yedu yekusimudzira: mumwe injiniya anomhanyisa dhatabhesi, API, uye mutengi pamushini mumwe chete.

Mupfungwa, tinogona kuiisa mugore pane imwechete DigitalOcean Droplet kana AWS EC2 muenzaniso, sezvakaratidzwa pazasi:
Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi
Nezvakataurwa, kana kuchizove nevanopfuura mushandisi mumwechete pane saiti, zvine musoro nguva dzose kutsaurira dhatabhesi layer.

10 vashandisi: kufambisa dhatabhesi kune imwe nhanho

Kupatsanura dhatabhesi mumasevhisi akachengetwa seAmazon RDS kana Digital Ocean Managed Database ichatibatsira kwenguva yakareba. Iyo inodhura zvishoma pane yekuzvibata pamushini mumwe chete kana EC2 muenzaniso, asi nemasevhisi aya unowana akawanda anobatsira ekuwedzera kunze kwebhokisi achauya ane hunyanzvi mune ramangwana: backup yedunhu, verenga replicas, otomatiki. backups, nezvimwe.

Izvi ndizvo zvakaita sisitimu yacho zvino:
Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

100 vashandisi: kufambisa mutengi kune imwe nhanho

Neraki, vashandisi vedu vekutanga vakanyatsofarira application yedu. Traffic iri kuramba yakagadzikana, saka yave nguva yekufambisa mutengi kune imwe nhanho. Zvinofanira kucherechedzwa kuti kuparadzana masangano chinhu chakakosha pakuvaka scalable application. Seimwe chikamu chehurongwa chinogashira traffic yakawanda, tinogona kuipatsanura kudzora kuti zviyero zvesevhisi zvinoenderana sei nematanho etraffic.

Ichi ndicho chikonzero ini ndinoda kufunga nezvemutengi seakaparadzana kubva kuAPI. Izvi zvinoita kuti zvive nyore kufunga nezvekugadzira mapuratifomu akawanda: dandemutande, nharembozha, iOS, Android, desktop applications, third-party services, etc. Vese vangori vatengi vanoshandisa API yakafanana.

Semuenzaniso, ikozvino vashandisi vedu vanowanzo kumbira kuburitsa nharembozha. Kana iwe ukaparadzanisa mutengi uye API masangano, izvi zvinova nyore.

Izvi ndizvo zvinoita sisitimu yakadaro:

Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

1000 vashandisi: wedzera mutoro wekuenzanisa

Zvinhu zviri kufamba zvakanaka. Vashandisi veGraminsta vari kurodha mafoto akawanda. Huwandu hwekunyoresa huri kuwedzerawo. Yedu yega API server iri kuomerwa nekuenderana nese traffic. Unoda imwe iron!

Load balancer ipfungwa ine simba kwazvo. Pfungwa yakakosha nderekuti tinoisa chiyero chemutoro pamberi peAPI, uye inogovera traffic kune yega sevhisi zviitiko. Aya ndiwo maitiro atinoyera akatwasuka, zvichireva kuti isu tinowedzera mamwe maseva ane kodhi yakafanana, tichiwedzera huwandu hwezvikumbiro zvatinogona kugadzirisa.

Isu tichaisa akaparadzana mitoro mabharani pamberi pewebhu mutengi uye pamberi peAPI. Izvi zvinoreva kuti iwe unogona kumhanya akawanda zviitiko uchimhanyisa API kodhi uye webhu mutengi kodhi. Iyo inoremerwa inoremedza inotungamira zvikumbiro kune sevha iyo isina kuremerwa.

Pano tinowana imwe yakakosha mukana - redundancy. Kana imwe muenzaniso ikakundikana (zvichida kuremerwa kana kudonha), isu tinosara nevamwe vanoramba vachipindura kune zvinouya zvikumbiro. Kana paine chiitiko chimwe chete chaishanda, saka kana ikatadza iyo system yese yaizoparara.

Iyo yekuremedza balancer inopawo otomatiki kuyera. Isu tinokwanisa kuimisa kuti iwedzere huwandu hwezviitiko pamberi pepamusoro mutoro, uye kudzideredza kana vashandisi vese vakarara.

Nekuremerwa kwemutoro, iyo API nhanho inogona kuyerwa kanenge nekusingaperi, kungowedzera zviitiko zvitsva sezvo huwandu hwezvikumbiro hunowedzera.

Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

Cherechedza. Parizvino sisitimu yedu yakafanana chaizvo nezvinopihwa nemakambani ePaaS seHeroku kana Elastic Beanstalk paAWS kunze kwebhokisi (ndosaka vachinyanya kufarirwa). Heroku inoisa dhatabhesi pane yakaparadzana mugadziri, anotonga otomatiki-kuyera mutoro wemuyero, uye inobvumidza iwe kugamuchira iyo webhu mutengi zvakasiyana kubva kuAPI. Ichi chikonzero chikuru chekushandisa Heroku kumapurojekiti ekutanga kana ekutanga - iwe unowana ese ekutanga masevhisi kunze kwebhokisi.

10 vashandisi: CDN

Zvichida taifanira kunge takaita izvi kubva pakutanga. Kugadzirisa zvikumbiro uye kugamuchira mafoto matsva kuri kutanga kuisa dambudziko rakawandisa pamaseva edu.

Panguva ino, iwe unofanirwa kushandisa sevhisi yegore kuchengetedza static zvemukati - mifananidzo, mavhidhiyo uye zvimwe zvakawanda (AWS S3 kana Digital Ocean Spaces). Kazhinji, API yedu inofanira kudzivisa kubata zvinhu zvakadai sekushandira mifananidzo uye kuisa mifananidzo kune server.

Imwe mukana wekubata kwegore ndeye CDN (AWS inodana iyi yekuwedzera-pa Cloudfront, asi vazhinji vanochengeta gore vanopa vanopa kunze kwebhokisi). Iyo CDN inongozvivharira mifananidzo yedu munzvimbo dzakasiyana siyana dze data kutenderera pasirese.

Kunyange zvazvo nzvimbo yedu huru yedata ingave iri muOhio, kana mumwe munhu akakumbira mufananidzo kubva kuJapan, mupi wegore achaita kopi uye anoichengeta muJapan data center. Munhu anotevera anokumbira mufananidzo uyu muJapan anougamuchira nekukurumidza. Izvi zvakakosha kana tikashanda nemafaira akakura, semafoto kana mavhidhiyo, anotora nguva yakareba kudhawunirodha uye kutumira pasi rese.

Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

100 vashandisi: kuyera iyo data layer

CDN yakabatsira zvakanyanya: traffic iri kukura nekukurumidza. Vhidhiyo yakakurumbira blogger Mavid Mobrick akangonyoresa nesu uye akaisa "nyaya" yake, sezvavanotaura. Kutenda kune chiyero chemutoro, iyo CPU uye chiyeuchidzo chekushandisa pamasevha eAPI inochengetwa yakaderera (gumi API zviitiko zvichimhanya), asi isu tiri kutanga kuwana nguva yakawanda yekupedza zvikumbiro ... kunonoka uku kunobva kupi?

Kuchera zvishoma mumametrics, tinoona kuti CPU pane server database ndeye 80-90% yakarodha. Tava pamagumo.

Kuyera iyo data layer ingangove yakanyanya kuoma chikamu cheiyo equation. Masevha eAPI anoshandira zvikumbiro zvisingaverengeki, saka isu tinongowedzera mamwe API zviitiko. Nose vazhinji databases haigone kuita izvi. Tichataura nezve yakakurumbira relational database manejimendi masisitimu (PostgreSQL, MySQL, nezvimwewo).

caching

Imwe yedzakareruka nzira dzekuwedzera kuita kwedhatabhesi yedu kuunza chinhu chitsva: iyo cache layer. Iyo yakajairika caching nzira ndeye in-memory kiyi-value rekodhi chitoro, senge Redis kana Memcached. Makore mazhinji ane vhezheni inogadziriswa yemasevhisi aya: Elasticache paAWS uye Memorystore paGoogle Cloud.

A cache inobatsira kana sevhisi ichiita akawanda anodzokororwa kufona kune dhatabhesi kuti atore iwowo ruzivo. Chaizvoizvo, isu tinowana iyo dhatabhesi kamwe chete, chengetedza iyo ruzivo mune cache, uye usaibata zvakare.

Semuyenzaniso, musevhisi yedu yeGraminsta, pese munhu paanoenda kupeji yepafiri yenyeredzi Mobrik, API server inobvunza dhatabhesi yeruzivo kubva kuprofile yake. Izvi zvinoitika zvakare uye zvakare. Sezvo ruzivo rweMobrik harushanduke nechikumbiro chega chega, chakanakira caching.

Isu tichachengeta zvabuda kubva kudhatabhesi muRedis nekiyi user:id nenguva yechokwadi yemasekonzi makumi matatu. Zvino, kana mumwe munhu achienda kuprofile yaMobrik, tinotanga tatarisa Redis, uye kana data iripo, tinongoiendesa zvakananga kubva kuRedis. Iye zvino zvikumbiro kune inonyanya kufarirwa mbiri pane saiti hazvigone kurodha database yedu.

Imwe mukana weakawanda caching masevhisi ndeyekuti ari nyore kuyera pane database maseva. Redis ine yakavakirwa-mukati Redis Cluster modhi. Zvakafanana nekutakura mutoro1, inokutendera iwe kugovera yako Redis cache pamichina yakawanda (kupfuura zviuru zvemaseva kana zvichidikanwa).

Anenge ese mahombe-makuro ekushandisa anoshandisa caching; icho chikamu chakakosha cheiyo inokurumidza API. Kurumidza kugadzirisa mibvunzo uye kuwedzera kodhi kodhi zvese zvakakosha, asi pasina cache hazvigoneke kuyera sevhisi kumamirioni evashandisi.

Verenga Replicas

Kana iyo nhamba yemibvunzo kune dhatabhesi yawedzera zvakanyanya, chimwe chinhu chatinogona kuita kuwedzera kuverenga replicas mudhatabhesi manejimendi system. Nemasevhisi anogadziriswa anotsanangurwa pamusoro, izvi zvinogona kuitwa nekudzvanya kumwe chete. Iyo yekuverenga replica icharamba iripo mune huru dhatabhesi uye inowanikwa kune SELECT statement.

Heino system yedu ikozvino:

Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

Zvitsva Zvitsva

Sezvo application ichiramba ichikwira, isu ticharamba tichipatsanura masevhisi kuti azviyere zvakazvimirira. Semuenzaniso, kana tikatanga kushandisa maWebsockets, saka zvine musoro kudhonza iyo Websockets yekugadzirisa kodhi mune imwe sevhisi. Tinogona kuiisa pazviitiko zvitsva kuseri kwemutoro wedu wemuyero, uyo unogona kukwira kumusoro nekudzika zvichibva pakuvhurwa kweWebsockets kubatana uye zvisinei nehuwandu hwezvikumbiro zveHTTP.

Ticharambawo tichirwisa zvirambidzo padanho redatabase. Iri panguva ino kuti yave nguva yekudzidza database partitioning uye sharding. Maitiro ese ari maviri anoda kuwedzera pamusoro, asi anobvumidza iwe kuyera dhatabhesi kanenge nekusingaperi.

Isu tinoda zvakare kuisa yekutarisa uye analytics sevhisi seNew Relic kana Datadog. Izvi zvichakubatsira kuona mibvunzo inononoka uye kunzwisisa painoda kuvandudzwa. Patinenge tichiyera, tinoda kuisa pfungwa pakutsvaga zvipingamupinyi nekuzvibvisa-kazhinji tichishandisa mamwe emazano kubva muzvikamu zvakapfuura.

Sources

Iyi post inofemerwa neimwe ye zvandinofarira zvinyorwa nezve high scalability. Ini ndaida kuita kuti chinyorwa chive chakanyanya kujeka pamatanho ekutanga emapurojekiti uye nekuchisunungura kubva kune mumwe mutengesi. Iva nechokwadi chekuverenga kana iwe uchida munyaya iyi.

Mashoko omuzasi

  1. Kunyangwe zvakafanana maererano nekugoverwa kwemutoro muzviitiko zvakawanda, iko kudzika kwekuita kweRedis cluster kwakasiyana zvakanyanya kubva kune inoremedza mitoro. [dzokera]

Maitiro ekuyera kubva pa1 kusvika ku100 vashandisi

Source: www.habr.com

Voeg