That being said, there are other complementary ways for future-proofing systems than just storing the past. e.g. #ResidualityTheory and collaborative upfront modeling like #ScalableModeling.
Latest posts tagged with #ScalableModeling on Bluesky
That being said, there are other complementary ways for future-proofing systems than just storing the past. e.g. #ResidualityTheory and collaborative upfront modeling like #ScalableModeling.
The #ScalableModeling approach now covers new section: "Implementing Logic", bridging "sticky notes" (๐ช๐ฉ) to scalable, tech-agnostic functions.
๐ฉ Command Models
๐ช Command & Event Handlers
๐ช Gatekeepers
Stateless functions for clear, structured business logic.
roikonen.github.io/scalablemode...
Unlike #CQRS, in #CEQS model separation (command vs. query) isn't strictly enforced from day one. Immutable streams of private events facilitate this separation on-demand later (increased complexity, scalability, usability). Model separation isn't always needed. #ScalableModeling #EDA #EventCentric
Core domains in modern scalable operational systems should embrace business/domain events over Change Data Capture (CDC). Domain-Driven Design and Event-Driven Architecture pave the way for creating future-proof systems.
#DDDesign #EventCentric #EventDriven #EDA #EventSourcing #ScalableModeling
Spatial thinking with #microservices breaks when considering:
โฑ๏ธ ๐ง๐ถ๐บ๐ฒ: Services evolve as they react.
๐ ๐ง๐๐ฟ๐ฏ๐๐น๐ฒ๐ป๐ฐ๐ฒ: Networks lose messages.
๐ฆ๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐ ๐ฎ๐ฐ๐ ๐ถ๐ป ๐๐ถ๐บ๐ฒ, evolving as they work.
๐ ๐ฒ๐๐๐ฎ๐ด๐ฒ๐ ๐ฎ๐ฐ๐ ๐ถ๐ป ๐๐ฝ๐ฎ๐ฐ๐ฒ, moving between services.
Focus on message flow over service placement.
#ScalableModeling
In #ScalableModeling, the Command and Query models share the same green color because, in #EventCentric thinking, they both are just different projections of same events. Their consistency models do usually differ, but even thatโs not always the case.
"๐๐ฉ'๐จ ๐๐๐ซ๐๐ก๐ค๐ฅ๐๐ง (๐ข๐๐จ)๐ช๐ฃ๐๐๐ง๐จ๐ฉ๐๐ฃ๐๐๐ฃ๐ ๐ฉ๐๐๐ฉ ๐๐๐ฉ๐จ ๐ง๐๐ก๐๐๐จ๐๐, ๐ฃ๐ค๐ฉ ๐ฉ๐๐ ๐๐ญ๐ฅ๐๐ง๐ฉ๐จ' ๐ ๐ฃ๐ค๐ฌ๐ก๐๐๐๐."
โ ๐๐ญ๐ฃ๐ฆ๐ณ๐ต๐ฐ ๐๐ณ๐ข๐ฏ๐ฅ๐ฐ๐ญ๐ช๐ฏ๐ช
Understanding the domain is crucial for an accurate model. Event-centrism aids domain discovery, and event immutability is key to #ScalableModeling.
#DDD #EventStorming @avanscoperta.bsky.social
Scalability Challenge 3/3: Time Travel โฑ๏ธ
In #DistributedSystems, data often appears at different points in time due to inevitable consistency delays. To manage this โtime travelโ effect and maintain system integrity, versioning and clear cause-effect flows are essential. #ScalableModeling
Scalability challenge 2/3: Tailoring Consistency โ๏ธ Strong consistency is the wrong default. Tailoring consistency helps optimize performance without compromising integrity. #DistributedSystems #Scalability #EventSourcing #EventCentric #ScalableModeling
Scalability challenge 1/3: Deduplication ๐ฏโโ๏ธ Exactly-once delivery is unachievable in distributed systems, so we rely on effectively-once or idempotent processing to ensure duplicate messages donโt affect outcomes. #DistributedSystems #Scalability #ScalableModeling
Querying the command model in #CQRS is often debated. While itโs not designed for querying, limited reads can be useful โ e.g. in clustered, in-memory models (Akka-style) for quick state access post-update. Still, querying should be rare and justified. #ScalableModeling
The ๐๐ต๐ฟ๐ฒ๐ฒ ๐ฑ๐ถ๐บ๐ฒ๐ป๐๐ถ๐ผ๐ป๐ ๐๐ผ ๐๐ฐ๐ฎ๐น๐ฎ๐ฏ๐ถ๐น๐ถ๐๐ via AKF Scale Cube:
1๏ธโฃ ๐๐ฒ๐ฐ๐ผ๐บ๐ฝ๐ผ๐๐ถ๐๐ถ๐ผ๐ป: Scale by splitting different things.
2๏ธโฃ ๐๐๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป: Scale by cloning data or instances.
3๏ธโฃ ๐ฃ๐ฎ๐ฟ๐๐ถ๐๐ถ๐ผ๐ป๐ถ๐ป๐ด: Scale by splitting similar things into many partitions.
#ScalableModeling helps you to reach all of the three dimensions.
Core components of #ScalableModeling:
๐ฌ ๐๐ผ๐บ๐บ๐ฎ๐ป๐ฑ: Initiates actions
๐ฉ ๐๐ผ๐บ๐บ๐ฎ๐ป๐ฑ ๐ ๐ผ๐ฑ๐ฒ๐น: Validates commands
๐ง ๐ฃ๐ฟ๐ถ๐๐ฎ๐๐ฒ ๐๐๐ฒ๐ป๐: Captures internal changes
๐ฉ ๐ค๐๐ฒ๐ฟ๐ ๐ ๐ผ๐ฑ๐ฒ๐น: Optimizes data retrieval
๐ ๐ค๐๐ฒ๐ฟ๐: Requests information
๐ช ๐ฃ๐ผ๐น๐ถ๐ฐ๐: Defines business rules
๐ฅ ๐ฃ๐๐ฏ๐น๐ถ๐ฐ ๐๐๐ฒ๐ป๐: Communicates changes externally
๐ฆ๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ ๐ถ๐ ๐๐น๐๐ถ๐บ๐ฎ๐๐ฒ๐น๐ ๐ฎ ๐บ๐ผ๐ฑ๐ฒ๐น โ a conceptual solution that, while invisible, solves real-world challenges. In software engineering, the key steps are:
๐ช๐๐ฌ: Understand the purpose
๐ช๐๐๐ง: Design the conceptual model
๐๐ข๐ช: Implement the solution
#ScalableModeling bridges WHY to HOW, with ๐ณ๐ผ๐ฐ๐๐ ๐ผ๐ป ๐ช๐๐๐ง.
โDoing the ๐๐ฟ๐ผ๐ป๐ด ๐๐ต๐ถ๐ป๐ด ๐ฟ๐ถ๐ด๐ต๐ is not nearly as good as doing the ๐ฟ๐ถ๐ด๐ต๐ ๐๐ต๐ถ๐ป๐ด ๐๐ฟ๐ผ๐ป๐ด.โ ๐๐ถ๐ด๐ด๐ฆ๐ญ๐ญ ๐. ๐๐ค๐ฌ๐ฐ๐ง๐ง
We often focus more on ๐๐ข๐ช (to implement) than ๐ช๐๐ฌ and ๐ช๐๐๐ง. For long-term velocity and quality, we need to shift focus left. #ScalableModeling bridges WHY to HOW, with ๐ฒ๐บ๐ฝ๐ต๐ฎ๐๐ถ๐ ๐ผ๐ป ๐ช๐๐๐ง.
After 10 years in software #Scalability & #DistributedSystems, I'm celebrating by gathering what Iโve learned into a webpage on a modeling technique for scalable systems โ called #ScalableModeling ๐ค. Hope it helps!
roikonen.github.io/scalablemode...
#CQRS #EventSourcing #DDD #EventStorming