Я больше не пишу интеграционный код для каждого 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 вручную или уже автоматизировали? Интересно, кто на каком этапе.