Автор: Максим Денушев (Точка) · Golang Channel
Максим Денушев работает в банке Точка. Доклад с GolangConf 2024, 31 минута. API Gateway — компонент, через который проходит весь трафик платформы. Переписать его — значит заменить двигатель у летящего самолёта: система должна оставаться доступной, а пользователи не должны заметить, что что-то происходит.
Главная сложность такой задачи не техническая, а операционная. Выбрать новый стек и написать код — это меньшая часть работы. Настоящий вызов — как организовать переход так, чтобы в каждый момент времени система работала корректно для всех клиентов. Денушев разбирает подход, который команда применила: постепенное перемещение трафика через новый Gateway параллельно со старым, профилирование под реальной нагрузкой, работа с проблемами обратной совместимости, которые обнаруживаются только когда через систему идут реальные данные. Это не история успеха без шрамов — доклад честный о том, с какими проблемами они столкнулись и что их не предусмотрели заранее.
Кому смотреть: backend-инженерам и архитекторам, которые стоят перед задачей замены критического инфраструктурного компонента — не только Gateway, но и любого, через который проходит весь трафик.
Из этого можно взять в работу: если вы планируете значительное изменение инфраструктурного компонента — составьте список всего, что через него проходит, и определите, какие клиенты заметят изменение первыми. Это первый шаг к плану миграции, который не ломает продакшн.
Сигналы того, что текущий Gateway перестаёт устраивать: производительность под нагрузкой не соответствует требованиям, добавление новых фич требует обходных путей в архитектуре, операционная сложность выросла настолько, что изменения занимают непропорционально много времени. Денушев описывает, как команда диагностировала, что находится именно в этой точке.
Выбор нового стека на Go: профилирование — центральная часть выбора. Денушев разбирает, как сравнивали кандидатов не на синтетических тестах, а на реальных паттернах трафика банка. Синтетические бенчмарки обманывают: то, что быстро на ровном потоке равномерных запросов, может плохо вести себя при спайках или при длинных соединениях.
Инфраструктура вокруг приложения: Gateway — это не только код, это service discovery, конфигурация маршрутизации, сертификаты, логирование, трейсинг. При переписывании всё это нужно переносить или адаптировать. Денушев отдельно разбирает, как они решали эту часть — потому что именно здесь обычно теряется время при замене.
Обнаружение проблем: некоторые несовместимости проявляются только под реальным трафиком — edge cases в заголовках, клиенты с нестандартным поведением, паттерны запросов, которые не предусмотрены спецификацией но работают со старым Gateway. Доклад честен о том, что часть проблем была найдена уже в процессе миграции.