Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture by Tomasz Jaskula & Vaughn Vernon
Author:Tomasz Jaskula & Vaughn Vernon [Tomasz Jaskula]
Language: eng
Format: epub
Publisher: Addison-Wesley Professional
Published: 2021-10-27T16:00:00+00:00
Figure 6.3 A Shared Kernel named Monetary includes Money and other monetary types.
Note that Figure 6.3 does not indicate that Monetary is a separate Bounded Context. It is notâbut it is also not just a library. Monetary is a portion of a model that at least two teams agree to share. To make this point clearer, a Money object or record is not persisted by the Monetary model. Rather, the Bounded Contexts that share and consume the Monetary model are responsible for persisting Money values in their own separate storages. That is, Underwriting persists any Money values in its owned data storage, and Risk persists any Money instances in its separately owned data storage.
Such shared models are important in other domains as well. For example, consider equities trading that supports fixed bid prices for buy trades by collecting share prices across several sell orders, which together average out to the fixed price of the buy. This model concept is sometimes referred to as a âquote bar.â It could be part of a Shared Kernel that provides common trading components in a model that is consumed by various specialty trading subdomains.
Another potential problem arises with the use of national or international coding standards. For instance, the medical and healthcare domains use ICD-10 codes, which are recognized in nearly 30 nations for billing and reimbursement collection purposes. More than 100 nations use ICD-10 codes for reporting statistics on causes of death. These kinds of standards form natural Shared Kernel models.
One common mistake is to consider some kinds of information (such as events) exchanged between Bounded Contexts to be a Shared Kernel. This is not typically the case because often an event, when received by a consuming Bounded Context, is translated into a command or a query at the outer boundary. When this kind of translation occurs, the specific external event type is never known at the heart of the consuming Bounded Contextâthat is, in its domain model. Performing a translation from an external language to the local language means that the external language is not consumed as an acceptable language for the local context. Because it is not part of the local contextâs Ubiquitous Language, it is not shared between two contexts.
The local domain model treats a truly shared type, such as money, as if it were part of its Ubiquitous Language. If an external event were permitted to have meaning in the local domain model, then it might be considered part of a Shared Kernel. Thatâs actually not a good practice because it creates a strong coupling between the producer and the consumer of such events. Translating from the external event to an internal command is a better choice.
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
API Testing and Development with Postman by Dave Westerveld(3645)
Learning C# by Developing Games with Unity 2020 by Harrison Ferrone(2641)
Software Architecture for Busy Developers by Stéphane Eyskens(2345)
2021 Beginners Guide to Python Programming Language: A Crash Course to Mastering Python in One Hour by Elmer Gary & Elmer Gary(1884)
Machine Learning for Algorithmic Trading by Stefan Jansen(1632)
Hands-On ROS for Robotics Programming by Bernardo Ronquillo Japón(1576)
Delphi GUI Programming with FireMonkey by Andrea Magni(1457)
Game Development Projects with Unreal Engine by Hammad Fozi & Goncalo Marques & David Pereira & Devin Sherry(1403)
Cloud Native with Kubernetes by Alexander Raul(1377)
Datadog Cloud Monitoring Quick Start Guide by Thomas Kurian Theakanath(1348)
Software Architecture Patterns for Serverless Systems by John Gilbert(1339)
Practical Node-RED Programming by Taiji Hagino(1336)
Automate It with Zapier by Kelly Goss(1321)
Practical System Programming for Rust Developers by Prabhu Eshwarla(1312)
Delphi Programming Projects by William Duarte(1297)
Mastering React Test-Driven Development by Daniel Irvine(1290)
Developing Multi-Platform Apps with Visual Studio Code by Ovais Mehboob Ahmed Khan & Khusro Habib & Chris Dias(1255)
Ghidra Software Reverse Engineering for Beginners by A. P. David(1245)
Learn Spring for Android Application Development by S. M. Mohi Us Sunnat(1236)
