Код-ревью Senior Микросервисы глазами аналитика обновлено

Ревью нарезки на микросервисы

Вопрос

Архитектурная команда предложила разбиение системы онлайн-школы. Найди проблемы.

1. UserTableService: CRUD над таблицей users
2. ValidationService: проверяет данные всех остальных сервисов
3. CourseService и LessonService: читают одну общую базу courses_db
4. PaymentService синхронно вызывает CourseService, UserService, NotificationService и ждёт всех
5. NotificationService: отправляет письма, слушает события
6. ReportService: строит отчёты, ходя по очереди в API всех сервисов

Коротко

Лучше делить по бизнес-возможностям: каталог курсов, обучение и прогресс, платежи, уведомления, учётные записи. Валидация живёт в каждом сервисе для его данных.

Что должен найти ревьюер

  1. Ошибкастрока 1
    Нарезка по таблице, а не по домену: сервис без бизнес-смысла
  2. Ошибкастрока 2
    Сквозной сервис валидации связывает всех: любое изменение правил требует его релиза
  3. Ошибкастрока 3
    Общая база для двух сервисов: связь через схему, нет независимых релизов
  4. Ошибкастрока 4
    Синхронная цепочка в платеже: падение уведомлений ломает оплату; уведомление должно быть асинхронным
  5. Производительностьстрока 6
    Отчёты через API всех сервисов медленные и нагружают их: нужна выгрузка в хранилище (DWH)

Разбор

Лучше делить по бизнес-возможностям: каталог курсов, обучение и прогресс, платежи, уведомления, учётные записи. Валидация живёт в каждом сервисе для его данных. Уведомления и отчёты получают данные событиями. Пункт 5 сделан правильно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.