Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Neos Conference 2020: Event Sourced Content Repository - the current status

Neos Conference 2020: Event Sourced Content Repository - the current status

Sebastian Kurfürst

May 22, 2020
Tweet

More Decks by Sebastian Kurfürst

Other Decks in Technology

Transcript

  1. NodeDataRepository NodeInterface Doctrine ORM "naive" Database Schema Identity Map Fusion

    / FlowQuery Read API Write API Dimension handling NodeData Not well de fi ned slow for big node trees, performance hard to predict hard to reproduce bugs (sometimes) orphan nodes sometimes possible advanced features hard to integrate Masking of deleted nodes (Shadow Nodes) Workspace Shine Through Node Type Management
  2. Fusion / FlowQuery Read API Write API Node Type Management

    TraversableNodeInterface NodeInterface Commands NodeDataRepository Doctrine ORM "naive" Database Schema Identity Map Dimension handling NodeData Masking of deleted nodes (Shadow Nodes) Workspace Shine Through
  3. Fusion / FlowQuery Read API Write API Node Type Management

    TraversableNodeInterface NodeInterface Commands Dimension Space layer Content Stream / Workspace layer Doctrine ORM "naive" Database Schema Identity Map
  4. Doctrine DBAL Runtime Cache Fusion / FlowQuery Read API Write

    API Node Type Management TraversableNodeInterface NodeInterface Commands Dimension Space layer Content Stream / Workspace layer "naive" Database Schema
  5. Dimension Space layer Content Graph Event Store Commands Content Stream

    / Workspace layer Fusion / FlowQuery Read API TraversableNodeInterface NodeInterface Node Type Management Write API well de fi ned, sound concept optimized for move and other complex cases basis for advanced features great performance Doctrine DBAL Runtime Cache
  6. update projections append events Event Sourced Architecture Events "modify" read*

    Event Store e1 e1 Node properties were updated e2 Node was created e3 Node properties were updated e4 Workspace was created
  7. Projections can be rebuilt DB Tables Empty DB Tables apply

    event 1 DB Tables apply event 2 apply event 3 apply event 4 apply event 1000
  8. write side read side (projections) Event store (DB Table) Content

    Graph Commands Events Workspace Changes (soft) constraints …
  9. We have built a sound, consistent concept for main interactions

    like workspaces, content dimensions, the node tree, hidden nodes, ...
  10. Implemented Missing Features implemented reference properties document tree performance FlowQuery

    fi nd() implementation started workspace module node:repair kickstarted groundwork for Import / Export
  11. Stabilization adjusted Neos.UI 
 Neos.EventSourcing fi xes & tests Backend

    Caching Integration Copy/Paste Support lots of small fi xes in the Neos backend
  12. Neos.EventSourcedContentRepository: 17 000 LOC (including comments) Neos.EventSourcedNeosAdjustments: 14 000 LOC

    (including comments) quite stable CR Core layer beta quality changes needed because of API adjustments in CR to be merged into core at some point alpha quality
  13. Compatibility Layer ... emulating parts of the old Node Context

    api your Fusion code mostly still works :)
  14. Standalone Usage Support we made it a library, which runs

    even 
 without Flow 
 works in e.g. Symfony
  15. my personal brain nut 4 hours of coding 1 hour

    of thinking 1 hour of discussing new insights
  16. Spent last year 10.000 € from the Neos Core Team

    budget. Lots of "hobby evenings."
  17. It's all about the money? No! I and others are

    pushing the topic forward, regardless of funding. 
 We won't make any promises when it's done.