Те кто читали книжку @samnewman или блог @martinfowler знают про паттерн Strangler.
Но можно ли его использовать для тестирования? Давайте придумаем как!?
Вообще паттерны Strangler и Branch By Abstraction очень большие наши друзья в современных архитектурах!
Давайте опишем задачу.Дано:
Приложение, которое монолит и работает. Оно настолько большое и сложное, что те, кто понимают как оно работает уже давно умерли (это почти не шутка)
Ваша задача сделать из этого прозрачное приложение, которое работает достаточно хорошо и при этом лишено недостатков существующего монолита:
- сильная связанность
- большая сложность кода
И тут мы внедряем идею тестирования:
переписываем нашу систему почастям и запросы отправляем всегда в обе системы: новую и старую; а в фасаде сравниваем результаты->если результаты разные->значит логируем ошибку и заводим таску на программистов (новая система работает с ошибками)
Месяцами ваш код живет в проде и тестирует реальные кейсы пользователей. А вы ждете пока у вас failure rate будет соответствовать вашему пороговому значению, чтоб можно было раскатывать эту фичу на пользователей
Простое и элегантное решение, когда ваш код сложнее, чем вы можете понять, но вас его нужно переписать :)