Блог

Как выбрать технологический стек при разработке цифрового сервиса

7 марта 2025
16 мин. 122
image
image
Елена Андреева редактор-копирайтер
Как выбрать технологический стек при разработке цифрового сервиса
В айти стек технологий разработки для цифрового продукта включает в себя различные инструменты и платформы, которые разработчики используют в связке для достижения общей цели. Простыми словами, стек технологий — это совокупность взаимосвязанных программных инструментов, фреймворков, библиотек, языков программирования и других технологий, используемых для разработки и развертывания конкретного приложения или веб-сайта. В этой статье погрузимся в тонкости технологий разработки и обсудим, как выбирать их не сердцем, а умом.

Три слоя стека технологий

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

Фронтенд (Frontend)

Это то, что видит пользователь — интерфейс веб-сайта или приложения. Включает в себя:
HTML: Структура веб-страницы.
CSS: Стиль и визуальное оформление.
JavaScript: Интерактивность и динамика.
Фреймворки/библиотеки JavaScript: React, Angular, Vue. js и др. Они упрощают разработку и структурирование сложных интерфейсов.

Бэкенд (Backend)

Серверная часть приложения, отвечающая за логику, обработку данных и взаимодействие с базами данных. Включает в себя:
Язык программирования: Python, Java, Node. js, PHP, Ruby и др.
Фреймворки: Django (Python), Spring (Java), Express. js (Node.js), Ruby on Rails (Ruby) и др. Они предоставляют готовые инструменты и структуры для разработки бэкенда.
База данных: MySQL, PostgreSQL, MongoDB, Redis и др. Хранят и управляют данными приложения.
API (Application Programming Interface): Интерфейс, позволяющий фронтенду общаться с бэкендом. Часто используется RESTful API.
Надо сказать, что в современных aйти-сервисах фронтенд и бэкенд далеко не всегда четко разделены. Например, в любом классическом сайт на Битриксе их очень сложно отделить друг от друга. Очень часто бэкенд в итоге отвечает за всю работу сайта, а фронтенд становиться только частью бэка. Но в этой статье мы будем их рассматривать отдельно, хотя и с оговорками.

Инфраструктура (Infrastructure)

Окружение, на котором работает приложение. Включает в себя:
Серверы: Физические или виртуальные машины, на которых размещается приложение.
Облачные платформы: AWS, Google Cloud, Azure и др. Предоставляют инфраструктуру как услугу (IaaS).
Системы управления версиями: Git, SVN и др. Для отслеживания изменений в коде.
Системы непрерывной интеграции и непрерывного развертывания (CI/CD). Автоматизируют процессы сборки, тестирования и развертывания приложения.
Докеры (Docker). Платформа контейнеризации. Позволяет упаковывать приложения и их зависимости в контейнеры для обеспечения изоляции и переносимости между различными окружениями.
K8S (Kubernetes): Платформа оркестрации контейнеров. Предназначена для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями.

Примеры стеков технологий

Существуют устоявшиеся «наборы» технологий: стеки, которые чаще всего используются для решения задач одного типа. Как правило, у них есть названия — аббревиатуры, составленные из первых букв технологий, включенных в этот стек. Вот несколько популярных примеров.
MEAN стек: MongoDB, Express. js, Angular, Node. js (JavaScript-ориентированный стек)
MERN стек: MongoDB, Express. js, React, Node. js (JavaScript-ориентированный стек)
LAMP стек: Linux, Apache, MySQL, PHP (традиционный стек)
Ruby on Rails стек: Ruby, Rails, PostgreSQL, Nginx
Правильный выбор стека критически важен для успеха айти-продукта. И чтобы его правильно сделать, нужно учесть требования проекта, его бюджет, опыт команды и другие факторы.

Как происходит выбор стека

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

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

Итак, выбор инструментов для разработки влияет на то, каким получится продукт. И именно поэтому приступать к нему нужно тогда, когда требования к продукту выявлены и закреплены в документе: бизнес-требованиях (BRD) или функционально-технических требованиях (ФТТ).

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

Выбор технологий

Backend — основа продукта

Выбор начинается с серверной части (Backend), потому что это это «сердце» цифрового продукта. Он отвечает за логику работы, обработку данных, хранение информации, безопасность и интеграцию с другими системами. Вся ключевая функциональность, которая делает цифровой продукт полезным и рабочим, реализуется на backend. Разберем несколько популярных стеков для его создания.

В разработке серверной части цифровых сервисов (бэкенде) сегодня часто можно встретить Node.js.
Node.js (Node) — это платформа с открытым исходным кодом для работы с языком JavaScript, построенная на движке Chrome V8. Она позволяет писать код для веб-приложений и динамических веб-страниц, а также программ командной строки.
Раньше Node. js в больших проектах использовался только для отдельных сервисов — бэкенды для чатов, уведомлений, получения быстрочитаемых данных. Однако благодаря развитию инструментов и сообщества JavaScript / TypeScript стало достаточно удобно использовать Node. js и как основную технологию для больших веб-проектов, и сейчас их число заметно выросло.

Наиболее популярной базой данный в пару к JS-фреймворкам стала MongoDB. Дело в том, что Node. js обрабатывает запросы в одном потоке. Соответственно, приложению жизненно необходимо как можно меньше думать и как можно быстрее получать данные, чтобы не блокировать запросы других пользователей. А в MongoDB можно хранить ненормализованные JSON-данные и быстро их считывать.

Минус: в какой-то момент так называемые MERN-стеки (Mongo-Express-React-Node) стали настолько популярными, что использовались и там, где это явно не нужно, из-за чего компании могли сталкиваться с проблемами роста.

Также для бэкенда популярен язык программирования Python в сочетании с его фреймворками Django и Flask, а также FastAPI — фреймворком для разработки API.
Фреймворки Python — это готовые наборы инструментов, библиотек и правил для создания программ на Python, которые позволяют программистам быстрее и проще создавать цифровые продукты — особенно веб-сайты и веб-приложения. Фреймворк берет на себя рутинные и общие задачи, например, организацию кода (задает структуру проекта), работу с базами данных, маршрутизацию запросов. Используя фреймворк, программист не пишет все с нуля, а фокусируется на уникальных особенностях своего приложения.
Python — довольно простой язык для изучения, который многие IT-специалисты выбирают в качестве первого языка программирования, в школе или вузе. Технологический стек на его основе пережил второе рождения с популяризацией профессий в области Data Science. Сейчас в Python-среде существует множество популярных библиотек для работы с данными и машинным обучением. Также простота языка — причина доступности специалистов, работающих с этим языком. Простыми словами, вы легко найдёте разработчиков на Python, и цена их труда не будет чрезмерно высокой.

Популярные фреймворки на Python:
Django. Универсальный фреймворк, включающий из коробки почти все, что может понадобиться для современного веб-бэкенда: от авторизации и аутентификации до ORM и автоматически генерируемой CMS. Позволяет небольшим командам быстро запускать проекты. Но для больших систем Django может показаться обузой.
Flask. Простой фреймворк, который отлично подойдет для небольших микросервисов. Например, он часто используется для создания API для запросов к ML-моделям.
FastAPI. Довольно молодой и современный фреймворк для разработки API. Отличный выбор как для микросервисов, так и для более крупных API-first проектов.
Также для Python существует огромное количество библиотек для работы с различными базами данных, поскольку этот язык часто применяется в области Data Science.
Если говорить о недостатках, то наиболее часто можно услышать про специфику интерпретатора Python, в частности GIL (Global Interpreter Lock), не позволяющий эффективно реализовать многопоточность в некоторых задачах.

Говоря о бэкенде, нельзя не упомянуть также язык программирования Ruby и фреймворк Ruby on Rails. Ruby on Rails оказал огромное влияние на всю веб-разработку. Многие его подходы копировались (и до сих пор копируются) на другие веб-фреймворки. Сейчас популярность асинхронных подходов и микросервисных архитектур отодвинула этот технологический стек на задний план, из-за чего специалисты в нём стали более редкими, а цена разработки из-за этого выросла.

В разработке бэкенда используются также ASP.NET (фреймворк Microsoft на основе платформы .NET) и Java Spring Boot (фреймворк на основе языка программирования Java). Это консервативные, но надёжные стеки, которые используют, если нужна надежность и производительность продукта. Например, для банковских приложений.

Языки программирования Go (более простой) и Rust (сложнее, но более гибкий) также применяют в бэкенде, в основном для создания высокопроизводительных микросервисов с высокими требованиями к скорости вычислений и конкурентности. У Go сейчас гораздо шире экосистема для веб-разработки, однако Rust тоже набирает популярность в этом плане. При росте аудитории продукта и его сложности, с высокой вероятностью в вашей команде начнут появляться программисты на Go или Rust, потому что эти компилируемые языки часто являются отличным дополнением к стекам с более развитой веб-экосистемой.

Выбор инструментов для бэкенда зависит от требований к производительности, масштабируемости и опыта команды.

Frontend — взгляд со стороны пользователя

В клиентской части (frontend) тоже доступны разные инструменты и их комбинации. Для корпоративных сайтов, лендингов и других простых веб-проектов популярен стэк JAMStack (JS + API +Markup). Он подразумевает предварительную генерацию статических html-страниц на основе данных, полученных из API и html-шаблонов. Это делает подобные сайты супер-быстрыми, ведь не требуется вообще никаких вычислений на сервере в момент запроса — просто возврат уже готовой html-страницы.
Если говорить о фронтенде, существует два типа архитектуры сайтов: SSR и SPA. Для каждого типа применяются свои инструменты.

  • SSR (Server-Side Rendering) — «подготовка страницы на стороне сервера». В этом подходе сервер «готовит» страницу полностью и отправляет браузеру уже готовую. Браузер быстро показывает страницу пользователю. Это хорошо для скорости загрузки.
  • SPA (single page application) — это архитектура, где содержимое загружается через файлы JavaScript для всего приложения и размещается на одной html-странице. Файлы JavaScript содержат все данные, относящиеся к логике приложения, пользовательскому интерфейсу и взаимодействию с сервером
Из конкретных фреймворков популярен React. Среди его преимуществ — зрелость, огромное количество разработчиков на рынке и богатый выбора готовых решений в экосистеме.

Также часто можно встретить Next.js для SSR-реализации и Gatsby для JAMStack, а также Vue.js и Angular. В последние годы набирает популярность Svelte, удобный и простой в использовании фреймворк для JavaScript, и его SSR-фреймворк SvelteKit.

Инфраструктура

Выбирая технологии для создания инфраструктуры будущего сервиса, важно также обратить внимание на следующие компоненты:
02
Инструменты для запуска приложения прямо на сервере: контейнеризация через Docker или Kubernetes.
03
Инструменты CI/CD: мы подробно писали о них в одной из прошлых статей. В России целесообразно выбирать open source варианты.
Облачные платформы, серверы и хостинги (AWS, Azure, Google Cloud). Облако обеспечивает масштабируемость, гибкость, отказоустойчивость и доступ к широкому спектру сервисов, необходимых для современной разработки и эксплуатации. Однако, разнообразие облачных провайдеров и предлагаемых ими услуг может затруднить выбор. Популярные решения на Западе — Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). В России их альтернативами сегодня стали Яндекс. Cloud, решение от Ростелеком, CloudMTS, SberCloud Advanced и Облако Mail.ru.Что касается хостингов, то в России сегодня десятки хостинг-провайдеров, включая таких стабильных и популярных как Timeweb, Fozzy, Beget, Sprinthost.
01
Тип базы данных (SQL, NoSQL): выбор зависит от типа данных и требований к производительности.
04

Оценка и выбор технологического стека

Выше мы отчасти затронули критерии выбора стэка. Это непростой процесс, ведь у каждой технологии есть свои сильные стороны. Теперь подытожим основные критерии оценки.
Стоимость. Включает не только стоимость лицензий (если есть), но и стоимость разработки (зарплаты программистов, время разработки), стоимость инфраструктуры (серверы, облачные сервисы), стоимость поддержки и сопровождения. Не забывайте про совокупную стоимость владения (TCO) на протяжении всего жизненного цикла проекта и её зависимость от выбранных технологий. Например, стоимость хостинга.
Время разработки (Time-to-Market). Насколько быстро ваша команда сможет освоить стэк и начать продуктивную разработку? Существуют ли готовые технические решения, библиотеки и фреймворки, которые ускорят процесс? Скорость разработки напрямую влияет на конкурентоспособность и прибыльность проекта.
Масштабируемость. Сможет ли стэк выдержать рост нагрузки и увеличение количества пользователей в будущем? Легко ли масштабировать приложение горизонтально и вертикально? Масштабируемость — ключевой фактор для долгосрочного успеха проекта, особенно если вы планируете быстрое развитие.
Безопасность. Насколько безопасен выбранный стэк? Есть ли известные уязвимости? Какие инструменты и практики безопасности доступны? Безопасность — это не только защита от взломов, но и защита данных пользователей и репутации компании.
Помимо этих основных критериев, могут быть и дополнительные, специфичные для проекта:
Производительность. Критична для высоконагруженных систем и приложений, требовательных к ресурсам.
Поддержка сообщества. Активное сообщество — это доступ к знаниям, решениям проблем и обновлениям.
Интеграция с существующей инфраструктурой. Важно, чтобы для этого была техническая возможность.
Экосистема инструментов: Наличие удобных IDE, отладчиков, инструментов тестирования и развертывания.
Определите приоритетность критериев для вашего проекта. Например, для стартапа на первом этапе может быть важнее скорость разработки, чем техническая масштабируемость. Для крупного enterprise-проекта безопасность и масштабируемость могут быть на первом месте.

Выбирая стэк, важно учитывать и качества инструментов, с которыми вы решили работать. И главное их них — гибкость и возможность адаптации к будущим изменениям. Это модульность (возможность легко заменять отдельные компоненты стэка без переписывания всего приложения), хорошая документация, активное сообщество и возможность миграции.

Не зацикливайтесь на «модных» и «хайповых» технологиях, если они не обладают достаточной гибкостью и зрелостью. Ищите баланс между инновациями и стабильностью. Выбирайте стэк, который позволит вам эволюционировать вместе с вашим проектом и адаптироваться к новым вызовам.

Вместо саммари

02
Не существует универсального решения, подходящего для всех проектов.
03
Выбор набора технологий начинается с серверной части (бэкенда). Во вторую очередь его определяет клиентская часть (фронтенд), в третью — технические инфраструктурные требования.
Выбор технологического стэка — это ответственный и многогранный процесс.
01
04
Выбирая стэк технологий, важно осознанно подойти к оценке вашего проекта, учесть все риски и критерии, и отобрать технологии, которые наилучшим образом соответствует вашим текущим и будущим потребностям. Также важны качества выбранных инструментов, в первую очередь гибкость — умение меняться и развиваться.

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