Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

Бисёре аз стартапҳо аз ин гузаранд: шумораи зиёди корбарони нав ҳар рӯз сабти ном мешаванд ва гурӯҳи таҳиягарон барои нигоҳ доштани хидмат мубориза мебаранд.

Ин як мушкили хуб аст, аммо дар интернет маълумоти дақиқ дар бораи чӣ гуна бодиққат миқёс кардани барномаи веб аз ҳеҷ чиз то садҳо ҳазор корбарон мавҷуд нест. Одатан, ҳалли оташ ё ҳалли мушкилот вуҷуд дорад (ва аксар вақт ҳарду). Аз ин рӯ, одамон барои васеъ кардани лоиҳаи худфаъолияти худ ба як чизи воқеан ҷиддӣ усулҳои хеле маъмулро истифода мебаранд.

Биёед кӯшиш кунем, ки маълумотро филтр кунем ва формулаи асосиро нависед. Мо ният дорем, ки сайти нави мубодилаи аксҳои Graminsta-ро зина ба зина аз 1 то 100 000 корбар афзоиш диҳем.

Биёед бинависем, ки вақте аудитория ба 10, 100, 1000, 10 000 ва 100 000 нафар мерасад, чӣ гуна чораҳои мушаххас андешидан лозим аст.

1 корбар: 1 мошин

Қариб ҳар як барнома, хоҳ он вебсайт ё барномаи мобилӣ, се ҷузъи асосӣ дорад:

  • API
  • пойгоҳи додаҳо
  • муштарӣ (худи замимаи мобилӣ ё вебсайт)

Пойгоҳи додаҳо маълумоти доимиро нигоҳ медорад. API ба дархостҳо ва атрофи ин маълумот хидмат мерасонад. Мизоҷ маълумотро ба корбар интиқол медиҳад.

Ман ба хулосае омадам, ки дар бораи миқёси барнома сӯҳбат кардан осонтар аст, агар аз нуқтаи назари меъморӣ объектҳои муштарӣ ва API комилан ҷудо карда шаванд.

Вақте ки мо бори аввал ба сохтани барнома шурӯъ мекунем, ҳар се ҷузъро дар як сервер иҷро кардан мумкин аст. Аз баъзе ҷиҳатҳо, ин ба муҳити рушди мо монанд аст: як муҳандис пойгоҳи додаҳо, API ва муштариро дар як мошин идора мекунад.

Дар назария, мо метавонем онро дар абр дар як мисоли DigitalOcean Droplet ё AWS EC2 ҷойгир кунем, тавре ки дар зер нишон дода шудааст:
Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст
Бо ин гуфта мешавад, ки агар дар сайт зиёда аз як корбар мавҷуд бошад, бахшидани қабати пойгоҳи додаҳо қариб ҳамеша маъно дорад.

10 корбар: интиқоли пойгоҳи додаҳо ба сатҳи алоҳида

Тақсим кардани пойгоҳи додаҳо ба хидматҳои идорашаванда ба монанди Amazon RDS ё Database Ocean Managed Database барои муддати тӯлонӣ ба мо хидмат хоҳад кард. Ин назар ба хостинги худидоракунӣ дар як мошини ягона ё EC2 каме гаронтар аст, аммо бо ин хидматҳо шумо аз қуттӣ бисёр васеъшавии муфид мегиред, ки дар оянда муфид хоҳанд буд: нусхабардории бисёрминтақавӣ, нусхаҳои хондан, автоматӣ нусхаҳои эҳтиётӣ ва ғайра.

Ин аст он чизе ки система ҳоло ба назар мерасад:
Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

100 корбар: интиқол додани муштарӣ ба сатҳи алоҳида

Хушбахтона, ба корбарони аввалини мо барномаи мо хеле писанд омад. Трафик устувортар шуда истодааст, бинобар ин вақти он расидааст, ки мизоҷро ба сатҳи алоҳида интиқол диҳед. Бояд гуфт, ки ҷудоӣ объектҳо як ҷанбаи асосии сохтани барномаи миқёспазир мебошад. Вақте ки як қисми система трафики бештарро қабул мекунад, мо метавонем онро тақсим кунем, то назорат кунем, ки чӣ гуна миқёси хидмат дар асоси шакли мушаххаси трафик.

Ин аст, ки чаро ман дӯст медорам, ки муштарӣ аз API ҷудо бошад. Ин фикр карданро дар бораи таҳияи платформаҳои гуногун хеле осон мекунад: веб, веби мобилӣ, iOS, Android, замимаҳои мизи корӣ, хидматҳои тарафи сеюм ва ғайра. Онҳо ҳама танҳо муштариёни ҳамон API-ро истифода мебаранд.

Масалан, ҳоло корбарони мо бештар дархост мекунанд, ки замимаи мобилиро нашр кунанд. Агар шумо объектҳои муштарӣ ва API-ро ҷудо кунед, ин осонтар мешавад.

Чунин система чунин менамояд:

Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

1000 корбар: тавозуни сарборӣ илова кунед

Корҳо ба боло рафта истодаанд. Корбарони Graminsta аксҳои бештар бор мекунанд. Шумораи бақайдгирӣ низ меафзояд. Сервери ягонаи API-и мо дар нигоҳ доштани тамоми трафик душворӣ мекашад. Оҳани бештар лозим аст!

Тавозуни сарборӣ як консепсияи хеле пурқувват аст. Идеяи калидӣ дар он аст, ки мо дар назди API мувозинати сарборӣ мегузорем ва он трафикро ба мисолҳои хидматрасонии инфиродӣ тақсим мекунад. Ин аст, ки мо ба таври уфуқӣ миқёс мекунем, яъне мо серверҳои бештарро бо ҳамон код илова мекунем ва шумораи дархостҳоеро, ки мо коркард карда метавонем, зиёд мекунем.

Мо дар назди муштарии веб ва дар назди API тавозуни алоҳидаи сарборӣ ҷойгир карданием. Ин маънои онро дорад, ки шумо метавонед якчанд мисолҳоро иҷро кунед, ки рамзи API ва коди муштарии вебро иҷро мекунанд. Тавозуни сарборӣ дархостҳоро ба сервере, ки камтар бор карда шудааст, равона мекунад.

Дар ин ҷо мо боз як бартарии муҳим - зиёдатӣ ба даст меорем. Вақте ки як мисол ноком мешавад (шояд аз ҳад зиёд бор карда ё садама), мо бо дигарон боқӣ мемонем, ки ба дархостҳои воридотӣ посух медиҳанд. Агар танҳо як мисол кор мекард, дар сурати нокомӣ тамоми система вайрон мешавад.

Тавозуни сарборӣ инчунин миқёси автоматиро таъмин мекунад. Мо метавонем онро барои зиёд кардани шумораи мисолҳо пеш аз сарбории авҷи баланд танзим кунем ва ҳангоми хоб будани ҳамаи корбарон онро кам кунем.

Бо тавозуни сарборӣ, сатҳи API-ро тақрибан ба таври номуайян васеъ кардан мумкин аст ва танҳо бо афзоиши шумораи дархостҳо мисолҳои нав илова карда мешавад.

Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

Шарҳ. Ҳоло системаи мо ба он чизе ки ширкатҳои PaaS ба монанди Heroku ё Elastic Beanstalk дар AWS аз қуттӣ пешниҳод мекунанд, хеле монанд аст (аз ин рӯ онҳо ин қадар маъмуланд). Heroku базаи маълумотро ба як ҳости алоҳида мегузорад, мувозинати сарбории худкорро идора мекунад ва ба шумо имкон медиҳад, ки муштарии вебро аз API ҷудогона ҷойгир кунед. Ин як сабаби олӣ барои истифодаи Ҳероку барои лоиҳаҳои марҳилаи ибтидоӣ ё стартапҳост - шумо тамоми хидматҳои асосиро аз қуттӣ мегиред.

10 корбар: CDN

Шояд мо бояд аз худи аввал ин корро мекардем. Коркарди дархостҳо ва қабули аксҳои нав ба серверҳои мо фишори зиёд ворид мекунад.

Дар ин марҳила, шумо бояд хидмати абриро барои нигоҳ доштани мундариҷаи статикӣ истифода баред - тасвирҳо, видеоҳо ва ғайра (AWS S3 ё Digital Ocean Spaces). Умуман, API-и мо бояд аз коркарди чизҳое ба мисли хидмати тасвирҳо ва боркунии тасвирҳо ба сервер худдорӣ кунад.

Бартарии дигари хостинги абрӣ ин CDN мебошад (AWS ин иловаи Cloudfront номида мешавад, аммо бисёр провайдерҳои нигаҳдории абр онро аз қуттӣ пешниҳод мекунанд). CDN ба таври худкор тасвирҳои моро дар марказҳои гуногуни маълумот дар саросари ҷаҳон кэш мекунад.

Гарчанде ки маркази маълумотии мо метавонад дар Огайо ҷойгир бошад, агар касе аз Ҷопон тасвир талаб кунад, провайдери абрӣ онро нусхабардорӣ мекунад ва онро дар маркази додаҳои Ҷопонии худ нигоҳ медорад. Шахси навбатӣ, ки ин тасвирро дар Ҷопон дархост мекунад, онро зудтар қабул мекунад. Ин вақте муҳим аст, ки мо бо файлҳои калон, ба монанди аксҳо ё видеоҳо, ки барои зеркашӣ ва интиқол дар саросари сайёра вақти зиёдро талаб мекунанд, кор кунем.

Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

100 корбар: миқёси қабати маълумот

CDN бисёр кӯмак кард: трафик бо суръати тамом меафзояд. Видеоблогери маъруф Мавид Мобрик танҳо дар мо сабти ном шуд ва "достони" худро, ки мегӯянд, нашр кард. Бо шарофати тавозуни сарборӣ, истифодаи CPU ва хотира дар серверҳои API паст нигоҳ дошта мешавад (даҳ мисоли API кор мекунад), аммо мо дар бораи дархостҳо вақти зиёдро ба даст меорем... ин таъхирҳо аз куҷо меоянд?

Каме ба ченакҳо кофта, мо мебинем, ки CPU дар сервери пойгоҳи додаҳо 80-90% бор карда шудааст. Мо дар ҳадди ниҳоӣ ҳастем.

Миқёси қабати додаҳо шояд қисми душвортарини муодила бошад. Серверҳои API ба дархостҳои бидуни шаҳрвандӣ хидмат мекунанд, аз ин рӯ мо танҳо мисолҳои бештари API илова мекунем. Бини аксарият базахои маълумотхо ин корро карда наметавонанд. Мо дар бораи системаҳои маъмули идоракунии пойгоҳи додаҳо (PostgreSQL, MySQL ва ғайра) сӯҳбат хоҳем кард.

кэш

Яке аз роҳҳои осонтарини баланд бардоштани самаранокии базаи мо ин ҷорӣ намудани ҷузъи нав аст: қабати кэш. Усули маъмултарини кэш ин мағозаи сабти арзиши калидӣ дар хотира мебошад, ба монанди Redis ё Memcached. Аксари абрҳо версияи идорашавандаи ин хидматҳоро доранд: Elasticache дар AWS ва Memorystore дар Google Cloud.

Кэш вақте муфид аст, ки хидмат барои гирифтани як маълумот ба пойгоҳи додаҳо зангҳои такрорӣ мекунад. Аслан, мо ба пойгоҳи додаҳо танҳо як маротиба дастрасӣ пайдо мекунем, маълумотро дар кэш нигоҳ медорем ва дигар ба он даст нарасонем.

Масалан, дар хидмати Graminsta мо, ҳар дафъае, ки касе ба саҳифаи профили ситораи Мобрик меравад, сервери API аз пойгоҳи додаҳо маълумотро аз профили ӯ дархост мекунад. Ин боз ва боз такрор мешавад. Азбаски маълумоти профили Mobrik бо ҳар як дархост тағир намеёбад, он барои кэш аъло аст.

Мо натиҷаҳоро аз пойгоҳи додаҳо дар Redis бо калид кэш мекунем user:id бо мӯҳлати эътибор 30 сония. Ҳоло, вақте ки касе ба профили Mobrik меравад, мо аввал Redis-ро тафтиш мекунем ва агар маълумот дар он ҷо бошад, мо онро мустақиман аз Redis интиқол медиҳем. Ҳоло дархостҳо ба профили маъмултарин дар сайт амалан базаи моро бор намекунанд.

Бартарии дигари аксари хидматҳои кэш дар он аст, ки миқёси онҳо нисбат ба серверҳои пойгоҳи додаҳо осонтар аст. Redis дорои режими дарунсохташудаи Redis Cluster мебошад. Ба тавозуни сарборӣ монанд аст1, он ба шумо имкон медиҳад, ки кэши Redis-и худро дар якчанд мошинҳо тақсим кунед (агар лозим бошад, дар байни ҳазорҳо серверҳо).

Қариб ҳамаи замимаҳои калонҳаҷм кэшро истифода мебаранд; он қисми комилан ҷудонашавандаи API-и зуд аст. Коркарди зудтари дархостҳо ва рамзи самараноктар ҳама муҳим аст, аммо бидуни кэш васеъ кардани хидмат ба миллионҳо корбарон қариб ғайриимкон аст.

Репликаҳоро хонед

Вақте ки шумораи дархостҳо ба пойгоҳи додаҳо хеле зиёд шуд, як чизи дигар мо метавонем ин илова кардани репликаҳои хондашуда дар системаи идоракунии пойгоҳи додаҳо мебошад. Бо хидматҳои идорашавандаи дар боло тавсифшуда, ин метавонад бо як клик анҷом дода шавад. Нусхаи хондашуда дар пойгоҳи додаҳои асосӣ ҷорӣ боқӣ мемонад ва барои изҳороти SELECT дастрас аст.

Ҳоло системаи мо ин аст:

Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

Қадамҳои баъдӣ

Ҳангоме ки миқёси барнома идома дорад, мо хидматҳоро ҷудо мекунем, то онҳоро мустақилона васеъ кунем. Масалан, агар мо ба истифодабарии Websockets шурӯъ кунем, пас ин маънои онро дорад, ки рамзи коркарди Websockets ба хидмати алоҳида кашида шавад. Мо метавонем онро дар ҳолатҳои нав дар паси мувозинати сарбории худ ҷойгир кунем, ки он метавонад дар асоси пайвастҳои кушодаи Websockets ва новобаста аз шумораи дархостҳои HTTP миқёсро боло ва паст кунад.

Мо инчунин муборизаро бо маҳдудиятҳо дар сатҳи пойгоҳи додаҳо идома медиҳем. Маҳз дар ин марҳила вақти омӯзиши тақсимоти пойгоҳи додаҳо ва тақсимкунӣ фаро расидааст. Ҳарду равиш хароҷоти иловагиро талаб мекунанд, аммо ба шумо имкон медиҳанд, ки пойгоҳи додаҳоро тақрибан ба таври номуайян васеъ кунед.

Мо инчунин мехоҳем як хидмати мониторинг ва таҳлилро ба монанди New Relic ё Datadog насб кунем. Ин ба шумо кӯмак мекунад, ки дархостҳои сустро муайян кунед ва фаҳмед, ки дар куҷо беҳтарсозӣ лозим аст. Ҳангоми миқёс мо мехоҳем диққати худро ба дарёфти монеаҳо ва рафъи онҳо равона созем - аксар вақт бо истифода аз баъзе ғояҳои бахшҳои қаблӣ.

Манбаъҳои иттилоот

Ин паём аз ҷониби яке аз онҳо илҳом гирифта шудааст паёмҳои дӯстдоштаи ман дар бораи миқёспазирии баланд. Ман мехостам, ки мақоларо барои марҳилаҳои ибтидоии лоиҳаҳо каме мушаххастар созам ва онро аз як фурӯшанда ҷудо кунам. Агар шумо ба ин мавзӯъ таваҷҷӯҳ дошта бошед, ҳатман хонед.

Эзоҳҳо

  1. Гарчанде ки аз ҷиҳати тақсимоти сарборӣ дар якчанд мавридҳо шабеҳ аст, татбиқи аслии кластери Redis аз мувозинати сарборӣ хеле фарқ мекунад. [бозгашт]

Чӣ тавр аз 1 то 100 корбар васеъ кардан мумкин аст

Манбаъ: will.com

Илова Эзоҳ