API First vs Code First. Как мы попали в параллельную вселен
⚡️ v42.26.1
API First vs Code First. Как мы попали в параллельную вселенную 🌌
Недавно согласовывали с поставщиком ПО экстренную доработку REST API.
Договорились: месяц на всё, включая поставку новой версии.
Ожидали документацию заранее, чтобы параллельно готовить интеграцию. Но её нет. А сроки поставки начинают сдвигаться.
За две недели до первоначального дедлайна просим:
— Дайте хотя бы OpenAPI-спецификацию. Нам нужно согласовать контракт и начать свою часть работы, не дожидаясь релиза.
— Спецификация будет вместе с поставкой. Она генерируется из кода.
Пауза.
Мы смотрим на них. Они на нас. И понимаем: мы из разных вселенных.
🔀 В чём разница?
Code First — сначала реализуем интерфейс, затем генерируем спецификацию из кода.
API First — сначала проектируем и согласовываем контракт, затем реализуем его.
Для поставщика спецификация — результат разработки.
Для нас — основа, без которой интеграцию не начать.
И вот парадокс: поставка задерживается, мы хотим выиграть время за счёт параллельной работы, но не можем получить даже описание того, что разрабатывается.
⚠️ Чем это грозит?
• Команды не могут полноценно работать параллельно.
• Несовпадения ожиданий обнаружатся только при интеграции.
• После поставки могут потребоваться новые доработки. И снова сроки.
Самое интересное — никто не пытался сделать плохо. Мы просто не договорились, что API-контракт должен появиться раньше кода. Для нас это было очевидно. Для коллег — нет.
📝 Что вынес из этой истории?
Теперь с поставщиками буду заранее выяснять:
Когда получим API-контракт? Кто и когда его согласовывает? Как обрабатываются и документируются обратно несовместимые изменения интерфейса? Можно ли получить моки до релиза?
Четыре вопроса, которые могут сэкономить недели ожидания и переделок.
💡 API First — не про Swagger. Это про возможность договориться до того, как код написан.
А вы сталкивались с таким столкновением API First и Code First? Как выходили из ситуации? 👇
#API #интеграция #архитектура #APIFirst #CodeFirst #Т1Амбассадор