Код-ревью Senior Микросервисы глазами аналитика обновлено
Ревью нарезки на микросервисы
Вопрос
Архитектурная команда предложила разбиение системы онлайн-школы. Найди проблемы.
1. UserTableService: CRUD над таблицей users
2. ValidationService: проверяет данные всех остальных сервисов
3. CourseService и LessonService: читают одну общую базу courses_db
4. PaymentService синхронно вызывает CourseService, UserService, NotificationService и ждёт всех
5. NotificationService: отправляет письма, слушает события
6. ReportService: строит отчёты, ходя по очереди в API всех сервисов
Коротко
Лучше делить по бизнес-возможностям: каталог курсов, обучение и прогресс, платежи, уведомления, учётные записи. Валидация живёт в каждом сервисе для его данных.
Что должен найти ревьюер
- Ошибкастрока 1Нарезка по таблице, а не по домену: сервис без бизнес-смысла
- Ошибкастрока 2Сквозной сервис валидации связывает всех: любое изменение правил требует его релиза
- Ошибкастрока 3Общая база для двух сервисов: связь через схему, нет независимых релизов
- Ошибкастрока 4Синхронная цепочка в платеже: падение уведомлений ломает оплату; уведомление должно быть асинхронным
- Производительностьстрока 6Отчёты через API всех сервисов медленные и нагружают их: нужна выгрузка в хранилище (DWH)
Разбор
Лучше делить по бизнес-возможностям: каталог курсов, обучение и прогресс, платежи, уведомления, учётные записи. Валидация живёт в каждом сервисе для его данных. Уведомления и отчёты получают данные событиями. Пункт 5 сделан правильно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.