Подготовил старую CRM к сопровождению и развитию без переписывания с нуля
Самописная CRM крупной компании поддерживала ключевые финансовые процессы и отчётность. Документации не было, порядок восстановления оставался неизвестным, а серьёзный сбой мог остановить часть бизнеса. Компания не хотела значительно вкладываться в замену CRM. Я самостоятельно разобрал систему на локальном стенде, контейнеризировал её, подготовил документацию и инструкции на случай сбоев. Затем вместе с DevOps компании мягко заменил рабочую версию.
- Моя роль
- Самостоятельно изучил и контейнеризировал CRM, подготовил документацию и инструкции по восстановлению. Вместе с DevOps заменил рабочую версию.
- Система
- Самописная CRM для ключевых финансовых процессов и отчётности компании
- Статус
- Компания использует обновлённую CRM
Недокументированная CRM обеспечивала финансовые процессы и отчётность. При серьёзном сбое часть бизнеса могла остановиться, пока IT-команда разбиралась бы в незнакомой системе. Значительные вложения в её замену компания не рассматривала.
Поднял резервную копию CRM на локальном стенде, изучил зависимости, контейнеризировал систему и подготовил документацию по сопровождению и восстановлению. Переключение на обновлённую версию выполнил вместе с DevOps.
Компания сохранила CRM и перешла на обновлённую версию. У IT-команды появились описание системы, порядок действий при сбоях и подготовленная основа для доработок.
Финансовые процессы на недокументированной CRM
В крупной компании самописная CRM обеспечивала ключевые финансовые процессы и отчётность. Её разработали более пяти лет назад, а найти первоначального разработчика не удалось. Система работала без контейнеров, имела множество зависимостей и не была задокументирована. Как восстановить её после серьёзного сбоя, IT-команда не знала.
Проблема заключалась не только в сложности доработок. Авария могла остановить часть бизнеса на несколько дней: восстанавливать незнакомую систему пришлось бы экстренно, одновременно выясняя её устройство. Это был сценарий риска, а не произошедший простой.
Компания не хотела серьёзно вкладываться в новую CRM или замену существующей. Поэтому задача состояла в том, чтобы сохранить систему, разобраться в её устройстве и подготовить её к сопровождению, восстановлению и дальнейшему развитию.
Исследование на копии и переход на обновлённую версию
Я сумел запустить резервную копию CRM на локальном стенде. На ней изучал устройство системы и необходимые для работы зависимости, не вмешиваясь в рабочую версию, которой продолжали пользоваться сотрудники.
Исследование, контейнеризацию и подготовку документации я выполнил самостоятельно. Описал проект, составил регламент обслуживания и инструкции на случай сбоев, подготовил основу для дальнейших доработок. Так знания о системе перестали зависеть от недоступного первоначального разработчика.
Переписывать CRM с нуля не потребовалось. При полной замене пришлось бы заново воспроизводить функции, на которые опирались сотрудники. В этом проекте нужного результата удалось достичь модернизацией существующей системы, без разработки её замены.
Отдельным ответственным этапом было переключение рабочей версии: от доступности CRM зависели повседневные процессы компании. Этот этап я выполнил совместно с DevOps компании, отвечавшими за инфраструктуру. Мы мягко заменили рабочую версию, и компания перешла на обновлённую CRM.
Основа для сопровождения и дальнейших изменений
CRM используется в обновлённой версии. Её устройство и зависимости описаны, подготовлена среда для дальнейшей работы и понятный порядок восстановления при сбоях. Компания сохранила привычный инструмент, не создавая новую систему с нуля.
Документация и регламент остаются у компании независимо от того, кто будет сопровождать CRM дальше. Для доработок теперь есть техническая основа, а при аварии специалистам не придётся начинать с исследования совершенно неизвестной системы.
Перенос менеджера доменов с Java на Python
В другом проекте я переписал внутренний инструмент рекламного агентства, управляющего сотнями доменов: перенёс программу управления доменами с Java на Python. Здесь требовалось именно переписывание, а основным источником требований служила прежняя программа. Новая версия должна была сохранить функции, на которые рассчитывали её пользователи.
Работа со старыми корпоративными инструментами не всегда требует одного и того же решения. В одном случае достаточно изучить систему, упорядочить её окружение и сопровождение. В другом разумнее перенести инструмент на современный стек, сохранив его назначение и нужные бизнесу возможности.
Когда стоит заняться существующей системой
Повод для такой работы появляется, когда от программы зависят сотрудники и финансовые процессы, но развитие остановилось. Изменения откладывают из-за риска нарушить текущую работу, а понимание устройства системы со временем теряется.
Начинать с полной замены не обязательно. Сначала стоит выяснить, как устроена программа, от чего зависит её работа и что потребуется для сопровождения и восстановления. После этого проще планировать доработки и принимать обоснованное решение о переписывании, если оно действительно необходимо.
Такая подготовка нужна не только старым системам, но и приложениям, которые предстоит использовать всей компании. Например, инструменту, созданному сотрудником с помощью нейросети. Этому посвящена страница о подготовке AI-прототипа к рабочей эксплуатации. Выбор между развитием существующей системы и её заменой подробнее разобран в статье о подходах к модернизации старых систем.
- Самописная CRM или учётная система нужна для повседневной работы, но её устройство и порядок сопровождения недостаточно понятны IT-команде.
- Развитие системы откладывают из-за риска нарушить процессы, которыми ежедневно пользуются сотрудники.
- Приложение, созданное сотрудником с помощью нейросети, нужно подготовить к использованию во всей компании и дальнейшей поддержке.
- Внутренний инструмент требуется перенести на современный стек, сохранив необходимые сотрудникам функции.
Нужно решить похожую задачу?
Пришлите описание ситуации, ТЗ и другие материалы, если они есть. Если нет, достаточно нескольких предложений. Предложу подход к задаче и объясню, с чего стоит начать.
Обсудить вашу задачу