Куб из сфер — знак студии

12 лет в заказной разработке

Релизы, которые перестают быть событием

Продукт написан, а чтобы изменение доехало до клиентов, нужен вечер, человек и немного везения. Две недели — и нужен только пуш: так уже работает этот сайт и всё остальное, что мы ведём.

Смотреть работы
Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//Выкатка и поддержка//
Узнаёте?

Этого никто не планирует, и к этому приходят все

  • «Выкатывать умеет только один человек, и он в отпуске.»

    Процесс релиза живёт в голове, а не в файле. Работает ровно до того дня, когда голова недоступна.

  • «По пятницам мы не релизим.»

    Разумное правило для небезопасного процесса и странное — навсегда. На самом деле оно говорит: никто не знает, что будет после кнопки.

  • «Ночью что-то упало, узнали от клиента.»

    Никто не смотрел. Мониторинг — самая дешёвая часть этого списка и та, которую откладывают до первого происшествия.

  • «Сервер настраивал два года назад человек, который уволился.»

    Он работает, трогать боятся, а воссоздать нельзя. Это не инфраструктура, а фамильная ценность.

Настройка

Выкатка по пушу за две недели, на ваших аккаунтах

от 100 000 ₽
Фиксированная за объём ниже: одно приложение, одно окружение. Цена намеренно низкая — это дверь в совместную работу, а не самое дорогое, что мы продаём.
Две недели
От выданных доступов до релиза, который случается, потому что кто-то сделал пуш.

Что вы получаете

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

Что не входит

  • Kubernetes, если он вам не нужен по делу, — большинству продуктов не нужен, и мы скажем это прямо
  • Переезд между облаками: смежная работа, отдельный счёт
  • Круглосуточное дежурство. Оповещения приходят вам, мы отвечаем в рабочие часы, если не куплена поддержка
  • Переписывание приложения ради возможности его выкатывать. Если нужно — сначала честно оценим
  • Аудит безопасности и сертификация — не наш профиль, и вам нужен тот, чей это профиль
Каждый пуш
собирает, проверяет и выкатывает этот самый сайт
3
наших собственных продукта живут на этой же схеме
1 команда
на откат, проверенный до передачи
Что настраиваем

Что успевает за две недели, а что ждёт по причине

Почти любому небольшому продукту нужны одни и те же семь вещей, а есть у него три. Ниже обычное разделение; настоящее рождается за час разговора о том, как вы выкатываете сегодня.

Какие сценарии в какой этап работы попадают
СценарийПервые две неделиПозжеНе мы
Сборка и выкатка на каждый пушРади этого всё и затевается. Остальное делается проще, когда это уже есть.Покрыто · Первые две неделиНе покрыто · ПозжеНе покрыто · Не мы
Разделённые тестовое и боевое окруженияПроверка на бою, потому что больше негде, — корень большинства пятничных происшествий.Покрыто · Первые две неделиНе покрыто · ПозжеНе покрыто · Не мы
Откат, проверенный при васНепроверенный откат — это план, а не возможность.Покрыто · Первые две неделиНе покрыто · ПозжеНе покрыто · Не мы
Мониторинг и оповещения человекуДоступность, ошибки и два-три числа, которые значат, что продукт действительно работает.Покрыто · Первые две неделиНе покрыто · ПозжеНе покрыто · Не мы
Бэкапы с одним выполненным восстановлениемПоставка — это восстановление. Сам бэкап без него — надежда по расписанию.Покрыто · Первые две неделиНе покрыто · ПозжеНе покрыто · Не мы
Выкатка без простояНужна, когда тридцать секунд паузы начинают стоить денег. До этого — сложность, за которую платят каждый день.Не покрыто · Первые две неделиПокрыто · ПозжеНе покрыто · Не мы
Автомасштабирование, кластеры, несколько регионовНастоящие потребности настоящего масштаба и дорогой костюм до него.Не покрыто · Первые две неделиПокрыто · ПозжеНе покрыто · Не мы
Пентесты и сертификацияДругая профессия. С удовольствием починим то, что такой аудит найдёт.Не покрыто · Первые две неделиНе покрыто · ПозжеПокрыто · Не мы
входитне на этом этапе

Правая колонка — самая честная часть таблицы. В большинстве предложений по этой теме обещают всё, а делают первые четыре строки.

Самая дешёвая инфраструктура, которая правда работает

Один-два сервера, контейнеры, автоматическая выкатка, мониторинг и бэкапы закрывают потребности подавляющего большинства продуктов с выручкой до сотен миллионов. Всё, что сложнее, покупается не масштабом, а тревогой. Мы честно скажем, когда вам действительно понадобится больше, — и обычно этот день дальше, чем кажется.

Почему тесты и выкатка продаются вместе

Автоматическая выкатка без проверок — это ускорение доставки ошибок до клиента. Проверки без автоматической выкатки — это зелёный билд, который никто не видит. Поэтому в пайплайн сразу закладывается место под сьют, даже если тестов у вас пока нет.

Автотесты как отдельная услуга

Поддержка, которая не превращается в зависимость

Абонентская поддержка честна тогда, когда клиент в любой момент может уйти без потерь: доступы у вас, инструкция написана по вашей системе, стек обычный. Мы специально делаем передачу такой, чтобы вы могли нанять своего человека — и остаёмся, только пока это выгодно вам.

И чего мы не делаем

  • Не ставим Kubernetes, которым не будем управлять и который вам не нужен
  • Не заводим инфраструктуру на свои аккаунты
  • Не берём дежурство 24/7 без отдельного договора: обещать это в довесок нечестно
  • Не занимаемся аудитом безопасности и сертификацией — это другая профессия
Как идут две недели

К концу каждой недели что-то уже работает само

Ничего не откладывается «на потом»: каждый шаг заканчивается тем, что можно проверить.

  1. Дни 1–2

    Смотрим, как вы выкатываете сейчас

    Разбираем текущий процесс со всеми ручными шагами, доступами и файлами на чьём-то ноутбуке. Записываем, что должно перестать быть ручным.

    Вы видитеКарта текущего процесса и список того, что автоматизируем.

  2. Дни 3–6

    Собираем пайплайн

    Сборка в контейнере, проверки, выкатка на тестовое окружение. Всё в вашем репозитории и на ваших аккаунтах.

    Вы видитеПуш в ветку приводит к обновлению тестового стенда без участия человека.

  3. Дни 7–10

    Боевое окружение и откат

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

    Вы видитеПроведённая выкатка и проведённый откат, оба у вас на глазах.

  4. Дни 11–14

    Мониторинг, бэкапы, передача

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

    Вы видитеВосстановление из бэкапа, выполненное при вас, и инструкция на руках.

Работает с тем, что у вас уже есть
  • Docker
  • GitHub Actions
  • GitLab CI
  • Coolify
  • PostgreSQL
  • Telegram-оповещения
  • S3
Что остаётся у вас

Три вещи, которые остаются после двух недель

Настоящие снимки с нашей же инфраструктуры — этот сайт живёт ровно на такой схеме.

Файл воркфлоу этого сайта: что запускается на каждый пуш в main

Пайплайн, который делает всю работу

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

.github/workflows/ci.yml из репозитория этого сайта

Соответствие развёрнутой версии и коммита

Доказательство, что в проде именно этот коммит

Версия на сервере совпадает с версией в репозитории — это проверяемо, а не обещано на словах.

Боевой контейнер swiftandscale.com

Отчёт о прогоне тестов в пайплайне

Проверки, которые стоят между пушем и клиентом

В пайплайн встроен сьют: красный прогон не доезжает до боя. Даже если тестов пока три, место под них уже есть.

Прогон сьюта swiftandscale.com

Кому это

Кому нужно сейчас, а кому рано

Берите, если

  • Продукт уже написан и им пользуются
  • Выкатка ручная, и умеет её один человек
  • Про поломку узнаёте от клиентов
  • Бэкапы вроде бы есть, но восстановление ни разу не проверяли
  • Планируете передать проект другой команде и хотите, чтобы это было возможно

Не берите, если

  • Продукта ещё нет: выкатывать пока нечего
  • Нужен аудит безопасности или сертификация
  • Нужно дежурство 24/7 — это отдельный договор, а не довесок
  • Хочется Kubernetes ради строчки в резюме

Если продукт ещё пишется, эта услуга приезжает вместе с разработкой и отдельно не нужна.

Что спрашивают про CI/CD и поддержку

Шесть вопросов, которые задают почти на каждом первом созвоне.

От 100 000 ₽ за две недели: одно приложение, одно боевое окружение, тестовый стенд, откат, мониторинг и бэкапы с проверенным восстановлением. Дороже становится, когда приложений несколько, окружений больше двух или инфраструктура собрана так, что сначала её нужно распутать. Это мы увидим за час разговора и скажем до счёта.

Технически — новая версия поднимается рядом со старой, проходит проверку здоровья и только потом принимает трафик. Практически — сначала стоит спросить, сколько вам стоит тридцать секунд паузы ночью. Если немного, начните с простой схемы: она надёжнее и дешевле в содержании, а выкатку без простоя добавим, когда цифры этого потребуют.

Ответ в оговорённые часы, разбор происшествий, обновления зависимостей и безопасности, мелкие правки в пределах согласованного объёма и отчёт раз в месяц: что происходило, что чинили, где узкое место. Всё, что больше, оценивается отдельно — иначе поддержка превращается в бесконечную разработку по цене поддержки.

По умолчанию никто: оповещения приходят вам, мы отвечаем в рабочие часы. Круглосуточное дежурство — отдельный договор и отдельные деньги, потому что это живые люди в ночную смену. Обещать «мы всегда на связи» без такого договора — самая распространённая ложь в этом сегменте.

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

Да, и не только в Москве: адрес у нас московский, а работа удалённая — доступ к серверу и репозиторию от географии не зависит. Встретиться можно, но для самой поддержки это ничего не меняет: всё, что мы делаем, видно в системе задач и в ежемесячном отчёте. Разница с подрядчиком «через дорогу» одна — мы отвечаем в оговорённые часы, а не когда доедем.

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

Избранные работы

Оба продукта ниже выкатываются именно так, каждый день

Не отзывы клиентов, а наши собственные продукты на той самой схеме, что описана выше, с демо, которые открываются прямо сейчас.

Двусторонний маркетплейс · Экономика авторов

Маркетплейсы, где деньги лежат посередине

Маркетплейс с двумя сторонами, платежом, удержанным между ними, и ИИ-студией, которая берёт деньги за каждую генерацию. Сложное здесь не каталог, а решение — в коде, — в какой именно момент деньги и файлы меняют владельца.

Тот же пайплайн, только между пушем и боем стоят 173 сквозных теста, а внутри продукта ходят деньги между двумя сторонами — то есть ровно тот случай, когда проверенный откат перестаёт быть красивой идеей.

4 месяца
от старта до работающего продукта
173
сквозных теста в 24 сьютах
21
модель данных под этим
Внутри живое демоЧитать разбор
Creator feed in the marketplace app, with an order button
Система для позаказного производства · Медицинское производство

Системы для производства, где каждый заказ единственный в своём роде

У позаказного производства нет каталога и нет кнопки «повторить». Каждое изделие делается для одного человека по меркам, которые компьютер снимает со скана, и система обязана удержать эту нить от первого приёма через изготовление, доставку и переделку через полтора года.

Три репозитория, каждый гоняет свой сьют на каждый пуш — 2053 проверки между ними — и только потом выкатывается, на раннере, который держим мы сами. Система управляет производственным цехом, поэтому неудачный релиз здесь не косметическая проблема, а смена, которая не может записать, что сделала.

8 месяцев
и продолжается — самая большая система, которую мы ведём
13
семейств потоков, от приёма до переделки
2053
автопроверки в трёх репозиториях
Внутри живое демоЧитать разбор
Order board in the operations platform, with production stages

Что почитать про релизы и поддержку

Все статьи
Системы для производства

Что коробка не тянет на производстве под заказ: четыре места, где всё упирается

Коробочная система дешевле любой разработки — ровно до момента, пока ваш техпроцесс совпадает с представлением её авторов о производстве. Разбираем четыре места, где это совпадение обычно заканчивается.

3 мин чтения
Системы для производства

Прослеживаемость продукции: почему её нельзя добавить потом

Прослеживаемость выглядит как отчёт, который можно построить когда понадобится. На деле это свойство самой записи об изделии, и появляется оно ровно в момент её создания — или не появляется вовсе.

4 мин чтения

Поговорим про то, что вам нужно: выкатка и поддержка

Расскажите, что нужно сделать

Ответим в течение одного рабочего дня — диапазоном цены и допущениями, из которых он посчитан, а не приглашением на созвон.