Получи случайную криптовалюту за регистрацию!

Пятничное чтиво Ребята из эврона попросили рассказать о двух | 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