← Graph

Building uls for microservices

talk 27 connections

Ethan Garofolo's wroclove.rb 2019 talk on the UI implications of microservices. Framed as a 'questions talk' rather than an answers talk (quoting Claude Lévi-Strauss: 'the scientist is one who asks the right questions'). Defines a monolith as a data model (cramming many different domains behind one user ID), explains why simply splitting a monolithic data model across HTTP turns method calls into distributed-computing problems (the 'distributed monolith'), and redefines services by autonomy: services don't have GET APIs (that's just a database), don't depend on others, are oblivious to the rest of the system, and communicate via asynchronous messages — events (past-tense facts) and commands (imperative intent). Introduces the architecture pieces: services (action-packed 'lightning bolts'), an application layer (Express/Hapi/Django/Rails), a message store (Eventide, Rails Event Store, the Event Store project), aggregators producing read models / materialized views, and pub/sub messaging where publishers and consumers are mutually unaware. Uses a zebra/texture-map metaphor to warn that mapping MVC-CRUD thinking onto services produces a 'monstrosity' and articles like 'The Majestic Monolith'. Presents three UI patterns for an eventually consistent system, demonstrated with a 'video tutorials' sample app: (1) sometimes nothing is enough — don't wait (e.g. YouTube view counts); (2) stalling for time — hide async processing behind a static screen (e.g. 'check your email to confirm'); (3) embrace the evented model — accept bad input, record it as an event, then show different read-model views to different users (content creator sees the validation error; viewers keep the previous valid name). Emphasizes polling by command ID so the UI knows when a command has processed. Closes with recommendations to design the user experience first with business/UX, elevate validations into the domain, and read the Eventide project. Q&A covers when a command is considered processed (when the service produces its event), the UI complexity of per-field validation (task-driven UIs keep forms small), and migrating legacy data by seeding 'legacy foo imported' events as the start of new streams.

type
talk
talk Building uls for microservices
about
Redefines a monolith as a data model rather than a deployment unit.
talk Building uls for microservices
about
Warns that extracting a monolith over HTTP without changing access patterns yields a distributed monolith.
talk Building uls for microservices
about
Centers the definition of a service on autonomy.
talk Building uls for microservices
about
Explains past-tense events and imperative commands as the two message flavors between services.
talk Building uls for microservices
about
Message Store concept
Introduces message stores as the pub/sub transport for events and commands.
talk Building uls for microservices
about
Aggregator concept
Describes aggregators shaping event streams into read models.
talk Building uls for microservices
about
Presents the 'don't wait' UI pattern with a YouTube-style view count example.
talk Building uls for microservices
about
Presents the swan-metaphor UI pattern using email confirmation/registration as an example.
talk Building uls for microservices
about
Presents the accept-bad-input + per-audience-view UI pattern using the video name example.
talk Building uls for microservices
about
Task-Driven UI concept
Advocates task-driven UIs instead of giant edit-everything forms.
talk Building uls for microservices
about
CQRS concept
References the CQRS pattern when explaining how aggregators shape different views per audience.
talk Building uls for microservices
about
Event Sourcing concept
Discusses events literally becoming the state of the system.
talk Building uls for microservices
about
Invokes DDD's ubiquitous-language idea to justify defining shared terms up front.
talk Building uls for microservices
about
Eventide project
Cites Eventide and its Postgres-backed message store as an example implementation.
talk Building uls for microservices
about
Cites Rails Event Store (Arkency / Andrzej) as an example message store.
talk Building uls for microservices
about
Cites Greg Young's Event Store project as an example message store.
talk Building uls for microservices
about
Quotes Aaron Patterson's 'distributed computing problems' line to skewer the distributed monolith.
asked_at
Building uls for microservices talk
Asked in Q&A after the talk.
asked_at
Building uls for microservices talk
Asked in Q&A after the talk.
asked_at
Building uls for microservices talk
Asked in Q&A after the talk by an attendee from a commercial real-estate company.
authored
Building uls for microservices talk
Garofolo delivered this talk at wroclove.rb 2019.
from_talk
Building uls for microservices talk
Closing recommendation of the talk.
from_talk
Building uls for microservices talk
Core warning of the talk, illustrated by the zebra/texture-map metaphor.
from_talk
Building uls for microservices talk
Extracted from the embrace-the-evented-model section on validations.
from_talk
Building uls for microservices talk
Stated before the video-upload validation example.
from_talk
Building uls for microservices talk
Closing recommendation of the talk.
talk Building uls for microservices
presented_at
Talk delivered at the 2019 edition of wroclove.rb.

Provenance

Created
2026-04-17 16:17 seed
Read by
26 extractions