Я больше не пишу интеграционный код для каждого API вручную. Что изменилось за год
Год назад выглядел так: приходит новый проект, в нём 5–6 внешних API. Я открываю документацию каждого провайдера, изучаю форматы, пишу отдельного клиента, отдельную обработку ошибок, отдельные ретраи. На один средний проект уходило полторы-две недели только на интеграционный код.
Самое обидное — 80% этого кода было однотипным. Разные провайдеры, но одни и те же проблемы: нестандартные форматы ошибок, кривые SDK, устаревшая документация, одинаковые грабли с лимитами.
Что я поменял
Первое — перестал писать клиенты руками. Где есть OpenAPI-спецификация, генерирую клиент автоматически. Где документации нет — восстанавливаю схему по реальным запросам, а LLM помогает собрать недостающие поля. Второе — вынес всю общую логику в один универсальный слой: авторизация, таймауты, ретраи, логирование, лимиты. Каждый новый провайдер подключается к этому слою, а не тянет за собой ещё один кусок кода.
Что изменилось на цифрах
Сравниваю проект год назад и аналогичный проект сейчас:
- Время на подключение нового внешнего API: с 2–3 дней до 2–3 часов
- Объём интеграционного кода: минус примерно 60–70%
- Инциденты, связанные с интеграциями: стали реже, потому что общая логика ошибок теперь в одном месте, а не в десяти копиях Это не маркетинговые цифры — это замеры по трём проектам, которые я вёл параллельно.
Но не всё так гладко
Честно про обратную сторону. Сгенерированный код не всегда аккуратный, иногда его приходится дорабатывать руками. LLM может уверенно придумать поля, которых нет в реальном API — проверять всё равно приходится. И если у команды нет привычки поддерживать спецификации в актуальном состоянии, автоматизация быстро превращается в новый источник хаоса.
Мой вывод
Ручное написание клиентов под каждый API — это не «правильный» и не «неправильный» подход. Это просто дорогой подход, когда провайдеров становится больше трёх. Автоматизация и универсальный слой экономят недели в год, но требуют дисциплины в поддержке спецификаций. Если у вас 1–2 внешних интеграции — не усложняйте. Если пять и больше — задумайтесь, сколько времени вы тратите на однотипный код.
Шаблон универсального слоя для внешних API и чек-лист, как переводить проект на автоматическую генерацию клиентов, я выложил в телеграм-канале @api_integrate_notes.
А вы ещё пишете клиенты для API вручную или уже автоматизировали? Интересно, кто на каком этапе.