Технологический стек
Технологию выбираем под задачу, срок жизни продукта и команду, которая будет его развивать, а не под моду. Здесь — на чём мы строим веб, мобильные приложения и ИИ-решения, как принимаем решения о стеке и какие инженерные практики входят в каждый проект.
Как части продукта связаны между собой
Типовые схемы для обсуждения архитектуры. Реальный стек выбираем после проверки данных, нагрузки и ограничений; эти схемы не описывают конкретный клиентский проект.
Веб-сервис
- Интерфейс — Браузер, формы, кабинет
- API и правила — Роли, проверки, бизнес-логика
- Данные — База, файлы, резервные копии
- Внешние системы — CRM, платежи, уведомления
Что учесть: Быстрый доступ по ссылке и одна точка обновления. Для работы без сети и сложных возможностей устройства нужны отдельные решения.
Мобильное приложение
- iOS / Android — Экраны, камера, локальные данные
- API приложения — Авторизация и синхронизация
- Серверные данные — Общее состояние и история
- Сервисы устройства — Push, магазины приложений
Что учесть: Учитываем версии ОС, проверку на устройствах и правила публикации. Офлайн-сценарий требует разрешения конфликтов при синхронизации.
Интеграция систем
- Система-источник — CRM, 1С или ERP
- Слой обмена — Очередь, повторы, преобразование
- Система-получатель — Заказы, остатки, документы
- Контроль обмена — Журнал ошибок и уведомления
Что учесть: Для каждого типа данных выбираем источник истины и правила обновления. Проверяем ограничения API, дубли и поведение при недоступности системы.
Что согласовать до выбора стека
Аккаунты и доступы
Определяем владельца домена, хостинга, репозитория и магазинов приложений до запуска.
Зависимости и лицензии
Фиксируем сторонние сервисы, регулярные расходы и условия их замены.
Эксплуатация
Согласуем резервирование, мониторинг, инструкции и ответственность после передачи.
На чём мы строим продукты
- React и Next.js — Веб-приложения, личные кабинеты, SaaS и маркетплейсы. Серверный рендеринг там, где нужен поисковик, и быстрый интерфейс там, где работает пользователь.
- Flutter — Одно приложение для iOS и Android из общей кодовой базы. Выбираем между Flutter, React Native и нативной разработкой под задачу, а не по привычке.
- AI-стек — LLM, GigaChat, RAG по базе знаний, распознавание речи и ML-модели. Модель выбираем под требования к данным, эффект меряем метрикой процесса.
Как мы выбираем стек
Технология — это решение на годы: на ней будут дописывать новые функции, под неё будут нанимать людей и за неё будут платить хостингу. Поэтому стек обсуждаем на брифе вместе с бюджетом и сроками, а не выбираем по привычке.
- Задача раньше инструмента. Сначала описываем, что продукт должен делать, какая нагрузка и какие интеграции, и только потом подбираем технологию. Лендингу не нужен Kubernetes, а маркетплейсу не хватит конструктора.
- Стоимость владения, а не только разработки. Считаем, сколько проект будет стоить в поддержке, хостинге и развитии через два-три года. Дешёвый старт на экзотическом стеке часто оборачивается дорогой поддержкой.
- Рынок специалистов. Берём технологии, под которые вы найдёте разработчиков и без нас: React, TypeScript, Python, Go, Swift и Kotlin. Продукт не должен зависеть от одной команды, в том числе от нашей.
- Данные и требования закона. Если персональные данные должны храниться в России, закладываем это в архитектуру с первого дня: российские облака, серверы заказчика, GigaChat вместо зарубежной модели там, где это требуется.
- Интеграции с тем, что уже работает. 1С, Bitrix24, amoCRM, платёжные сервисы CloudPayments, ЮKassa и СБП, госуслуги через ЕСИА. Новая система встраивается в существующие процессы, а не заставляет их перестраивать.
- Продукт можно передать. Стандартная структура проекта, типизированный код, документация и инфраструктура, описанная кодом. Порядок передачи кода, доступов и прав закрепляется в договоре.
Полный стек
Веб-интерфейсы
Кабинеты, SaaS, маркетплейсы и сайты с логикой: React, Next.js, TypeScript, Tailwind CSS, Vite.
Мобильные приложения
iOS и Android: кроссплатформенно или нативно: Flutter, React Native, Swift / SwiftUI, Kotlin / Compose, Firebase.
Бэкенд и API
Бизнес-логика, интеграции, платежи: Node.js, Python / FastAPI, Go, GraphQL, WebRTC.
Данные и очереди
Хранение, поиск, аналитика, обмен сообщениями: PostgreSQL, Redis, ClickHouse, Elasticsearch, RabbitMQ, Kafka.
ИИ и машинное обучение
LLM, RAG, речь, прогнозы и рекомендации: GigaChat API, OpenAI GPT, LangChain, Whisper, TensorFlow, PyTorch.
Инфраструктура и качество
Выкладка, мониторинг, воспроизводимые окружения: Docker, Kubernetes, Terraform, GitLab CI, Prometheus, Grafana, Sentry.
Стек в реальных проектах
- СРО4НО.РФ: газетная полоса, которая работает как классифайд — Классифайд с газетной эстетикой: объявление без регистрации за 2 минуты, поиск по 250 000 позиций за 150 мс. ₽18 млн выручки за год. Стек: React 18, Next.js 14, TypeScript, Node.js, Express, PostgreSQL, ElasticSearch.
- speechio.ru: голос с задержкой менее 100 мс на обычном канале при 10 000+ соединений — VoIP-платформа speechio.ru на WebRTC и Opus: задержка меньше 100 мс, 10 000+ одновременных соединений, целевая доступность 99,95%. Стек: WebRTC, React, TypeScript, Node.js, PostgreSQL, Redis, Docker.
- Подписочная платформа РБК: полмиллиона платежей в месяц — Система подписок для медиахолдинга РБК: 500 тыс.+ транзакций в месяц, гибкий биллинг, несколько платёжных провайдеров, когортная аналитика. Стек: Node.js, PostgreSQL, ClickHouse, RabbitMQ, Redis, React, Docker.
- AI-аналитика 100 000+ звонков в месяц для Банкирро — AI-анализ 100 000+ звонков в месяц: транскрибация точностью 95%, разметка по 15+ параметрам, интеграция с CRM. Охват контроля — с 5% до 100%. Стек: Python 3.11, TensorFlow 2.15, OpenAI Whisper, spaCy NLP, BERT, React 18, TypeScript.
- Detmir: маркетплейс, который спрашивает возраст раньше категории — Приложение маркетплейса детских товаров: подбор подарков по возрасту, поиск по 50 000 позиций. 500 000+ родителей, 2 млн+ заказов, 4,8 в App Store. Стек: React Native, TypeScript, Redux, React Navigation, Node.js, PostgreSQL, Redis.
- Musicbox: рекомендации, которые угадывают в 95% случаев у пользователей с историей прослушиваний — Музыкальный стриминг: 50 млн треков, рекомендации на TensorFlow с точностью 95%, старт трека быстрее 0,5 с, 100 млн+ прослушиваний в месяц. Стек: React Native, TypeScript, Redux Toolkit, Node.js, GraphQL, PostgreSQL, Redis.
- Банкирро: две трети заявок ушли в приложение — Приложения iOS и Android для полисов финансовой защиты: биометрия, офлайн-режим, заявки. 150 000+ установок, 65% заявок в приложении. Стек: Swift, Kotlin, SwiftUI, Jetpack Compose, Combine, Coroutines, Firebase.
- Phenomen: 40 часов в неделю, которые уходили на сбор отчётов — BI-платформа для ритейла: хранилище на ClickHouse, ETL из 15+ источников, ML-прогноз спроса точностью 92%. 90% отчётов автоматизировано. Стек: Python, Apache Airflow, PostgreSQL, ClickHouse, Apache Spark, Redis.
- Магнит: релиз раз в две недели превратился в релиз почти каждый день — DevOps для маркетингового IT-контура Магнита: Kubernetes, CI/CD, IaC, мониторинг. Вывод функций — с 2 недель до 3 дней, MTTR — с 4 часов до 20 минут. Стек: Jenkins, Kubernetes, Docker, Terraform, Prometheus, Grafana, GitLab CI.
Инженерные практики в каждом проекте
Не отдельная услуга и не строка в смете, а то, как устроена работа. Эти практики определяют, сколько будет стоить проект через год.
- Код-ревью каждого изменения. Ни одна правка не попадает в основную ветку без второго взгляда. Ревью ловит ошибки дешевле тестов и распространяет знание о коде на всю команду.
- Автотесты и CI/CD. Юнит-, интеграционные и сквозные тесты запускаются на каждое изменение. Выкладка идёт по конвейеру, откат делается одной командой, а не ночным ручным деплоем.
- Инфраструктура как код. Серверы, сети и окружения описаны в Terraform и манифестах Kubernetes. Тестовый стенд совпадает с боевым, а новое окружение поднимается за часы, а не за недели.
- Наблюдаемость. Метрики, журналы и трассировки с первого релиза. У Магнита после внедрения мониторинга и CI/CD время восстановления после сбоя сократилось с 4 часов до 20 минут.
- Безопасность по умолчанию. Проверка по OWASP Top 10, шифрование данных при хранении и передаче, разграничение доступов, требования 152-ФЗ к формам и хранению персональных данных.
- Скорость как критерий приёмки. Размер бандла, изображения и Core Web Vitals проверяются до сдачи. Медленная страница — это дефект, а не пожелание на следующий спринт.
Разборы архитектурных решений
- Технологический стек для стартапа: как выбрать и не ошибиться
- Микросервисы или монолит: когда переходить и как не ошибиться
- GraphQL или REST: как выбрать архитектуру API
- Cloud-native архитектура: отказоустойчивость и экономика облака
Частые вопросы о технологиях
Почему React, а не Vue или Angular?
Все три фреймворка зрелые, и на каждом можно сделать хороший продукт. React мы выбираем из-за размера рынка специалистов и экосистемы: под него проще нанять людей, а React Native позволяет переиспользовать опыт и часть кода в мобильном приложении. Если у вас уже есть продукт на другом фреймворке, сравниваем стоимость развития на нём и переписывания и говорим, что выгоднее.
Можно ли разместить проект в российском облаке или на наших серверах?
Да. Приложения упаковываются в Docker-контейнеры и разворачиваются в Kubernetes или на обычных серверах, поэтому не привязаны к конкретному провайдеру. Размещаем в российских облаках или в контуре заказчика, если данные не должны покидать компанию.
Нужно ли заказчику самому выбирать технологию?
Нет. На бесплатном брифе мы предлагаем стек под задачу и объясняем выбор: почему эта технология, сколько будет стоить поддержка и кого нанимать, если вы захотите развивать продукт своей командой.
Беретесь ли вы за проекты, начатые другой командой?
Да. Начинаем с аудита: состояние кода, зависимостей, инфраструктуры и документации. По итогам даём план, что оставить, что переписать и сколько это стоит, чтобы решение о продолжении принималось на фактах.
Как вы работаете с персональными данными?
Закладываем требования 152-ФЗ в архитектуру: где хранятся данные, кто имеет к ним доступ, как оформлено согласие в формах и что уходит во внешние сервисы. Для ИИ-решений с чувствительными данными используем российские модели или развёртывание в контуре компании.
404gen — креативное digital-агентство полного цикла, работаем удалённо по всей России.
Телефон: +7 993 729-59-59 (пн–пт, 10:00–19:00 МСК). WhatsApp: +7 913 141-20-96. Telegram: @aporkulevich. Почта: ap@404gen.ru.