«Это же просто блог, сделаем за спринт» — рано или поздно эту фразу произносят в инженерном чате любой SaaS-компании, и в ней даже есть доля правды. Таблица постов, пара маршрутов, поле для Markdown — спринт. Эта оценка не учитывает всё, чего нет в версии за спринт, и всё, во что обойдутся годы после него. Я сам собрал такой стек — Kookee существует потому, что, по-моему, большинству команд делать этого не стоит, — так что вот честный расчёт.
Во что разрастается «просто блог»
В версии за спринт нет нормального редактора, поэтому блог начинает разрастаться сразу:
Редактор. Маркетинг не будет писать в Markdown-файлах через pull request. Настоящий визуальный редактор — картинки, встраивания, блоки кода, отмена, которая работает, — это недели работы, даже если обернуть готовый open-source-фреймворк, и внимания он требует всегда.
Работа с медиа. Загрузка, хранение, ресайз картинок, путь через CDN, ограничения по размеру. Такой модуль вырастает в каждой системе контента, вырастет и в вашей.
Процесс публикации. Черновики, отложенная публикация, ссылки на предпросмотр, история версий, о которой кто-нибудь взмолится, как только редактор впервые затрёт час чужой работы.
Поля вокруг контента. Slug и его уникальность, теги, категории, SEO-метаданные, картинки для Open Graph, даты.
Потом появляется второй раздел. Журналу изменений нужны типы и версии, центру помощи — категории и поиск, обратной связи — голосование, статусы и комментарии. Каждый из них «маленький», каждый заново реализует написание, хранение и доставку со своими особенностями, и каждый становится ещё одним внутренним продуктом, который поддерживаете только вы.
Даже по скромной оценке блог, журнал изменений и центр помощи с пригодной для работы админкой занимают месяцы инженерного времени, а не спринты. При обычной полной стоимости инженеров это серьёзные деньги ещё до того, как хоть один пользователь увидит страницу. И это дешёвая часть.
Статья расходов, о которой все забывают: «навсегда»
Оценка разработки заканчивается на запуске. Система — нет:
Безопасность и зависимости. Ваша система контента теперь часть поверхности атаки — авторизация, загрузки, публичный API, — и закрывать уязвимости в ней вам, по своему графику и всегда. Обновления зависимостей, миграции фреймворка, мажорная версия библиотеки редактора с ломающими изменениями — это ежегодный налог.
Инфраструктура. Хостинг, база данных, объектное хранилище, CDN, мониторинг, бэкапы. По отдельности мелочи, вместе — постоянный счёт и постоянные дежурства.
Гонка за функциями. Поиск, который находит нужное (сегодня это семантический поиск и эмбеддинги), переводы, когда вы выходите на другие рынки, ответы ИИ, когда они появляются в центрах помощи конкурентов. Каждый пункт — проект в системе, за которую никто не хочет отвечать.
Поддержка собственного стека для контента вполне может отнимать недели инженерного времени в год — незаметно, по частям, в виде «быстрых правок», которые никогда не бывают быстрыми. Главная цена — упущенные возможности: каждый час, потраченный там, не потрачен на продукт, за который платят клиенты. Инфраструктура для контента — типовая вещь, которую можно купить, а ваш продукт — нет. Тратить дефицитное инженерное время на типовую вещь — вот настоящая ошибка, сколько бы ни стоила подписка.
Когда всё-таки стоит делать самим
Статьи про «сделать или купить», которые ни разу не признают, что своя разработка бывает оправданна, — это реклама. Есть настоящие причины делать самим:
Контент — это ваш продукт. Если вы издательская платформа, компания, которая делает документацию, или работа с контентом — ваше главное отличие, делайте сами. Универсальный инструмент будет вам мешать.
Жёсткие ограничения. Регулируемые отрасли, где контент обязан жить в вашей инфраструктуре, развёртывания, изолированные от интернета, требования к местонахождению данных, которые вендор не выполнит.
Совсем необычные модели данных. Если ваш контент действительно не похож на записи с полями. Но прежде чем так решить, проверьте, не покрывают ли его пользовательские типы записей на платформе.
Что не выдерживает проверки: «сделаем ровно то, что нужно, и ничего лишнего». Список выше — не раздутый набор функций от вендора. К нему приходит каждая система контента, потому что редакторы, маркетологи и читатели снова и снова просят одно и то же.
Что вы должны получить, если покупаете
Если покупаете, требуйте от вендора того, что оправдывает отказ от своей разработки:
Ваш домен и ваш фронтенд. Контент приходит в JSON через API и SDK, а рендерит его ваше приложение в вашей дизайн-системе. Тогда SEO работает на вас, и ничего не выглядит прикрученным сбоку. Если вендор настаивает, что будет хостить ваши страницы сам, вы купили конструктор сайтов, а не инфраструктуру.
Никакой привязки к вендору. Всё можно забрать в задокументированном JSON по вашему API-ключу. Именно открытая дверь на выход делает вход безопасным.
Всё в одной системе. Блог, журнал изменений, центр помощи, обратная связь, страницы. Польза растёт, когда доска обратной связи ссылается на запись в журнале изменений, а центр помощи питает ответы ИИ, и всё это в одной панели и одном API вместо четырёх сшитых вместе вендоров. Их подписки вместе обычно и так стоят дороже одной платформы.
Бесплатный старт. Интеграцию можно проверить до первого платежа.
Kookee построен именно под эти требования: бэкенд контента с модулями, которые действительно нужны SaaS-продуктам, типизированный SDK и React-хуки для слоя рендеринга, готовый портал, чтобы запуститься в первый же день, и доставка через API. Ваш код остаётся только в тонкой части, которая всегда была вашей, — в рендеринге.
Как принять решение
Контент — ваше главное отличие или действует жёсткое ограничение? Если да, делайте сами, осознанно и с выделенными на это людьми.
Если нет, сделайте прототип на готовой платформе: выведите список постов блога и одну статью справки через её SDK на своём домене. Заложите на это день.
Честно посчитайте стоимость своей разработки: первые месяцы плюс ежегодная поддержка по полной стоимости инженеров — и сравните с подпиской.
Примите решение один раз, письменно, и не возвращайтесь к спору каждый раз, когда кто-то говорит «это же просто блог».
Блог за спринт — не выдумка, к пятнице он у вас будет. А цену готового решения сравнивают с пятью годами после этой пятницы.