Как мы продолжили развитие сложной edtech-платформы без документации
Портал профессионального образования
Введение
Клиент обратился к нам в момент, когда образовательная платформа оказалась на паузе: разработка прервалась, прежняя команда вышла из проекта, не передав техническую документацию. Это ставило под угрозу запуск новых учебных потоков, вызвало простои и потенциальные убытки. При этом система уже использовалась, и было важно как можно быстрее вернуть управляемость проектом, чтобы избежать срывов и не откладывать развитие.
Мы помогли заказчику оперативно восстановить контроль над системой, наладить выпуск новых версий и обеспечить техническую устойчивость проекта, не начиная всё «с нуля».
Описание системы
Проект представляет собой масштабную edtech-платформу с широким функционалом:
- управление курсами, видеоуроками и лекциями;
- онлайн-экзамены и тестирования;
- личные кабинеты студентов и преподавателей;
- управление учебными группами, расписанием и ролевыми правами;
- аналитика успеваемости и активности.
Архитектура построена по микросервисной модели:
- 17 микросервисов на Laravel, взаимодействующих через REST API;
- клиентская часть — Nuxt.js с SSR для высокой скорости и SEO-дружественности;
- под каждый тип пользователя — кастомизированный интерфейс;
- нагрузка до 600 RPS в пиковые часы;
- 20 000+ активных пользователей;
- интеграции с внешними сервисами видео и авторизации.
Ключевая особенность: вместо стандартного Eloquent ORM использован кастомный Data Mapper, написанный вручную. Это решение отличалось от привычных подходов и не сопровождалось никакой документацией или комментариями в коде.
Проблема: Полное отсутствие документации
Что было
Система работала, но была непрозрачна: десятки микросервисов, отсутствие схем и описаний, ноль документации. В архитектуре использовались нестандартные решения, а получить консультации от предыдущих разработчиков было невозможно.
Что сделали
- Развернули проект в тестовой среде и провели аудит всех микросервисов;
- Составили карту внутренних взаимодействий и API-вызовов;
- Собрали внутреннюю документацию по логике работы ключевых сервисов;
- Согласовали техническое описание с QA и DevOps-командами клиента;
- Оценили узкие места и потенциальные риски в архитектуре.
Результат: уже в первые два дня команда начала вносить простые изменения в приложение. С каждым новым днём бралось всё больше задач повышенной сложности. В итоге мы сформировали целостное понимание архитектуры системы и научились соотносить её элементы с бизнес-требованиями, что позволило уверенно решать задачи бизнеса.
Проблема: Работа с нестандартным Data Mapper
Что было
Проект не использовал привычный Eloquent. В основе — индивидуально разработанный Data Mapper, не основанный на общих библиотеках (Doctrine, Laravel DataMapper и др.). Кодовая база была сложной, без тестов и документации.
Что сделали
Менять реализацию ORM было бы слишком рискованно и затратно. Вместо этого команда сосредоточилась на изучении её работы путём практических экспериментов и поэтапного анализа:
- разобрали реализацию Data Mapper вручную, через тестовые сценарии и попытки реконструкции логики;
- создали справочные материалы для внутренних разработчиков;
- обучили команду работе с Data Mapper через примеры, внутренние гайды и ревью;
- сформировали набор рабочих паттернов, чтобы унифицировать подход к разработке в рамках существующего решения.
Результат: клиент получил стабильную основу для расширения функционала без необходимости переработки ORM. Команда разработки научилась безопасно работать с существующей архитектурой, что позволило избегать технических рисков и уверенно внедрять новые сценарии.
Результаты
Заключение
Если вы сталкиваетесь с ситуацией, где проект унаследован в непрозрачном виде, а сроки не позволяют всё переписывать — этот кейс показывает, что задачу можно решить без остановки бизнеса. Мы не создавали иллюзию полного перезапуска: вместо этого разобрались в существующей архитектуре, обучили команду и вернули стабильность.
Такие результаты не случайны — они возможны только при системной инженерной подготовке и практическом опыте. Способность работать без документации, понимать чужой код, адаптироваться к нестандартным решениям и быстро внедряться в существующие процессы — это то, что отличает Webdelo. Наша команда умеет брать на себя ответственность в критические моменты и доводить проекты до результата, опираясь не на абстрактные обещания, а на технические компетенции и выстроенные методики работы.