advanced

Pact и consumer-driven contracts

Используйте contract tests, когда independently deployed consumers и providers требуют compatibility guarantees без опоры на broad E2E suites.

Pact реализует consumer-driven контракты: consumer задаёт ожидаемые взаимодействия; provider проверяет, что удовлетворяет записанным контрактам. Опубликованные pacts блокируют деплой provider без всего E2E-ферма consumer.

Хорошо работает при независимых деплоях сервисов и частом schema drift.

На интервью: consumer test → pact file → provider verification и что происходит при нарушении контракта.

Типовые ошибки: контракты на случайные headers, нет provider states, Pact вместо бизнес-E2E.

Компромисс — уверенность в независимых релизах против overhead pact broker и управления состояниями.

Чеклист:

  • Моделируйте значимые взаимодействия, не шумные payload целиком.
  • Версионируйте и публикуйте pacts в CI.
  • Provider states для нужной подготовки данных.