+7 (982) 010-01-18 Обсудить проект
Серверные стойки с потоками данных и панель мониторинга нагрузки

Веб-разработка

Разработка высоконагруженных систем

Проектируем и разрабатываем высоконагруженные системы: микросервисы на Go и Python, очереди, кэш и масштабирование под рост трафика без потери данных.

Архитектура под рост нагрузки
Микросервисы на Go и Python
Нагрузочные тесты до запуска

Стоимость

Сколько стоит

Стоимость зависит от целевой нагрузки, числа сервисов и интеграций, требований к отказоустойчивости. Вилку называем после брифа и аудита.

Вилку называем после брифа

Объем работ по этой услуге сильно зависит от исходных данных, поэтому цифру даем после короткого созвона, а точную оценку после прототипа.

Входит в работу

  • Модель нагрузки и аудит текущей системы
  • Проектирование архитектуры и выбор технологий
  • Разработка сервисов на Go и Python
  • Настройка очередей, кэша и баз данных
  • Нагрузочное тестирование
  • CI/CD, мониторинг и оповещения
  • Документация по архитектуре и эксплуатации

Оплачивается отдельно

  • Серверы, облако и трафик
  • Лицензии и платные сервисы мониторинга
  • Круглосуточное дежурство без отдельного договора
  • Маркетинг и привлечение пользователей
Калькулятор стоимости

Оценим ваш проект

Оставьте телефон и пару слов о задаче, перезвоним с вилкой по бюджету и срокам.

Проверьте номер: нужно 11 цифр

Без согласия мы не можем принять заявку

Как мы храним и используем данные, описано в политике конфиденциальности

Заявка отправлена

Свяжемся с вами в течение рабочего дня.

Кейсы

Как выглядят продукты, которые мы собираем

Трассер

Платформа для логистики: веб-кабинет диспетчера и приложение курьера

WebAndroidiOS

Капиталика

Инвестиционное приложение: портфель, аналитика и персональные рекомендации

iOSAndroid

Умникум

Онлайн-школа: видеоуроки, домашние задания и прогресс ученика

WebiOSAndroid

BrandSled

Мониторинг репутации бренда: поиск, отзывы, Telegram, ответы нейросети

WebTelegram

Напомка

Сервис напоминаний: запись обычной фразой, Telegram-бот, пуши и виджет

WebAndroidiOSTelegram

Календарь выставок

Учет отраслевых выставок для B2B-компании: календарь, пакеты участия, чек-листы и напоминания

WebiOSAndroid

fpv0

Симулятор FPV-дрона в браузере: четыре 3D-карты, стики на телефоне и конструктор трасс

WebPWAAndroidiOS

Панель хозяйства

Присмотр за машинами, сайтами и сервисами с телефона без открытия домашней сети

WebiOSAndroid

Грядка

Доставка фермерских продуктов: каталог, корзина и курьер на карте

iOSAndroidWeb

Терапис

Телемедицина: запись к врачу, видеоконсультации и медкарта

iOSAndroid

Ритмика

Приложение сети фитнес-клубов: расписание, абонементы и трекер тренировок

iOSAndroidWatch

Сначала проекты, которые мы запустили: свои продукты и работы для заказчиков, названия заказчиков скрыты. Дальше демо-проекты с пометкой "демо": интерфейсы и архитектура продуктов разных классов.

Процесс

Как идет работа

Прозрачный процесс: каждый этап заканчивается результатом, который можно посмотреть руками

  1. 01

    Анализ

    Модель нагрузки, профиль запросов, требования к доступности. Итог: целевые метрики системы

  2. 02

    Прототип архитектуры

    Схема сервисов, баз и очередей, проверка рискованных мест на тестовом стенде

  3. 03

    Дизайн API и данных

    Контракты API, схема базы и событий, интерфейсы, если они нужны

  4. 04

    Разработка

    Пишем сервисы, настраиваем CI/CD и инфраструктуру в Kubernetes

  5. 05

    Нагрузочное тестирование

    Подаем нагрузку выше пика, находим предел и узкие места, исправляем

  6. 06

    Запуск

    Постепенная выкатка, переключение трафика, контроль метрик в реальном времени

  7. 07

    Поддержка

    Мониторинг, оптимизация под рост, развитие сервисов

Стек

Технологии

Стек выбираем под задачу, бюджет поддержки и команду, которая будет развивать продукт

  • GoСервисы с большим числом одновременных соединений
  • PythonБизнес-логика, обработка данных, админки
  • PostgreSQLОсновная база с репликами и партиционированием
  • KafkaОчереди событий и обмен между сервисами без потери сообщений
  • KubernetesОркестрация контейнеров и автоматическое масштабирование
  • RedisКэш, сессии, лимиты запросов
  • ClickHouseАналитика и отчеты по большим объемам событий
  • Prometheus и GrafanaМетрики, дашборды и оповещения

Форматы

Три способа начать

Формат выбираем на первом созвоне, по задаче и бюджету

01

MVP

Первая версия продукта с главным сценарием, чтобы проверить спрос до больших вложений.

Разработка MVP
02

Проект под ключ

Ведем продукт целиком: аналитика, дизайн, разработка, тесты, запуск и поддержка.

Как мы работаем
03

Выделенная команда

Собираем команду под ваш продукт, она работает в вашем ритме и по вашим задачам.

Выделенная команда

Подробно

Разработка высоконагруженных систем начинается с цифр: сколько пользователей придет в пике, сколько запросов в секунду получит сервис, какой объем данных накопится за год. От этих цифр зависит архитектура, выбор базы данных и то, как система будет масштабироваться. Мы проектируем и пишем такие сервисы для бизнеса, у которого рост трафика не должен превращаться в падения и потерю заказов.

Высоконагруженные приложения

Высоконагруженные приложения - это сервисы, которые обслуживают много одновременных пользователей и не могут позволить себе остановку. Типичные примеры: интернет-магазин в дни распродаж, социальная сеть или сообщество с лентой и уведомлениями, платежный сервис, логистическая платформа с тысячами курьеров в реальном времени, онлайн-школа во время вебинара. У всех одна проблема: нагрузка приходит волнами, и система должна выдерживать пик так же, как обычный день.

Для бизнеса простой стоит денег: минута недоступности магазина в распродажу означает брошенные корзины, а медленный ответ API у партнера - сорванные интеграции. Поэтому требования к доступности и времени ответа фиксируем в начале проекта, и от них зависит вся дальнейшая работа.

Если вы только разбираетесь в теме, почитайте, как устроены высоконагруженные системы и чем они отличаются от обычных сайтов.

Разработка высоконагруженных приложений

В разработке высоконагруженных приложений язык значит меньше, чем инженерная дисциплина. Каждый запрос к базе проверяем на план выполнения, тяжелые операции уводим в фоновые задачи, сетевые вызовы делаем с таймаутами и повторными попытками. Сервис без состояния (stateless, когда сервер не хранит данные сессии у себя) легко размножить на несколько экземпляров за балансировщиком, поэтому состояние держим в базе и кэше. Пулы соединений с базой и лимиты запросов подбираем под реальную нагрузку.

Архитектура высоконагруженных систем

Архитектура высоконагруженных систем строится из нескольких слоев, и у каждого своя задача:

  • балансировщик распределяет запросы между экземплярами приложения;
  • кэш в Redis отдает частые данные без обращения к базе;
  • очереди в Kafka принимают события и сглаживают пики: заказ принят сразу, а обработка идет в фоне без потери сообщений;
  • база данных PostgreSQL с репликами на чтение и, если объем растет, с разделением данных на шарды (части базы на разных серверах);
  • аналитика и отчеты уходят в отдельное хранилище, чтобы не нагружать рабочую базу.

Горизонтальное масштабирование (добавление серверов вместо покупки одного мощного) настраиваем в Kubernetes: при росте нагрузки система сама поднимает новые экземпляры сервиса, при спаде убирает их.

Выбор технологий зависит от профиля нагрузки. Для потока событий и аналитики подключаем ClickHouse, для полнотекстового поиска Elasticsearch, для файлов - S3-совместимое объектное хранилище.

Разработка микросервисов

Разработка микросервисов оправдана, когда части системы растут с разной скоростью или их ведут разные команды. Каталог, корзина, платежи и уведомления живут отдельно, общаются через API и события, и сбой в сервисе рекомендаций не роняет оформление заказа. Сервисы с большим числом одновременных соединений пишем на Go, бизнес-логику и работу с данными на Python. Для небольшого проекта микросервисы часто избыточны, тогда делаем модульный монолит и делим его, когда появляется реальная причина.

Проектирование высоконагруженных систем

Проектирование высоконагруженных систем мы начинаем с модели нагрузки. Вместе с вами считаем пиковое число пользователей, профиль запросов, рост данных на горизонте двух-трех лет. Затем ищем узкие места заранее: где будет упираться база, какие интеграции отвечают медленно, какие операции нельзя терять. Отдельно продумываем связи с внешними системами: платежи, 1С, службы доставки. Их медленный ответ не должен тормозить пользователя, поэтому такие вызовы идут через очередь с повторами. По итогам готовим схему архитектуры, выбор технологий и план, как система будет расти вместе с бизнесом.

Если система уже работает и не справляется, начинаем с аудита: снимаем метрики, профилируем запросы, находим узкое место и предлагаем, что менять в первую очередь. Часто высокую нагрузку снимают индексы, кэш и вынос тяжелых задач в очередь, без переписывания всего проекта.

Цена проекта зависит от целевой нагрузки, числа интеграций и требований к отказоустойчивости. Вилку называем после брифа и оценки архитектуры. Можно начать с аудита существующей системы или с проектирования, а разработку вести силами выделенной команды.

Процессы разработки программного обеспечения и DevOps

В высоконагруженном проекте процессы разработки программного обеспечения важны не меньше кода. Мы работаем по DevOps-практикам (разработка и эксплуатация как один процесс): каждое изменение проходит автоматические тесты и сборку в CI/CD, выкатывается постепенно и откатывается одной командой. Инфраструктуру описываем кодом в Terraform и Helm-чартах, поэтому окружения для тестов и продакшена собираются одинаково.

Перед релизом проводим нагрузочное тестирование: подаем на систему трафик выше ожидаемого пика и смотрим, при каком числе запросов растет время ответа. Это позволяет найти предел до того, как его найдут пользователи. В продакшене работает мониторинг: метрики, логи и трассировка запросов, оповещения дежурной команде. Платформа, которая сообщает о проблеме раньше клиентов, дешевле в эксплуатации.

Вместе к большему

Проверим, выдержит ли система пик

Расскажите о нагрузке и текущей архитектуре, и мы предложим аудит или план разработки.

Вопросы

Частые вопросы

Не нашли ответ? Спросите нас
Что такое Highload?

Highload - это режим работы, при котором система обслуживает столько запросов или данных, что обычной архитектуры на одном сервере уже не хватает. От просто большой системы highload отличается тем, что упирается в пределы железа и требует распределять нагрузку между серверами. Пример: интернет-магазин, который в обычный день работает на одном сервере, а в распродажу получает в разы больше запросов.

Что такое Highload-разработка?

Highload-разработка - это создание программ, которые с самого начала рассчитаны на высокую нагрузку и горизонтальное масштабирование. От обычной разработки она отличается тем, что производительность и отказоустойчивость закладывают в архитектуру заранее, а не чинят после первых падений. Пример: сервис доставки сразу проектируют с очередью заказов и кэшем, чтобы вечерний пик не останавливал прием новых заказов.

Что такое Highload-проекты?

Highload-проекты - это продукты, где нагрузка и объем данных определяют архитектуру: маркетплейсы, социальные сети, платежные и логистические сервисы, онлайн-кинотеатры. От проектов с большой командой или сложной логикой их отличает именно трафик: сложная CRM на сто сотрудников может быть совсем не highload. Пример: сервис такси, где тысячи машин каждые несколько секунд отправляют координаты.

Что такое высоконагруженные информационные системы?

Высоконагруженные информационные системы - это системы хранения и обработки данных, которые продолжают отвечать быстро при большом числе одновременных пользователей и запросов. От обычной информационной системы их отличают распределенная архитектура, резервирование и мониторинг. Пример: портал госуслуг в дни массовой подачи заявлений. Подробнее о том, как работают высоконагруженные системы, рассказали в блоге.

Бесплатно

Прототип вашего приложения или сайта за 5 дней

5-7 ключевых экранов и смета по этапам. Останутся у вас, даже если дальше вы решите работать не с нами.

Оставить заявку

Расскажите о вашем проекте

Мы свяжемся с вами в течение рабочего дня и предложим варианты решения.

Или напрямую: +7 (982) 010-01-18

Укажите имя

Проверьте номер: нужно 11 цифр

Проверьте адрес почты

Без согласия мы не можем принять заявку

Как мы храним и используем данные, описано в политике конфиденциальности

Ответим в течение рабочего дня

Заявка отправлена

Свяжемся с вами в течение рабочего дня.