4. Что такое микросервисы?
Вид архитектуры приложений
Приложение функционально разбито на более мелкие
части – сервисы
Каждый сервис должен решать как можно меньшую
задачу
Протокол общения HTTP (обычно)
Вместо одного большого сервера, получаем сотни мелких
серверов
5. Что такое микросервисы?
Независимость в работе, обмен только данными
Отказоустойчивость
Быстрое наращивание мощностей, и сворачивание, когда
они не нужны
Проще поддерживать и вносить изменения в отдельный
функционал
6. Чтотакоемикросервис?Коммуникация между сервисами может быть очень сложной
Сложность разворачивания и поддержки множества отдельных сервисов вместе
Совместимость между разными версиями требует тестирования
11. Контракт
Коллекция соглашений между Consumer и Provider
сервисами, которые описывают коммуникацию которая
может возникать между ними
Контракты помогают разрабатывать Provider так, как это
удобно Consumer
Есть готовые инструменты для работы с контрактами,
например - PACT(JVM, .NET, Python, JavaScript, Go, Swift, и
как отдельный сервис), который позволяет составлять,
хранить и проверять контракты
14. Как записать контракт?
Подключайте PACT к вашим интеграционным тестам
PACT запускается как конфигурируемый Mock сервер, и
записывает ваши запросы и ответы в контракт
Не забывайте что нам нужно протестировать свой
микросервис, а не чужой!
Постарайтесь минимизировать использование
хардкодженых значений в Mock сервере, PACT дает
возможность устанавливать нестрогие значения
15. Контракт
Вот такой контракт
записывает PACT
Коллекция запросов и
ожидаемых ответов
Технически это JSON
В минимальном варианте –
можно руками отдавать этот
файл Provider
22. Общая картина
Микросервис может выступать как Provider и Consumer
одновременно
Ваши моки требуют поддержки, и это нормально
Самый сложный момент – правильно описать что нужно от
Provider. Вспоминайте классы эквивалентности
Контрактное тестирование это не замена юнит,
интеграционным или e2e тестам