parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Речь не про простые сайты, а скорее про сервисы для тысяч клиентов

sergei v.2 29.10 12:43 / 29.10 12:47

Есть общий код сервиса (например развернутый в кубере -- можно горизонтально масштабировать) и для каждого клиента свои однотипные хранилища данных (база + s3). Все базы (схемы) состоят из одинаковых таблиц. У нас условно может быть 10 серверов под базы данных (может быть даже с репликацией и т.п.) и на них может крутиться 1000 или 10000 клиентов, каждый из которых живет в своей песочнице. Когда появляется новый клиент ему за 1 секунду в последней базе данных клонируется дефолтная схема-шаблон, содержащая у слвоно 150 таблиц. И погнали работать. Если мы начинаем упираться в диск или в нагрузку на один сервер, то покупается ещё сервер(-а) под БД, и новые схемы начинают литься на него. Если где-то место начинает заканчиваться, можно часть схем из одной БД (сервера) заархивировать и переместить на новый сервер, а на старом высвободить половину диска.
Если какой-то условный клиент со временем престает пользоваться сервисом, то его схема легко архивируется и удаляется.
Весь реестр схем хранится в корневой базе-схеме main и там же для каждого клиента прописан id-коннекта к базе/серверу где лежит сейчас его схема. А все коннекты лежат в секретах проекта в json-конфиге. Если схема переместилась на другой сервер, то мы меняем в main ей id коннекта и летим дальше.

Клиенты это не пользователи -- это некие бизнесы например (интернет-магазины, рестораны, компании, делающие e-mail рассылки). У каждого клиента могут быть свои пользователи сотни тысяч, заказы, шаблоны писем, оплаты, какой-то контент и т.п.