При Consumer Driven Contracts (CDC), потребитель определяет формат данных, который он ожидает от сервиса, и создает контракт (спецификацию ожиданий). Производитель использует этот контракт для проверки того, что его сервис соответствует требованиям потребителя.
При Producer Driven Contracts (PDC), производитель сервиса определяет формат данных, предоставляемый своим сервисом, и создает контракт. Потребитель затем использует этот контракт, чтобы убедиться, что он может корректно работать с данными, предоставляемыми производителем.
Ключевая разница в том, кто инициирует создание и управление контрактом и, соответственно, кто несет основную ответственность за его поддержание в актуальном состоянии в соответствии со своими потребностями/возможностями.
Сравнение:
| Аспект | Consumer Driven Contracts (CDC) | Producer Driven Contracts (PDC) |
|---|---|---|
| Инициатор | Потребитель | Производитель |
| Ответственность за актуальность | Потребитель (для своих нужд) и Производитель (для соответствия) | Производитель |
| Основная цель | Убедиться, что сервис удовлетворяет нужды потребителя | Убедиться, что потребители могут использовать сервис |
| Смещение риска | Снижение риска поломки у потребителя при изменении сервиса | Снижение риска поломки у производителя при изменении потребителя |
CDC больше подходит для микросервисной архитектуры или когда у одного производителя множество разнообразных потребителей с разными требованиями. PDC удобен, когда производитель является доминирующим, или когда сервис унифицирован и используется многими потребителями единообразно.