Пятничное чтиво Ребята из эврона попросили рассказать о двух | 2pegramming
Пятничное чтиво
Ребята из эврона попросили рассказать о двух вещах: 20го июля (среда), в 19 часов будет рубишный митап и о Ruby Quiz. Старые записи стримов можно найти на ютубе. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.
—————————————
Migrating Monoliths to Microservices with Decomposition and Incremental Changes
Статья - транскрипт выступления Sam Newman с QCon London, в которой рассказывается о способах декомпозиции монолита на сервисы.
В начале, автор описывает три варианта монолитов: обычный модульный монолит, вариация монолита с несколькими базами данных и распределенный монолит. После чего рассматриваются два паттерна декомпозиции: strangler fig и branch by abstraction. Понравился пункт, в котором рассказывается, как валидировать миграцию сервисов запустив одновременно старую и новую реализацию (если что, это главный навык без которого рефакторинг цехов в факторио превращается в хаос). Заканчивается лонгрид описанием миграции данных и как джойнить данные между сервисами.
#monolith_decomposition
—————————————
Microservices Observability Design Patterns
В канале уже упоминались статьи об observability в сервисных архитектурах. Но считаю, что повторение мать учения, поэтому сегодня - еще одна статья со списком подходов, которые помогут понять, что в системе происходит. Автор описывает шесть подходов: хелсчеки, агрегация логов, распределенная трассировка, отслеживание ошибок, метрики и аудит лог. Каждый из подходов подробно описывается и приводится примеры как реализовать каждый из подходов. Кроме того, в конце дается еще 12 ссылок для дальнейшего чтения.
Русский перевод
#observability
—————————————
Should you throw an exception when rebuilding the state from events?
Event sourcing позволяет получить состояние из событий, но что делать, если по какой-то причине не хватает нужных событий, без которых стейт не соберется? Например: отсутствует product из которого собирается item в order. На этот вопрос рассуждает автор сегодняшнего текста.
В начале, описывается краткий интродакшн в event sourcing: что такое события, что такое стрим событий, какие две минимальные операции должен поддерживать эвент стор, как собирать стейт из событий. После чего вводится абстрактная ситуация в которой не смогли записать какой-то набор необходимых событий (например, когда выкатывается не протестированный код).
Дальше возникает выбор между:
- Игнорировать поломанные данные (автор сразу выкидывает этот вариант)
- Добавить компенсаторные событий
- Выкидывать эксепшен
В самом тексте расписывается каждый из вариантов и, ожидаемо, конечный вариант можно сократить до “зависит от”.
#event_sourcing