Чистый код, SOLID, паттерны и рефакторинг

Чистый код, SOLID, паттерны и рефакторинг #


1. Есть один монолит на Java 11. Он содержит системы, которые надо вынести. С чего бы начал? #

2. У нас есть SOLID и есть множественная имплементация. С одной стороны говорят дробите, с другой принцип единой ответственности, как решить этот диссонанс? #

3. Метод, в котором 150 if-ов, где сравниваются строки. Как отрефакторить? #

4. Сервис А должен сходить в Сервис Б. Они не знают API друг друга. Какой паттерн помогает им понять? #

5. Планирование архитектуры между несколькими сервисами. (нужно смотреть фотографию) Как бы ты создал Контракт взаимодействия между сервисом egrn и внутренними клиентами. И между egrn и внешним сервисом Росреестр. #

6. В первом сервисе произошло событие, закоммитили в БД, нужно отправить сообщение в кафку. Кафка реализует мост at least once т.е. может много сообщений в кафку. Если транзакция закоммителась мы должны гарантированно другому сервису сообщать, что событие произошло. Какие паттерны реализовать? #

7. Общаемся с сервисом по REST, получили сетевую ошибку, кажется, что можно вызывать заново. Что настроить на своей стороне? - паттерн Retry - Если соседний сервис очень слабый, то постоянный retry еще больше его положит - увеличить промежутки времени между retry или паттерн circuit breaker #

8. Какие концепции в SOLID вы считаете самыми важными? А какими иногда в угоду бизнеса, скорости можно пренебречь? #