From 03b2f56831749a043315f632c296aeba554437f9 Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sat, 25 Dec 2021 11:39:48 -0800 Subject: [PATCH 1/2] First draft. --- .../cleaning-schedule.png | Bin 0 -> 20606 bytes .../guest-registration.png | Bin 0 -> 11553 bytes .../posts/event-modeling-to-evently/index.md | 197 ++++++++++++++++++ .../event-modeling-to-evently/lat-long.png | Bin 0 -> 39572 bytes .../event-modeling-to-evently/testing.png | Bin 0 -> 18114 bytes data/authors.toml | 7 +- 6 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 content/posts/event-modeling-to-evently/cleaning-schedule.png create mode 100644 content/posts/event-modeling-to-evently/guest-registration.png create mode 100644 content/posts/event-modeling-to-evently/index.md create mode 100644 content/posts/event-modeling-to-evently/lat-long.png create mode 100644 content/posts/event-modeling-to-evently/testing.png diff --git a/content/posts/event-modeling-to-evently/cleaning-schedule.png b/content/posts/event-modeling-to-evently/cleaning-schedule.png new file mode 100644 index 0000000000000000000000000000000000000000..457c0387b56c304555191583e72cb982a0397cd5 GIT binary patch literal 20606 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%0ArzS& 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[high res version](/posts/what-is-event-modeling/blueprint_large.jpg) + +We will be taking slices of this Event Model to present how you can use Evently’s features to bring the Hotel domain to life. + +### Entity Definitions + +Evently categorizes events around the concept of an Entity, an identifiable source of state. You can identify the Entity types by following the typical advice for identifying a DDD aggregate root. Entities can vary in their graininess, depending on how the business considers its operational value. Your application can use coarse-grained entities and the [Filter Selector API](https://evently.cloud/api/#operation/get-filter-selector-lookup) to select relevant events by data fields to build read models and atomically append events. For this post, we will use two Entity types. + +##### Guest + +A guest in the hotel industry books rooms at a property. The hotel business sees Guests as their customers. A guest must register an account to book rooms at hotel properties. + +##### Property + +The property defines an operations site in the hotel chain’s business. The property consists of rooms, staff and Guest amenities. Hotels do not consider individual rooms as entities but rather a type of saleable stock. When a Guest books a room, they do not book a specific room but rather a class of room, like two queens or a suite. When the Guest arrives, the front desk assigns an appropriate room for their stay. + +### Slices + +To show how to think about implementing the Event Model using Evently, we will select a few slices from the example and show the APIs you would use with Evently to build out the slice. + +#### Cleaning Schedule + +![cleaning-schedule](cleaning-schedule.png) + +An interesting aspect of hotel operations is that rooms are cleaned only when a booking exists for the room class. The hotel optimizes the cleaning staff to prepare the rooms near each other and only clean rooms that need cleaning because of a guest's arrival. They will not clean a room that has no near-term revenue. +The cleaning staff need a Cleaning Schedule projection built to organize staffing levels and room order. They need two events: `Room Booked` and `Room Readied`. They need the first to identify the booked rooms, and they need the latter to mark off the rooms that are already prepared for check-in. + +To fetch these events from Evently, they issue a replay selector request: + +```http +POST https://preview.evently.cloud/selectors/filter +Content-Type: application/json +Authorization: Bearer + +{ + "entity": "Property", + "keys": ["atomic-motel"], + "events": [ + "Room Booked", + "Room Readied" + ], + "after": "0005d13ee253e847da62cab2" +} +``` + +Events come in their append order, oldest to newest. The body’s newline-delimited content enables readable stream processing and supports TCP’s standard backpressure controls. + +This request asks for the two relevant event types in the ‘atomic-motel’ Property entity. The events “catch-up” the client because the request includes an `after ` property, indicating the client has already read this selector in the past. + +An `after ` contains either a Ledger mark or an event ID from a previous request and instructs Evently to only send new events that occur after this point in the Ledger. If the `after` value is unknown, then omit it, and Evently will send all the matching events in the Ledger. + +#### New Guest Registration + +![guest-registration](guest-registration.png) + +In this slice, a new Guest wants to register an account by issuing a Register command. While this blueprint does not provide detail about the command and event, we can safely assume that a username should uniquely identify Guests. We want to execute this command in two steps to support this business goal. + +##### Step 1: Search For Existing Guest Registrations + +Ask Evently to select events from the Ledger that match a filter statement. If any events come back, we know that another Guest has already taken that user name. + +```http +POST https://preview.evently.cloud/selectors/filter +Content-Type: application/json +Authorization: Bearer + +{ + "data": { + "Guest": { + "Registered": "$.username ? (@==\"mark_knopfler\")" + } + } +} +``` + +This filter selector request asks Evently to send back `Registered` events in the `Guest` entity where the event data’s `username` is equal to our new Guest account `mark_knopfler`. The query format is [SQL JSONPath](https://evently.cloud/concepts/sql-jsonpath/), a JSONPath query language, part of the SQL2016 standard. + +If no one else has created this user yet, Evently will send back an empty event list. In the response you will find a footer object that contains the `selectorId` and a Ledger `mark`. These values identify the selector query and where the result was read up to in the Ledger. + +##### Step 2: Atomically Append the Guest Registered Event + +Attempt to append a Registered event for `mark_knopfler`. We want to perform an atomic append, guaranteeing that no other Guest has registered with that username since we last executed the selector. If a matching event _has_ occurred since we ran the selector, Evently will issue a Race Condition error and the Guest must choose a new username. + +```http +POST https://preview.evently.cloud/append/atomic +Content-Type: application/json +Authorization: Bearer + +{ + "entity": "Guest", + "event": "Registered", + "key": "96545681912005716892", + "meta": { + "causationId": "f_h59gj5-4jg03jdj45q" + }, + "data": { + "username": "mark_knopfler", + "first": "Mark", + "last": "Knopfler" + }, + "idempotencyKey": "cw_3gFx2OE4jAIlUgmFtt", + "selector": { + "selectorId": "gaFkgadhY2NvdW50ga9hY2NvdW50LWNyZWF0ZWTZJSQubmFtZT8oQD09Im1pa2VfbWV5ZXJzQGV4YW1wbGUuY29tIik", + "mark": "0000000000000000bee3f960" + } +} +``` + +Let’s break down the body of the append request and explain the purpose of the different components. + +###### Keys + +In this event you will notice the `key` and `idempontencyKey` properties. They serve two different purposes. The `key` uniquely identifies the entity in the system. Systems often use personal information like account name or email address as a business key. However, in recent years this approach has been frowned upon as it can leak personal information beyond the confines of the trusted application. In this case, the application created a numbers-only [Nano ID](https://zelark.github.io/nano-id-cc/) to be the Guest’s business key. + +The other key, `idempotencyKey`, optionally tells Evently that this append may be seen more than once, and it should ignore duplicates. The value, generated on the client, must be universally unique, so use Nano IDs or UUIDs for this key. + +###### Atomicity + +The request body also has the selector object that identifies the `selectorId` and Ledger `mark` to verify that no new matching events have been appended to the Ledger. If the selector is quiescent, Evently will append the event. Atomic append does not block other unrelated events from being appended to the Ledger; it only controls events that match the filter selector definition after the Ledger mark. + +###### Meta and Data + +The `data` property contains the event-specific data. It can be any JSON value, even simple `true` and `false`. It usually presents as an object, as most events have more than one property they collect. + +Another valuable part of the request body is the `meta` field. This field provides a place to store application-relevant, cross-cutting information about the event. Typical properties are causation ID, correlation ID, actor, and device ID. Applications can fetch events by `meta` values using the same SQL JSONPath language as `data` to fetch events with [filter selectors](https://evently.cloud/api/#operation/get-filter-selector-lookup). + +#### GPS Notifications + +The Event Model calls for a mobile app that can notify the system the whereabouts of the Guest. + +![lat-long](lat-long.png) + +The developer knows that these events are often sent while a mobile device is transitioning from hotel WiFi to the mobile provider’s network. The connection may be difficult to maintain, and event append requests could be lost. The model allows many location events to be sent in any order, relieving the application of tracking entity state with selector-fed read models. + +##### Factual Append with Idempotency + +The mobile device does not need to compute a read model before emitting a location event, so it can send an event as a [simple fact](https://evently.cloud/api/#operation/post-append-fact-form). + +```http +POST https://preview.evently.cloud/append/fact +Content-Type: application/json +Authorization: Bearer + +{ + "entity": "Guest", + "event": "Guest Located", + "key": "96545681912005716892", + "meta": { + "deviceId": "mobile-device-id" + }, + "data": { + "lat": 50.04836, + "long": 8.56790 + } +} +``` + +Factual events are cheap and easy to append to a Ledger. They have been designed for IoT scenarios where the application does not need to hydrate state before processing a command. + +## Testing + +People enjoy writing unit tests for Event Model implementations because the test setup and execution does not rely on mocking services or storage systems. However, integration testing does require system state to be present and manipulable in a sandbox to ensure all the connections between components function correctly. + +![testing](testing.png) + +Evently plays its part in integration testing with the development Ledger type. Development Ledgers can be reset to a specific Ledger mark or event ID, or reset completely to an empty state. (In the current Evently preview, all Ledgers are development ledgers.) Evently integration test should follow this workflow: + +1. [Reset the Ledger](https://evently.cloud/api/#operation/get-reset-ledger-form) to the beginning or to a specific event ID / Ledger mark. +2. Set up starting state by appending factual events. +3. Execute tests. The tests will select events for read models and projections, and append events to the Ledger as part of their normal operation. +4. Select events for verification. The test can then select appropriate events using replay and filter selectors to ensure the right events were appended in the right order. + +Once the testing has passed, the code is ready for use. In production Evently has permanent Ledgers that cannot be reset. They operate the exact same way as development Ledgers, so only the access token needs to be switched to the permanent Ledger at runtime. + +### Coming Soon… + +Evently is currently in preview mode, and only offers the development Ledger. However, new capabilities like permanent Ledgers will be available in 2022, so [sign up](https://evently.cloud/#signup-form-container) for your access token and start learning now! Evently offers a couple of [tutorials](https://evently.cloud/tutorials/thermostat/) to get you going. diff --git a/content/posts/event-modeling-to-evently/lat-long.png b/content/posts/event-modeling-to-evently/lat-long.png new file mode 100644 index 0000000000000000000000000000000000000000..63f1314118ddcfcd56f99d51298f2f07ac3967eb GIT binary patch literal 39572 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 Q>Hq)$07*qoM6N<$f?7^NF#rGn literal 0 HcmV?d00001 diff --git a/content/posts/event-modeling-to-evently/testing.png b/content/posts/event-modeling-to-evently/testing.png new file mode 100644 index 0000000000000000000000000000000000000000..292853e47addfba66043ae383f83c1a7df1a0bf7 GIT binary patch literal 18114 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 Vn6tnDk Date: Mon, 27 Dec 2021 13:33:03 -0800 Subject: [PATCH 2/2] renamed post. Clarify that selector components. --- .../cleaning-schedule.png | Bin .../guest-registration.png | Bin .../index.md | 8 ++++---- .../lat-long.png | Bin .../testing.png | Bin 5 files changed, 4 insertions(+), 4 deletions(-) rename content/posts/{event-modeling-to-evently => event-modeling-with-evently}/cleaning-schedule.png (100%) rename content/posts/{event-modeling-to-evently => event-modeling-with-evently}/guest-registration.png (100%) rename content/posts/{event-modeling-to-evently => event-modeling-with-evently}/index.md (92%) rename content/posts/{event-modeling-to-evently => event-modeling-with-evently}/lat-long.png (100%) rename content/posts/{event-modeling-to-evently => event-modeling-with-evently}/testing.png (100%) diff --git a/content/posts/event-modeling-to-evently/cleaning-schedule.png b/content/posts/event-modeling-with-evently/cleaning-schedule.png similarity index 100% rename from content/posts/event-modeling-to-evently/cleaning-schedule.png rename to content/posts/event-modeling-with-evently/cleaning-schedule.png diff --git a/content/posts/event-modeling-to-evently/guest-registration.png b/content/posts/event-modeling-with-evently/guest-registration.png similarity index 100% rename from content/posts/event-modeling-to-evently/guest-registration.png rename to content/posts/event-modeling-with-evently/guest-registration.png diff --git a/content/posts/event-modeling-to-evently/index.md b/content/posts/event-modeling-with-evently/index.md similarity index 92% rename from content/posts/event-modeling-to-evently/index.md rename to content/posts/event-modeling-with-evently/index.md index 34e31ce..696cf7b 100644 --- a/content/posts/event-modeling-to-evently/index.md +++ b/content/posts/event-modeling-with-evently/index.md @@ -1,6 +1,6 @@ --- title: "Event Modeling With Evently" -date: 2021-12-25 +date: 2021-12-27 description: "Learn how to design your Event Model implementation with Evently as the Event Ledger." keywords: [Evently, Ledger, Design, Implementation, Testing] author: mattbishop @@ -179,18 +179,18 @@ Factual events are cheap and easy to append to a Ledger. They have been designed ## Testing -People enjoy writing unit tests for Event Model implementations because the test setup and execution does not rely on mocking services or storage systems. However, integration testing does require system state to be present and manipulable in a sandbox to ensure all the connections between components function correctly. +People enjoy writing unit tests for Event Model implementations because test setup and execution does not rely on mocking services or storage systems for the purely-functional Command handlers, process managers and read models. However, integration testing does require system state to be present and manipulable in a sandbox to ensure all the connections between components function correctly. ![testing](testing.png) -Evently plays its part in integration testing with the development Ledger type. Development Ledgers can be reset to a specific Ledger mark or event ID, or reset completely to an empty state. (In the current Evently preview, all Ledgers are development ledgers.) Evently integration test should follow this workflow: +Evently plays its part in integration testing by offering development Ledgers. Development Ledgers can be reset to a specific Ledger mark or event ID, or reset completely to an empty state. (In the current Evently preview, all Ledgers are development ledgers.) Evently integration testing can follow this workflow: 1. [Reset the Ledger](https://evently.cloud/api/#operation/get-reset-ledger-form) to the beginning or to a specific event ID / Ledger mark. 2. Set up starting state by appending factual events. 3. Execute tests. The tests will select events for read models and projections, and append events to the Ledger as part of their normal operation. 4. Select events for verification. The test can then select appropriate events using replay and filter selectors to ensure the right events were appended in the right order. -Once the testing has passed, the code is ready for use. In production Evently has permanent Ledgers that cannot be reset. They operate the exact same way as development Ledgers, so only the access token needs to be switched to the permanent Ledger at runtime. +Once the testing has passed, the code is ready for use. For production uses, Evently has permanent Ledgers that cannot be reset. They operate the exact same way as development Ledgers, so only the access token needs to be switched to the permanent Ledger at runtime. ### Coming Soon… diff --git a/content/posts/event-modeling-to-evently/lat-long.png b/content/posts/event-modeling-with-evently/lat-long.png similarity index 100% rename from content/posts/event-modeling-to-evently/lat-long.png rename to content/posts/event-modeling-with-evently/lat-long.png diff --git a/content/posts/event-modeling-to-evently/testing.png b/content/posts/event-modeling-with-evently/testing.png similarity index 100% rename from content/posts/event-modeling-to-evently/testing.png rename to content/posts/event-modeling-with-evently/testing.png