Инженерия
Часть системы, где ошибки стоят дороже всего: нагрузка, деньги и серверы. Здесь 18 лет опыта работают напрямую.
Инженерия
Бэкенд редко падает от количества запросов как такового. Он падает от того, что схема данных не рассчитана на рост, платёж списался дважды, фоновая задача повисла, а мониторинга нет — и о проблеме вы узнаёте от пользователей, а не от системы.
Мой опыт в этой части довольно специфичный: бэкенд криптокошелька Block.io примерно на 300 тысяч пользователей, платёжный сервис с оборотом порядка миллиона долларов в сутки, распределённая сеть из ~1500 устройств под боевой нагрузкой. Плюс антифрод и защита от DDoS.
Отсюда привычка проектировать так, чтобы система переживала и рост, и сбой стороннего сервиса, и повторно пришедший вебхук от платёжного шлюза.
Проектирование под ожидаемый рост, а не под сегодняшние объёмы. Индексы, денормализация там, где она оправдана, и понятные границы между сервисами.
REST или иной протокол по задаче: версионирование, ограничение частоты запросов, идемпотентность, внятные ошибки и документация, по которой можно интегрироваться без созвонов.
Приём платежей, подписки, кредитные модели, покупки внутри приложений. Корректная обработка повторных вебхуков, возвратов и частичных списаний — чтобы деньги сходились.
Профилирование, кэширование, очереди, фоновые задачи. Поиск реального узкого места вместо расширения сервера наугад.
Серверы, обратный прокси, TLS, атомарные релизы с возможностью отката, резервные копии. Предсказуемый выкат вместо ручной заливки файлов.
Метрики, оповещения, логи для разбора инцидентов. Ограничение частоты запросов, антифрод-логика, защита от перебора и DDoS.
Если система уже работает — смотрю, где узкое место и что реально ломается. Часто оказывается, что дело не там, где искали.
Схема решения и порядок работ. Изменения раскладываются на шаги, каждый из которых можно выкатить отдельно и откатить.
Изменения вносятся так, чтобы работающая система не останавливалась: миграции с обратной совместимостью, поэтапная выкатка, возможность вернуться на предыдущую версию.
После выката — метрики и оповещения, чтобы отклонение было видно до того, как о нём напишут пользователи.
Зависит от объёма: API для мобильного приложения и платёжный контур с антифродом — задачи разного порядка. Расчёт почасовой. Опишите задачу — назову ориентир.
Да, это отдельная задача — аудит производительности. Сначала измерения и поиск реального узкого места, потом смета на исправление. Часто первые улучшения обходятся заметно дешевле, чем ожидают.
Российские и зарубежные шлюзы, подписочные модели, покупки в App Store и Google Play, криптоплатежи. Если у шлюза плохая документация — это рабочая ситуация, а не повод отказаться.
Да. Могу взять конкретный участок — например, платёжный контур или инфраструктуру — и передать его вашей команде с документацией.
Ограничение частоты запросов, защита от перебора, проверка чеков и вебхуков на сервере, хранение секретов вне репозитория, TLS. Инженерный бэкграунд включает антифрод и защиту от DDoS.
Как договоримся. Могу передать вашим администраторам с документацией или продолжать поддерживать сам — тоже почасово.
Сайт использует файлы cookie и Яндекс.Метрику, чтобы понимать посещаемость. Продолжая пользоваться сайтом, вы соглашаетесь с этим. Подробнее