«Система работает отлично на 50 пользователях. Мы готовы к масштабированию». Эту фразу CTO крупного банка произнёс за три месяца до катастрофы. Когда количество пользователей достигло 800, CRM начала тормозить. При 2 000 — падать несколько раз в день. Проект заморозили, потратив258 500 000 ₸. Переписывали архитектуру с нуля.
История типичная. Большинство CRM-систем проектируются для малого и среднего бизнеса. Они работают прекрасно на сотнях пользователей. Но enterprise — другой мир. 10 000, 50 000, 100 000 пользователей. Миллионы записей. Тысячи одновременных операций. Требования к доступности 99,99%. Это принципиально иной класс задач.
В этой статье разберём, как строить CRM-архитектуру, способную масштабироваться до сотен тысяч пользователей. Технические детали, проверенные паттерны, реальные кейсы. Материал будет полезен архитекторам, техническим директорам и всем, кто планирует enterprise-внедрение.
Не каждой компании нужна архитектура на 100 000 пользователей. Enterprise-подход оправдан, когда стандартные решения перестают справляться. Вот конкретные пороги:
По количеству пользователей:
По объёму данных:
По требованиям к доступности:
Правило: если падение CRM на час стоит компании более55 000 000 ₸ — вам нужна enterprise-архитектура.
Прежде чем проектировать архитектуру, нужно определить целевые метрики. Без них невозможно принимать обоснованные решения.
RPS (Requests Per Second) — количество запросов в секунду, которое система должна обрабатывать. Как рассчитать:
Формула для CRM:
RPS = (Активные пользователи × Запросов на пользователя в минуту) / 60
Пример: 10 000 одновременных пользователей × 10 запросов/мин = 100 000 / 60 ≈ 1 700 RPS
Latency (задержка) — время ответа системы. Для CRM критичны:
Availability (доступность) — процент времени, когда система работает:
| SLA | Допустимый простой в год | Типичные требования |
|---|---|---|
| 99% | 3,65 дня | Малый бизнес, некритичные системы |
| 99,9% | 8,76 часа | Средний бизнес |
| 99,95% | 4,38 часа | Крупный бизнес |
| 99,99% | 52 минуты | Enterprise, финансы, телеком |
| 99,999% | 5 минут | Mission-critical системы |
Важно: каждая дополнительная «девятка» в SLA кратно увеличивает стоимость инфраструктуры. Не гонитесь за 99,99%, если бизнес переживёт час простоя.
Главный принцип масштабируемой архитектуры — stateless. Сервис не хранит состояние между запросами. Любой запрос может обработать любой экземпляр сервиса.
Почему это критично:
Что нужно вынести из сервиса:
Пример архитектуры API-слоя:
Load Balancer → N экземпляров API (stateless) → Распределённый кэш → База данных
Автомасштабирование. В облаке (или Kubernetes) можно настроить автоматическое добавление/удаление экземпляров по метрикам:
Результат: система автоматически адаптируется к нагрузке. Утром, когда все приходят на работу — больше серверов. Ночью — меньше.
База данных — обычно главное узкое место. Вертикальное масштабирование (более мощный сервер) имеет предел. Горизонтальное масштабирование БД — шардинг.
Что такое шардинг. Данные разбиваются на части (шарды), каждая часть хранится на отдельном сервере. Запросы маршрутизируются к нужному шарду по ключу.
Стратегии шардинга для CRM:
1. Шардинг по tenant (клиенту). Каждый крупный клиент или группа клиентов — на отдельном шарде. Идеально для SaaS CRM с enterprise-клиентами.
Пример:
Клиенты A, B, C → Шард 1
Клиенты D, E, F → Шард 2
Клиент G (очень крупный) → Шард 3 (выделенный)
Преимущества: изоляция данных, возможность выделить ресурсы для VIP-клиентов, соответствие требованиям compliance.
2. Шардинг по региону. Данные клиентов хранятся в их географическом регионе. Критично для соответствия законам о локализации данных.
Пример:
Россия → Шард в Москве (соответствие 152-ФЗ)
Казахстан → Шард в Алматы
Европа → Шард в Франкфурте (соответствие GDPR)
3. Шардинг по диапазону ID. Записи распределяются по шардам в зависимости от ID. Простая реализация, но может привести к неравномерной нагрузке.
Проблемы шардинга:
Рекомендация: проектируйте схему данных так, чтобы 95% запросов были в рамках одного шарда. Для CRM это обычно означает — все данные клиента на одном шарде.
Наши архитекторы спроектировали системы для банков, телекома, ритейла. Проведём аудит вашей архитектуры и подготовим план масштабирования.
Запросить консультациюКэширование — самый эффективный способ снизить нагрузку на базу данных и ускорить отклик. Но неправильное кэширование хуже, чем его отсутствие.
Уровни кэширования в CRM:
1. Кэш запросов к БД (Query Cache). Результаты частых запросов кэшируются. TTL: секунды-минуты.
2. Кэш объектов (Object Cache). Сериализованные объекты CRM. TTL: минуты-часы.
3. Кэш страниц / API-ответов. Полные ответы API. TTL: секунды. Осторожно с персонализированными данными.
4. CDN для статики. Изображения, скрипты, стили. TTL: дни-недели.
Стратегии инвалидации:
| Стратегия | Описание | Когда использовать |
|---|---|---|
| TTL (Time To Live) | Кэш автоматически истекает через N секунд | Данные, где допустима небольшая задержка обновления |
| Write-through | При записи в БД — сразу обновляем кэш | Критичные данные, которые часто читаются |
| Write-behind | Пишем в кэш, асинхронно в БД | Высокая нагрузка на запись, допустима потеря данных |
| Event-driven | Событие изменения → инвалидация кэша | Распределённые системы, микросервисы |
Типичные ошибки:
Метрика успеха: cache hit ratio должен быть >90% для read-heavy операций. Если ниже — пересмотрите стратегию.
Не всё нужно делать синхронно. Пользователь нажал «Сохранить» — он хочет быстрый ответ, а не ждать, пока система отправит уведомления, обновит поиск, пересчитает аналитику.
Что выносить в асинхронную обработку:
Технологии очередей:
| Технология | Особенности | Когда использовать |
|---|---|---|
| RabbitMQ | Гибкая маршрутизация, подтверждения, простота | Большинство задач, task queues |
| Apache Kafka | Высокая пропускная способность, хранение событий | Event sourcing, аналитика, интеграции |
| Redis Streams | Простота, если Redis уже есть | Небольшие очереди, real-time |
| Amazon SQS | Managed, масштабируется автоматически | AWS-инфраструктура |
Паттерны обработки:
Важно: асинхронная обработка требует идемпотентности. Задача может выполниться дважды (at-least-once delivery). Код должен корректно это обрабатывать.
Вечный спор. Правильный ответ: зависит от контекста. Для enterprise CRM оба подхода могут работать.
Монолит (modular monolith):
Микросервисы:
Типичное разбиение CRM на сервисы:
Рекомендация: начните с модульного монолита. Выделяйте микросервисы, когда появляется явная потребность (разные требования к масштабированию, независимые релизы, разные команды).
Для SLA 99,99% система должна переживать отказы компонентов без простоя. Это требует избыточности на всех уровнях.
Репликация базы данных:
Automatic failover:
Сценарий: Primary БД падает
Multi-region deployment:
Для максимальной отказоустойчивости — развёртывание в нескольких дата-центрах или регионах облака.
Circuit Breaker паттерн:
Если внешний сервис недоступен — не пытаться бесконечно. После N неудач — «открыть circuit», возвращать ошибку сразу. Периодически проверять, восстановился ли сервис.
Практика: регулярно проводите Chaos Engineering — намеренно «убивайте» компоненты, чтобы проверить, как система восстанавливается.
Нельзя управлять тем, что не измеряешь. Enterprise-система требует комплексного мониторинга.
Три столпа observability:
1. Metrics (метрики) — числовые показатели, агрегированные по времени.
Инструменты: Prometheus + Grafana, Datadog, New Relic
2. Logs (логи) — события в системе.
Инструменты: ELK Stack (Elasticsearch, Logstash, Kibana), Loki + Grafana
3. Traces (трейсы) — путь запроса через систему.
Инструменты: Jaeger, Zipkin, Datadog APM
Алертинг:
Важно: избегайте alert fatigue. Если алертов слишком много — их начнут игнорировать. Каждый алерт должен требовать действия.
Enterprise CRM хранит критичные данные: клиентов, сделки, финансовую информацию. Безопасность — не опция.
Аутентификация и авторизация:
Шифрование:
Аудит и compliance:
Сетевая безопасность:
Практика: регулярные penetration tests, bug bounty программа, security reviews при изменениях архитектуры.
Enterprise-архитектура стоит денег. Важно понимать, за что платите и как оптимизировать.
Основные статьи расходов:
| Компонент | Примерная стоимость (облако) | На что влияет |
|---|---|---|
| Compute (серверы) | 2 500 000 ₸ – 25 000 000 ₸/мес | Количество пользователей, RPS |
| База данных (managed) | 1 500 000 ₸ – 15 000 000 ₸/мес | Объём данных, IOPS, репликация |
| Кэш (Redis/Memcached) | 250 000 ₸ – 2 500 000 ₸/мес | Объём кэша, высокая доступность |
| Хранилище (S3) | 250 000 ₸ – 5 000 000 ₸/мес | Объём файлов, трафик |
| CDN | 100 000 ₸ – 1 000 000 ₸/мес | Трафик, география |
| Мониторинг | 250 000 ₸ – 2 500 000 ₸/мес | Объём метрик, retention |
| Сеть (трафик) | 500 000 ₸ – 5 000 000 ₸/мес | Исходящий трафик, cross-region |
Пример бюджета для 50 000 пользователей:
Способы оптимизации:
Для enterprise оба варианта жизнеспособны. Выбор зависит от требований, компетенций, регуляторики.
Cloud (AWS, Azure, GCP, Yandex Cloud):
On-premise / private cloud:
Гибридный подход:
Часто оптимальный вариант — гибрид. Чувствительные данные on-premise, остальное в облаке.
Пример гибридной архитектуры:
Важно: для России 152-ФЗ требует хранения персональных данных граждан РФ на территории страны. Это ограничивает выбор западных облаков для определённых данных.
Один из крупнейших банков СНГ внедрял CRM для всей розничной сети. 50 000 пользователей: операционисты, менеджеры по продажам, руководители отделений.
Требования:
Архитектурные решения:
Результаты после года работы:
Уроки:
Масштабируемая архитектура, on-premise или cloud deployment, SLA до 99,99%. Проектируем и внедряем CRM для компаний от 5 000 пользователей.
Обсудить enterprise-проектПеред масштабированием убедитесь, что архитектура готова:
Stateless и масштабирование:
База данных:
Кэширование:
Асинхронная обработка:
Отказоустойчивость:
Мониторинг:
Безопасность:
Enterprise-масштабирование CRM — это не просто «добавить серверов». Это другой подход к архитектуре, другие требования к команде, другой бюджет.
Ключевые принципы:
Не пытайтесь построить enterprise-архитектуру сразу. Начните с модульного монолита, масштабируйте по мере роста. Преждевременная оптимизация дороже, чем эволюционное развитие.
И помните историю из начала статьи. CRM, которая «отлично работает на 50 пользователях» — это не enterprise-ready система. Проектируйте с запасом. Тестируйте под нагрузкой. Мониторьте всё. Тогда ваша CRM выдержит и 100 000 пользователей.
Для тех, кто планирует enterprise-внедрение: