🔥

Тред (Ярик Астафьев)


Те кто читали книжку @samnewman или блог @martinfowler знают про паттерн Strangler. Но можно ли его использовать для тестирования? Давайте придумаем как!?
notion image

Вообще паттерны Strangler и Branch By Abstraction очень большие наши друзья в современных архитектурах! Давайте опишем задачу.Дано: Приложение, которое монолит и работает. Оно настолько большое и сложное, что те, кто понимают как оно работает уже давно умерли (это почти не шутка)

Ваша задача сделать из этого прозрачное приложение, которое работает достаточно хорошо и при этом лишено недостатков существующего монолита: - сильная связанность - большая сложность кода

И тут мы внедряем идею тестирования: переписываем нашу систему почастям и запросы отправляем всегда в обе системы: новую и старую; а в фасаде сравниваем результаты->если результаты разные->значит логируем ошибку и заводим таску на программистов (новая система работает с ошибками)

Месяцами ваш код живет в проде и тестирует реальные кейсы пользователей. А вы ждете пока у вас failure rate будет соответствовать вашему пороговому значению, чтоб можно было раскатывать эту фичу на пользователей

Простое и элегантное решение, когда ваш код сложнее, чем вы можете понять, но вас его нужно переписать :)