Comments 10
Если вы пишете серверные приложения в среде Node.js, взгляните на wolkenkit. Этот фреймворк, среди того, что удалось обнаружить в данной сфере предоставляет разработчику один из самых простых интерфейсов для реализации шаблонов CQRS и Event Sourcing
Только при этом wolkenkit, к сожалению, требователен к инструментам — как минимум, придется docker устанавливать, что к примеру под windows — сомнительное занятие
Существуют более легковесные CQRS+ES фреймворки на Node.js, не требующие дополнительных инструментов, к примеру, Resolve.JS. Еще и поддержка React Native из коробки
Начиная с версии 2 докер стал работать на windows более-менее стабильно. Он и до этого работал отлично, если поставить на чистую систему, все настроить и больше не трогать. Теперь же даже можно ставить обновления, как системы, так и приложения, без боязни потерять работоспособность последнего.
Как вы организуете управление состоянием клиентских и серверных приложений?
На бэкенде нет состояния.
На фронтенд-сервере по старинке — сессии. Прямо сейчас — koajs/session
На фронте подойдет любой flux/redux или еще какой x — не принципиально. Прямо сейчас vuex.
Ожидал от заголовка увидеть какую-нибудь чудо-реализацию редукса на сервере с сериализацией в монгу или постгрес.
Эх, разочарование…
Вот тут разбирается реализация этих идей, приводящая к event sourcing.
Грубо говоря, на сервере поток евентов разделяетя по DDD агрегатам, персистятся евенты, а стейт вычисляется.
В реализации вышеупомянутого Resolve, есть View Model — разновидность read model, которая обновляется redux редьюсерами, в том числи и на клиенте (в реальном времени по вебсокету).
На удивление, при применении event sourcing как-то отпадает необходимость в GraphQL.
GraphQL хорош, когда у тебя есть N наборов данных, которые ты не можешь легко менять, и с помощью GraphQL ты можешь заставить сервер вернуть точно такой ответ как тебе нужно.
А в CQRS/ES приложении ты просто меняешь функцию проекции для того, чтобы ридмодель содержала ровно то, что тебе нужно.
Мы в конце концов выпилили GraphQL из системы просто потому что не пользовались им.
Вот подобная статья, только с игрушкой: https://medium.com/resolvejs/resolve-redux-backend-ebcfc79bbbea
Можно ли использовать Redux на сервере?