Рецензия на пост «Самый важный паттерн МСА на примере неудавшегося отпуска»
Второй пост, который меня очень заинтересовал: «Самый важный паттерн МСА на примере неудавшегося отпуска», ссылка на канал автора: https://t.me/system_analysis_max/41
В посте на живом примере отпуска рассказывается о паттерне Saga. Абстрактный паттерн микросервисной архитектуры превращается в живую историю о планировании и проведении отпуска. Даже тем, кто не слышал о паттерне Saga, будет понятна его суть.
Почему стоит обратить внимание на этот пост
Великолепная аналогия с отпуском: Автор с первых строк заставляет «почувствовать», как работает Saga на примере отпуска. Бронирование, отмена, невозвратные билеты — всё это делает объяснение понятным и запоминающимся.
Простыми словами о сложном: Тема сложная, но автору удалось подать ее так, что она становится понятной для новичков. Вдобавок к этому раздел «Кратко о важном» — отличный ход, который позволяет еще раз напомнить суть и запомнить ее.
Практические примеры: Использование знакомого сервиса — Uber, наглядно связывает объяснение с конкретными примерами — теорию и практику.
Четкая структура: Четкое разграничение концепций и правильные акценты на обработку ошибок. Лакончно объяснены основные концепции Saga — локальные и компенсирующие транзакции, поворотные точки, реализация через оркестровку (оркестрацию) и хореографию. Вместе с этим правильно смещается фокус с happy path на обработку ошибок. И фраза: *«Saga – это не про идеальный сценарий, а про то, как грамотно откатиться при ошибках и поддержать данные в целостности»* — ключевой вывод.
Чтобы я добавил для большей практической значимости
Как правило, при реализации паттерна Saga на практике используют механизм асинхронного обмена сообщений. В этом случае очень тщательно нужно подойти к реализации механизма отправки и обработки событий. На мой взгляд, стоит упомянуть о таких механизмах как:
Идемпотентность — повторный вызов операции не должен приводить к повторному изменению состояния.
Надежная доставка сообщений — особенно при использовании хореографии необходимо предусмотреть механизмы гарантированной публикации сообщений при изменении состояния участника хореографии.
Обработка исключительных ситуаций — даже компенсирующие транзакции могут завершиться с ошибкой, поэтому стоит использовать различные подходы, чтобы ничего не потерять — dead letter queue, retry и т. п.
Итог
Автору удалось сделать то, что редко встречается в технических постах — объяснить сложное через простую аналогию. На мой взгляд, после прочтения очень сложно не уловить суть изложения. Использование примеров из реальной жизни — Uber, банковские транзакции, делает изложение еще более ценным с практической точки зрения. Материал очень доступный и запоминающийся.
Предложенные мной дополнения направлены лишь на увеличение практической ценности. Тот, кто решит реализовать паттерн Saga на практике, неизбежно столкнется с такими вызовами.
Пост получился интересным, читая его у меня возникали приятные воспоминания о прошедшем отпуске, которые теперь будут ассоциироваться с паттерном Saga. Спасибо автору!
Участвую в конкурсе «Продолжи мысль» от @systems_education
#продолжи_мысль_SE
Второй пост, который меня очень заинтересовал: «Самый важный паттерн МСА на примере неудавшегося отпуска», ссылка на канал автора: https://t.me/system_analysis_max/41
В посте на живом примере отпуска рассказывается о паттерне Saga. Абстрактный паттерн микросервисной архитектуры превращается в живую историю о планировании и проведении отпуска. Даже тем, кто не слышал о паттерне Saga, будет понятна его суть.
Почему стоит обратить внимание на этот пост
Великолепная аналогия с отпуском: Автор с первых строк заставляет «почувствовать», как работает Saga на примере отпуска. Бронирование, отмена, невозвратные билеты — всё это делает объяснение понятным и запоминающимся.
Простыми словами о сложном: Тема сложная, но автору удалось подать ее так, что она становится понятной для новичков. Вдобавок к этому раздел «Кратко о важном» — отличный ход, который позволяет еще раз напомнить суть и запомнить ее.
Практические примеры: Использование знакомого сервиса — Uber, наглядно связывает объяснение с конкретными примерами — теорию и практику.
Четкая структура: Четкое разграничение концепций и правильные акценты на обработку ошибок. Лакончно объяснены основные концепции Saga — локальные и компенсирующие транзакции, поворотные точки, реализация через оркестровку (оркестрацию) и хореографию. Вместе с этим правильно смещается фокус с happy path на обработку ошибок. И фраза: *«Saga – это не про идеальный сценарий, а про то, как грамотно откатиться при ошибках и поддержать данные в целостности»* — ключевой вывод.
Чтобы я добавил для большей практической значимости
Как правило, при реализации паттерна Saga на практике используют механизм асинхронного обмена сообщений. В этом случае очень тщательно нужно подойти к реализации механизма отправки и обработки событий. На мой взгляд, стоит упомянуть о таких механизмах как:
Идемпотентность — повторный вызов операции не должен приводить к повторному изменению состояния.
Надежная доставка сообщений — особенно при использовании хореографии необходимо предусмотреть механизмы гарантированной публикации сообщений при изменении состояния участника хореографии.
Обработка исключительных ситуаций — даже компенсирующие транзакции могут завершиться с ошибкой, поэтому стоит использовать различные подходы, чтобы ничего не потерять — dead letter queue, retry и т. п.
Итог
Автору удалось сделать то, что редко встречается в технических постах — объяснить сложное через простую аналогию. На мой взгляд, после прочтения очень сложно не уловить суть изложения. Использование примеров из реальной жизни — Uber, банковские транзакции, делает изложение еще более ценным с практической точки зрения. Материал очень доступный и запоминающийся.
Предложенные мной дополнения направлены лишь на увеличение практической ценности. Тот, кто решит реализовать паттерн Saga на практике, неизбежно столкнется с такими вызовами.
Пост получился интересным, читая его у меня возникали приятные воспоминания о прошедшем отпуске, которые теперь будут ассоциироваться с паттерном Saga. Спасибо автору!
Участвую в конкурсе «Продолжи мысль» от @systems_education
#продолжи_мысль_SE