Финансовая компания · Legacy-миграция · 2026
Zoho Migration — финансовый калькулятор за 8 дней вместо 4-6 месяцев
Как заменили дорогой Zoho Creator на собственное решение на Cloudflare Workers + Postgres с нативной PDF-генерацией и безлимитным масштабированием.
// Контекст
Заказчик — финансовая компания, оказывающая услуги корпоративным клиентам. Команда 25 человек, 30+ корпоративных клиентов, сложные мультивалютные расчёты.
Сердце операционки — финансовый калькулятор: вход (условия, ставки, графики платежей), выход — структурированные PDF-отчёты для клиента. Калькулятор построен на Zoho Creator 4 года назад — быстро, no-code, работало.
// Что болело
- Дорого: per-user модель — каждый пользователь команды из 25+ человек означал отдельную лицензию, плюс внешний PDF-сервис (~50€/міс) после исчерпания лимита 1000 PDF/міс.
- Медленно: при 1000+ расчётов в месяц UI «вечно крутился», экспорт PDF занимал 8-15 секунд.
- Масштабирование non-trivial: чтобы добавить 5 новых юзеров — дополнительная лицензия + согласование. Платформа всегда становилась bottleneck.
- Vendor lock-in: Deluge-скрипты не переносились. Данные можно экспортировать, логику — нет.
// Почему не «обычная команда разработчиков»
Заказчик провёл тендер. Две команды оценили проект в 4-6 месяцев и ~25-30K€. Пока тендер шёл, я предложил альтернативный подход: один инженер + Claude Code.
Логика: миграция — задача хорошо документированная (legacy-скрипты, типы данных, ожидаемое поведение). Это идеальный кейс для AI-кодинга, где большая часть — переписывание формул и UI с известными входными/выходными данными.
Результат — в разы быстрее и втрое дешевле тендерных оценок.
// Solution — что сделали
1. Reverse engineering legacy
Экспортировали все Zoho Deluge-скрипты (это их proprietary scripting language). Интервью с финансовым директором — час по каждому из 8 типов расчётов. Сформировали regression-тесты: 240 сценариев с ожидаемыми выходами.
2. Backend на Cloudflare Workers
Hono.js framework, TypeScript. Каждая формула — отдельная функция с типизированным контрактом. Postgres на Supabase для хранения договоров и истории расчётов. Row-Level Security обеспечивает мультитенантность.
3. Нативная PDF-генерация
Cloudflare Browser Rendering API — рендерит PDF из HTML/CSS в Worker. Бесплатно до 100K вызовов/міс. Скорость — <2 секунды на PDF вместо 8-15 в Zoho.
4. Frontend на Astro
Страницы со статическим SSR (быстро, SEO-friendly), reactive forms через React islands. Дизайн сделали с учётом frequent users — keyboard shortcuts, autosave, history.
5. Auth & SSO
Clerk для управления пользователями, SSO интеграция с корпоративным Microsoft 365. Пользователь заходит через корпоративный аккаунт — без дополнительных паролей.
6. Stack
| Layer | Инструменты |
|---|---|
| Backend | Cloudflare Workers + Hono + TypeScript |
| Database | Supabase (Postgres) + Row-Level Security |
| Frontend | Astro 6 + React islands + Tailwind v4 |
| PDF generation | Cloudflare Browser Rendering API (нативно) |
| Auth | Clerk + Microsoft 365 SSO |
| AI assist | Claude Code (Sonnet 4.6) для всего кодинга |
// Timeline
Экспорт Zoho Deluge-скриптов, интервью с финансовым директором, mapping формул, набор regression-тестов (240 сценариев)
Cloudflare Worker с основными API, схема Postgres, подключение Supabase, первые 50 тестов проходят
Нативная PDF-генерация, реализация всех формул финансового калькулятора, 240/240 тестов зелёного цвета
Astro frontend с реактивными формами, Clerk auth, SSO с Microsoft 365, production deploy на Cloudflare
// Result — цифры
| Метрика | Zoho (до) | Cloudflare (после) |
|---|---|---|
| Месячный cost | per-user лицензии + PDF-сервис | ~30 € инфраструктуры |
| PDF generation | 8-15 сек | <2 сек |
| Масштабирование | Per-user pricing | Безлимитное |
| Время миграции | 4-6 міс (оценка) | 8 рабочих дней |
| Regression-тесты | 0 | 240/240 ✓ |
// Что пошло не так — lessons learned
Legacy edge cases. 18 из 240 тестов сначала «краснели» — формулы в Zoho имели недокументированное поведение при крайних значениях (нулевые ставки, отрицательные штрафы). Reverse engineering занял на 1 день дольше, чем планировал.
SSO настройка с Microsoft 365. Сам Clerk простой, но корпоративный AD имеет свои квирки. Потратили полдня на conditional access policy.
Postgres connection pooling. Cloudflare Workers работает в edge, а Supabase в us-east. Первые тесты показали +200ms latency. Перешли на Hyperdrive (Cloudflare service для caching connections) — latency упала до 30ms.
// FAQ
Почему заказчик хотел уйти с Zoho Creator? +
Три причины. Первая — per-user pricing: каждый новый пользователь в команде 25+ человек — это дополнительная лицензия, и модель становилась всё менее выгодной. Вторая — ограничение PDF-генерации: бесплатный лимит 1000 PDF/міс заканчивался, дальше — внешний сервис ещё ~50€/міс. Третья — медленный UI: «вечная загрузка» при работе с большими таблицами расчётов.
Почему Claude Code, а не обычная команда разработчиков? +
Команда (3 разработчика + lead) оценила миграцию в 4-6 місяців и ~25-30K€ фикс-ставкой. С Claude Code один инженер выполнил миграцию за 8 робочих днів — потому что AI генерировал и код, и тесты, и документацию параллельно. Заказчик заплатил 9K€ вместо 25K€ за ту же функциональность.
Как сохранили логику legacy-формул? +
Reverse engineering. Экспортировали все Zoho Deluge-скрипты, описали каждую формулу в интервью с финансовым директором (кто помнил edge cases). Сгенерировали набор regression-тестов — 240 сценариев с ожидаемыми выходами. Новая реализация должна была пройти все 240, прежде чем фичу приняли.
Что делать, если легаси-логика не задокументирована? +
Если нет тестов и нет документации — риск максимальный. Советую не мигрировать «в лоб», а сначала обернуть legacy в regression-тесты (через UI-automation или API), и только потом переписывать. Здесь это окупилось сполна: дни, вложенные в аудит формул, сберегли недели дебага.
Сколько стоит поддержка нового решения? +
Cloudflare Workers: ~5€/міс для базового workload. Postgres на Supabase: 25€/міс. Total infra cost — ~30€/міс для всех 25 пользователей, без per-user лицензий и без внешнего PDF-сервиса. Инфраструктура теперь стоит меньше, чем раньше стоила одна лицензия.
Автор кейса
Андрей Марьясов
AI-консультант, основатель Auspex (CRM-автоматизация) и Grow2.ai (AI-агенты + community). 25+ лет в автоматизации бизнеса: учёт → CRM → AI. Строю AI- и автоматизационную стратегию для владельцев и команд; внедрение веду через собственные бренды.
// Другие кейсы
// Вывод
Главное решение здесь было стратегическое, а не техническое: увидеть, что миграция — это хорошо документированная задача (legacy-скрипты + известные входные/выходные данные), и именно поэтому идеальный кейс для AI-кодинга. Скорость и экономию дала правильная постановка задачи — не сам инструмент.
Реализовано через Auspex — CRM-автоматизация и миграция бизнес-процессов. Стратегию я строю лично; само внедрение ведёт команда Auspex.
У вас тоже legacy, с которого пора уходить?
Начнём с разговора: стоит ли мигрировать вообще, где риски и где рычаг. Стратегию строим вместе, внедрение — через Auspex.
Личный advisory →