Евгений Зайферт: как перевести сервисы на новую архитектуру без простоя

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

Евгений Зайферт и задача без права на остановку
Переезд на новую архитектуру сравнивают с ремонтом самолёта в полёте. Пользователи продолжают работать с платформой, данные продолжают поступать, а под капотом в это время меняется то, на чём всё держится. Остановить систему на несколько часов «на техработы» в такой ситуации нельзя.
Евгений шесть лет работает в бэкенд-разработке, пишет на Python и Go и проектирует API и сервисы для веб-платформ. Он говорит, что в бэкенде его всегда привлекала именно инженерия за интерфейсом: архитектура, данные, стабильность. Эта задача проверяла все три сразу.
Разбить на этапы
Первое, что сделал Евгений, - отказался от идеи перенести всё за один раз. Он разбил задачу на этапы. Так каждый шаг становился понятным и проверяемым, а если что-то шло не так, можно было остановиться и разобраться, не затрагивая всю систему.
Договориться с командой
Второй шаг - общий план миграции, согласованный с командой. Евгений часто повторяет, что код - лишь часть работы программиста, а остальное - коммуникация и инженерные решения. В этой истории это было видно особенно ясно: чтобы переезд прошёл гладко, все участники должны были одинаково понимать, что и в каком порядке переносится.
Переносить нагрузку постепенно и смотреть на метрики
Дальше нагрузку переносили не одним переключением, а постепенно. На каждом шаге Евгений следил за метриками, которые показывают, как ведёт себя система под реальной нагрузкой. Такой подход позволяет заметить проблему, пока она затрагивает лишь небольшую часть трафика.
Результат: без сбоев и с документацией
В итоге команда перевела всё без заметных сбоев. И ещё один результат, о котором Евгений говорит отдельно: после миграции осталась понятная документация. Для следующих разработчиков это не менее ценно, чем сама новая архитектура.

Что из этого следует
Из этой истории Евгений Зайферт выносит тот же принцип, который советует начинающим: не пытаться сделать «всё сразу». Сложная задача становится решаемой, когда её разбивают на понятные шаги, обсуждают с командой и проверяют каждый результат.
Сейчас Евгений развивает внутренние сервисы для веб-платформы и участвует в код-ревью. До конца года он планирует заняться оптимизацией производительности и подготовить внутренний доклад по архитектуре для команды. Подробнее - в его интервью Клубу известных тёзок.



Комментарии