Собираем стек под проект
Зачем:Теперь всё из части складывается в один выбор: сервер, язык, API, вход и вебхуки под конкретный проект, с учётом российских реалий (хостинги, закон о хранении данных, зависимость от иностранных сервисов). После урока у вас есть схема серверной части и список рисков.
20 минут
Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.
Стек — набор технологий, из которых сделан сервис: страницы, язык, API, вход, уведомления, данные и хостинг. Его выбирают по главному действию и пути данных.
Из частей в целое
Вы узнали, как работает сервер, чем статика отличается от динамики, чем PHP отличается от Node.js, как выглядит API, как приходят заявки и как устроен вход. Теперь можно собрать всё в одно решение для вашего проекта. Это и называют выбором стека: набора технологий, из которых сделан сервис. Здесь нет правильного ответа «вообще». Есть ответ, который подходит вашему проекту, и вы умеете его обосновать.
Как рассуждать
Порядок рассуждения важнее конкретных названий, и он всегда один и тот же.
- Главное действие. Что посетитель должен сделать на сайте: оставить заявку, купить, записаться, прочитать? Всё остальное служит ему. Это то самое действие из вашего брифа.
- Путь данных. Что происходит после нажатия: куда уходят данные, кто их принимает, кто и как узнаёт о них. У заявки это посетитель, форма, приём, хранение, уведомление и владелец. Каждый шаг пути это блок, которому нужен инструмент.
- Самое простое подходящее на каждом шаге. Не самое мощное и не самое модное. Если хватает готового файла, не нужна база. Если хватает сервиса форм, не нужно приложение. Если заявку хватает отправить письмом, не нужен личный кабинет.
- Что будет, когда сломается. Любой блок когда-нибудь откажет, и план на этот случай составляют заранее, пока спокойно.
- Где лежат данные и кто их видит. Закон здесь не формальность.
Стек по блокам
Страницы. Статика или динамика. Для визитки, лендинга, блога чаще статика: готовые файлы, которые раздаёт nginx или хостинг (вы помните, насколько это быстрее, дешевле и безопаснее). На движке (WordPress, 1С-Битрикс) страницы собираются из базы, и это оправдано, когда контент часто меняют несколько людей, а не программист. Про движки и генераторы сайтов впереди целая часть.
Язык и приложение. Нужно, только если есть динамика: приём заявок, вход, личный кабинет. Вы уже видели, как выбирать: для сайта на движке это PHP, для чата Node.js, Go или Elixir, а в остальных случаях тот язык, на котором легче всего найти людей. Если динамики на сайте одна форма, часто выгоднее не писать приложение, а подключить сервис форм или облачную функцию.
API. Для списка и заявки хватит простого REST с описанием OpenAPI. GraphQL нужен, когда у проекта несколько разных клиентов.
Вход. Начните с вопроса, нужен ли он. Если нужен, то без паролей (пасскей, ссылка с почты, Яндекс ID), а роли зафиксируйте заранее.
Заявки и уведомления. Приём, вебхук в мессенджер или письмо на почту. Подпись, идемпотентность и быстрый ответ. Два канала надёжнее одного.
Данные. База нужна, если что-то надо хранить и искать: заявки, пользователей, заказы. Если не нужна, не заводите. Про базы следующая часть.
Хостинг и сервер. От дешёвого хостинга с PHP до виртуального сервера (VPS) и облака. Для маленького проекта чаще всего достаточно одного VPS с nginx. Облака, контейнеры и Kubernetes (часть про инфраструктуру) нужны, когда проект вырос.
Выберите блоки для вашего главного действия, и схема сама скажет, чего не хватает и что лишнее:
Главное действие проекта: Главное действие
- Не хватает Главное действие «Главное действие» требует принять данные от посетителя: нужно приложение или сервис форм.
Ориентировочно: 0 ₽ в месяц. Порядок величин для российского рынка, не прайс: цены меняются, а у многих сервисов есть бесплатные ограничения.
Проверьте себя: почему для визитки с формой заявки схема из одного блока «страницы» неполна?
Данные формы надо кому-то принять и о них известить владельца. Нужны хотя бы приём (приложение или сервис форм) и уведомление.
Россия: что учесть
Российский контекст добавляет три вопроса, которые в других странах задают реже.
Где лежат данные. Закон о персональных данных (152-ФЗ) требует, чтобы персональные данные граждан России при сборе записывались и хранились в базах на территории России. Заявка с именем и телефоном это именно такие данные. Поэтому основную базу выбирают у российского провайдера (например, Selectel, Timeweb Cloud, Яндекс Облако, VK Cloud, Cloud.ru). Копии в иностранных сервисах (в том числе в мессенджере) возможны, но о них надо сказать в политике обработки. Что именно и как оформлять, обсудите с юристом: закон трактуют строго, а штрафы ощутимы.
Доступность иностранных сервисов. Условия, цены и доступность зарубежных сервисов для российских пользователей, включая оплату, меняются быстро и не по вашей воле. Для каждого важного блока (почта, форма, платежи, хостинг) стоит заранее знать запасной вариант и иметь возможность сменить его за дни, а не за месяцы.
Хостинги и движки. В России много недорогих хостингов с PHP (WordPress и 1С-Битрикс ставятся там в пару щелчков) и большой рынок специалистов по ним. Для проекта на движке это вполне хороший вариант, а не «устаревший».
Риски
Для каждого блока подумайте, что будет, когда он откажет, и запишите план в одной строке. Три типичных:
- упало приложение с формой: страницы остаются доступны (статика), на странице указаны телефон и почта, и мониторинг сообщает о сбое;
- недоступен канал уведомлений: заявка дублируется на почту;
- потерян сервер: резервная копия базы лежит в другом месте и обновляется каждый день, а сайт разворачивается из репозитория.
Практика
Вы на сайте эпохи 2022 года и подводите итог части. Соберите на одной странице схему серверной части вашего проекта: главное действие, путь данных от посетителя до владельца, семь блоков с выбором и причиной, где хранятся персональные данные и три риска с планом. Выбор «не нужен» для блока такой же полноценный ответ, как название инструмента. Хорошая схема короткая и конкретная: по ней можно поставить задачу разработчику или нейросети.
Что было не так раньше
В 2010-е годы «современным» считалось собрать для визитки стек из десятка технологий: приложение, база, кэш, очередь сообщений, поисковый движок, контейнеры. Это называли «чтобы потом масштабировалось». Потом оказывалось, что сайт никогда не вырос из тысячи посетителей в месяц, а поддерживать десять компонентов, которые каждый могут сломаться, было некому. А на другом полюсе стояла «чёрная коробка»: сайт на движке с пятьюдесятью плагинами неизвестного происхождения, и никто не знал, что где хранится.
Урок обоих перекосов один: сложность нужно заслужить. Начинайте с простого и следите за путём данных, хранением персональных данных и планом на случай сбоя.
Практика
Готовлю вашу страницу…
Тест
Вопрос 1 из 6
Карточки
Эти карточки попадут в повторение, когда вы завершите урок.
С чего начинать выбор стека?
Ответ
С главного действия посетителя и пути данных до владельца. Для каждого шага пути выбирают самый простой подходящий инструмент, а то, что не нужно, вычёркивают.
Из каких блоков состоит серверная часть?
Ответ
Страницы (статика или динамика), язык и приложение, API, вход, приём заявок и уведомления, хранение данных, хостинг и сервер. Некоторые блоки могут быть «не нужны», и это нормально.
Где хранить персональные данные граждан РФ?
Ответ
Первичную запись и хранение держат в базе на территории России (152-ФЗ). Копии за рубежом нужно описать в политике и согласовать с юристом.
Как относиться к рискам стека?
Ответ
Для каждого важного блока заранее назвать, что будет при отказе, и план: резервная копия в другом месте, запасной канал уведомления, ручной обход, запасной провайдер.
Почему «скучный» стек часто лучше?
Ответ
Проверенные инструменты легче поддерживать, к ним проще найти людей и ответы на вопросы. Новое берут, когда оно решает задачу, которую скучное не решает.
Источники
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных» только ссылка, по-русски
- Yandex Cloud: документация только ссылка, по-русски
- 1С-Битрикс: документация для разработчиков только ссылка, по-русски
- Stack Overflow Developer Survey 2025 только ссылка, по-английски
Дальше
Теперь вы знаете: выбор стека под проект.