блог
#Технические материалыапрель 202611 минут чтения

Передача сайта команде заказчика: список артефактов и что проверить на приёмке

Что входит в передачу продукта внутренней команде: код, доступы, документация, схема данных, инфраструктура, договорённости о поддержке. И как проверить комплектность до подписания акта.
в чём польза
Готовый список того, что вы должны получить при передаче продукта, и порядок проверки: по каждому пункту понятно, как убедиться, что он работает, а не просто передан.

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

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

«Принято» — это четыре факта, а не подпись

01

Собралось

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

Развернулось

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

Поднялось из бэкапа

Вчерашняя копия развёрнута в отдельный контур, вход работает, данные на месте, время засечено. Непроверенная копия — просто файл.
04

Откатилось

Безобидная правка выпущена в бой и возвращена штатной процедурой силами вашего сотрудника. Если откат — это «позвоните, мы зайдём на сервер», отката нет.

Среды, переменные окружения и секреты

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

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

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

Сценарий приёмки: восемь шагов, которые вы проходите сами

01

1. Чистая машина

Ваш разработчик разворачивает проект локально по инструкции. Критерий: приложение открылось, вопросов ноль. Больше рабочего дня — инструкция написана для своих.
02

2. Сборка на вашей стороне

Боевая сборка проходит на вашем сервере из чистого клона. Критерий: два зелёных прогона, версии среды и зависимостей зафиксированы, а не «последние».
03

3. Развёртывание на ваш контур

Вы разворачиваете собранное на свой тестовый контур по описанной процедуре. Критерий: открывается приложение, а не страница ошибки, и шаги выполнили вы.
04

4. Миграции с нуля и на копии

Схема накатывается на пустую базу, затем на копию боевой. Критерий: обе проходят, время на копии известно, обратный шаг для последнего выпуска есть.
05

5. Восстановление из резервной копии

Отдельный контур поднимается из вчерашней копии. Критерий: вошли под реальной ролью, время записано, названа глубина потери — за какой период данные не вернутся.
06

6. Выпуск и откат

Правка выпускается в бой и возвращается штатной процедурой. Критерий: откат занял минуты, выполнил его ваш сотрудник. Для магазинов приложений отката релиза нет: там проверяют выпуск на тестовом контуре и отзыв сборки.
07

7. Отказ внешней системы

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

8. Вход во все консоли

Проход по списку доступов своими учётными данными: хостинг, домен, почта, платёжный провайдер, магазины приложений, мониторинг. Критерий: вошли везде и смогли изменить права другого сотрудника.
Карточка EdPro в App Store: в поле «Разработчик» стоит EdPro, а не студия. Учётная запись в сторе и сертификаты подписи принадлежат заказчику. Если там стоит подрядчик, выпустить обновление или отозвать версию без него не выйдет.

Приложение EdPro мы делали для Международной академии дополнительного профессионального образования: Топ-3 сегмента, более 10 000 выпускников, аудитория продуктов свыше 150 000 человек. Платформа уже работала в вебе, и приложение должно было не «упаковать сайт», а встать рядом: расписание, оценки, материалы, связь с преподавателем, работа при нестабильном интернете.

Для приёмки важна серверная часть. Приложение интегрировано с существующей платформой через защищённые API, авторизация построена на ролях — студент, преподаватель, администратор, — управление ролями осталось централизованным. Кроссплатформенный Flutter дал единый код для iOS и Android: одна кодовая база вместо двух. Оценку дал технический руководитель академии: проект получился легко поддерживаемым, команда без проблем взяла его к себе и продолжает развивать. Другой оценки передачи не бывает.

Миграции базы и откат выпуска

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

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

Дальше два числа, которые называет бизнес, а не разработчик: за сколько вы восстанавливаетесь после аварии и за какой период готовы потерять данные. Из них выводится расписание копий; без них у вас не план восстановления, а надежда. Рядом — дата последней успешной проверки: не «копии делаются», а «такого-то числа копию подняли и вошли»; обновляют её раз в квартал.

Журналы и мониторинг: как узнать о поломке раньше клиента

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

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

Регламент выпуска обновлений

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

У выпуска есть окно и стоп-даты: день старта потока обучения, распродажа, закрытие периода в учётной системе. Эти дни известны заранее, их надо собрать с бизнеса и записать. После каждого выпуска идёт дымовой проход — пять-семь сценариев руками за десять минут: вход, ключевая операция, оплата или заявка, обмен с внешней системой, уведомление. Список фиксированный: «посмотрите, всё ли хорошо» каждый смотрит по-своему.

И правило отката, названное заранее: признак, по которому откатывают немедленно и разбираются потом. Это способ снять с дежурного решение в три часа ночи — пока правило не записано, он час выясняет, достаточно ли всё плохо, чтобы кого-то будить.

Передача знаний живым людям, а не в архив

Часть продукта существует только как договорённость между людьми и в репозиторий не попадает. Личный кабинет агента для медицинской группы EMC — пример. В модуле сотрудника клиники заявки распределяются автоматически, с учётом загруженности специалиста и области его экспертизы; время от поступления запроса до медицинского заключения сократилось на 60%.

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

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

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

Вопросы подрядчику до начала работ

01

На кого оформляются учётные записи с первого дня

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

Когда мы получим доступ в репозиторий

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

Выдаётся ли нам тестовый контур на весь срок проекта

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

Как устроены миграции и где нет обратного шага

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

Что входит в мониторинг и кто его настраивает

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

Сколько времени наших людей нужно на передачу

Здоровый ответ — часы конкретных ролей: разработчик, администратор, редактор. «Мы пришлём документацию» означает, что передача не запланирована.
07

В каком этапе плана стоит прогон на чистой машине

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

Первые тридцать дней своими силами

01

Неделя первая: одна правка в бой

Ваш сотрудник проходит весь путь сам: ветка, проверка, сборка, выпуск, дымовой проход. Подрядчик рядом и молчит, пока не спросят. Это и есть момент, в который передача состоялась.
02

Неделя вторая: учебная тревога

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

Неделя третья: доработка целиком ваша

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

Неделя четвёртая: разбор журналов за месяц

Что шумит, какие оповещения ложные, какие пороги сдвинуть. Мониторинг, который научились игнорировать, хуже отсутствующего.
05

Весь месяц: считайте обращения

Число вопросов к подрядчику по неделям — честная мера качества передачи. Кривая, не снижающаяся к четвёртой неделе, означает нехватку документации, и это ещё можно починить.

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

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

с чего начать

Обсудим проект: что нужно сделать, за какой срок и сколько это стоит

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

читайте далее
подписка
Фиксированный пакет
трудочасов ежемесячно
Подробнее
TM
Часы на любые задачи, с оплатой
исходя из фактических трудозатрат
Подробнее
hello@mrktng.bz
Москва
Большая Новодмитровская, 23
+7(495)090-77-28На связи с 10.00 до 19.00
TG Channel
Пишем о бизнесе,
технологиях и будущем
Подписаться

Кратко о компании

MRKTNG — студия разработки и автоматизации в Москве, с 2015 года. Работаем с корпоративным и юридическим сегментами, eCommerce и образованием. №1 в Рейтинге Рунета 2026 в сегменте «Право», №2 в Рейтинге Рунета 2026 в сегменте приложений для образования. Пять премий Pravo.ru Best Law Firm Website с 2022 года.