Если вы серьезно относитесь к масштабированию, вам следует переосмыслить архитектуру вашего приложения . Самая дорогая часть вычислений - это память (RAM), поэтому выделенная память для каждого клиента не позволит вам масштабировать.
Вместо того, чтобы разделять клиентов с помощью капель, вы должны переместить это логическое разделение на слой данных . Таким образом, каждый клиент может использовать одни и те же горизонтально масштабированные вычислительные серверы и базы данных, но программное обеспечение разделяет их данные и доступ на основе идентификатора пользователя в базе данных.
Подумайте на мгновение ... делает Gmail хранить оперативную память для каждого конкретного клиента? Нет, все используют одни и те же вычисления и базу данных, но программное обеспечение отделяет их сообщения от других пользователей. Это позволяет им масштабироваться до огромного количества клиентов без назначения ресурсов для каждого клиента.
Вот еще пара примеров ...
Atlassian раньше имел именно то, что выимеют. Каждому клиенту JIRA Cloud будет назначена собственная виртуальная машина с ЦП, ОЗУ и базой данных. Им пришлось довести свой центр обработки данных до невероятных размеров, и это было дорого!
Затем они отправились в путешествие, чтобы перейти к мультитенантности, сначала отделив базы данных от каждого клиента (и используя общий пул). баз данных), затем перейдя на общие микросервисы и, в конечном итоге, они удалили все ресурсы для каждого клиента.
См .:
Salesforce с самого начала решили стать мультитенантом. Они определили концепцию SaaS и привыкли называть себя «облаком» (до облачных вычислений, как мы его знаем сейчас). В то время как их системы сегментированы для масштабирования, несколько клиентов совместно используют одни и те же ресурсы в пределах сегмента. Разделение данных о клиентах осуществляется на уровне базы данных.
См .:
Итог: Конечно, вы можете попытаться оптимизировать текущую архитектуру с помощью контейнеров, но если выЕсли вы хотите серьезно отнестись к масштабу (я говорю 10x или 100x), то вам нужно переосмыслить архитектуру .