Deep dive into the Published Language

Some thoughts:

DDD re-distilled – Speaker Deck: Published Language as a free team relationship and lowest team communication / independance.

Unshackling Integration: Part 1 – Moving Beyond Canonical Data Models – Knowledge base / Blog – webMethods – Software AG Tech Community & Forums: very interesting:

  • ‘As systems evolve the canonical model needs to evolve’ – how to do that with industry standards governed by a consortium?
  • Microservices, with their decentralized nature focus on individual services, with these parts promoting autonomy and scalability, challenging the dominance of central created and maintained integrations.
  • Any change to a CDM is complex because of the dependencies this has with all other integrations relying on these
  • As such, CDMs are typically centrally controlled and governed which creates an anti-pattern to agility as you become reliant on a central implementation and commonly a central controlling team with a lot of governance and maintenance overhead which creates a bottleneck, and results in slower integration speeds.
  •  A good API only takes in the data it needs and returns the subset of data associated with this. If you’re creating an API that uses canonicals, this typically would go against good practice, as both APIs and especially Microservices advocate for smaller , and self-container services, making a CDM unpractical.
  • Data transferred should be kept to a minimum, to avoid the pitfalls of global internet communication links such as bandwidth, data transfer speeds and latency. Information security practices would also state to only transfer the information needed as this reduces risk.
  • ‘one size fits all’ canonical model…. Designing contracts are now often a domain-driven initiative, giving the owners of each domain the decision-making rights,
  • Use API when you’re going outside of boundaries, not when you’re already inside!

Why is a Canonical Data Model an Anti Pattern | by Teiva Harsanyi | Medium: see also comments – Canonical model as described in the EIP is for integrations, not for microservices. Enterprise integrations apply very different patterns than microservices or DDD. In microservices, a canonical model is indeed an antipattern, but at the integration layer it is quite useful in many scenarios.

Data Modeling i API First vs Canonical Data Modeli… – Google Cloud Community

Zimmermann:

Using the same DATA ELEMENT structures across an entire API or a set of in-house services allows for easier composition of the services. Enterprise Integration Patterns
calls such an approach a “Canonical Data Model” but advises to handle it with care [Hohpe 2003]. One can consider microformats [Microformats 2022] in such a standardization effort. (searched for ‘ Published Language’.)

Lees ook Evans nog eens goed door! –

Remember, the PUBLISHED LANGUAGE must be stable, yet you’ll still need the freedom to change the
host’s model as you continue your relentless refactoring. Therefore, do not equate the interchange
language and the model of the host. Keeping them close together will reduce translation overhead,
and you may choose to make your host a CONFORMIST.

Domain-Driven Design in Practice — Experience with Context Mapper (ozimmer.ch)

DDD.14 – Maintaining model integrity – @hgraca (herbertograca.com) zie ook open host service

Domain-Driven Development: Part 2 – TDAN.com

Published Language – Domain-driven Design: A Practitioner’s Guide (ddd-practitioners.com) – slechte voorbeelden!

Eric Evans at Domain-Driven Design Europe 2019 explains the different bounded context types and their relation with microservices | Packt Hub (packtpub.com): interchange context – do not anticipate, but let the need for it come upon it – this context does not correspond to a service: https://youtu.be/yPvef9R3k-M?si=Dnn6NJPI0g9srXOQ&t=1703

GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf (domainlanguage.com):

However, these industry standards are designed by committee and are usually cumbersome. Their generality robs them of expressiveness. And, of course, you
can’t change them.

Wittgenstein?

Tensions when Designing Evolvable Bounded Contexts (verraes.net): interesting discussion on interfaces, contexts and evolvability

interface bounded context:    Patterns on Deriving APIs and their Endpoints from Domain Models (acm.org) zie ook ZIO folder

Integration Strategy – One Business Object Model across whole enterprise? : r/EnterpriseArchitect (reddit.com): discussions

Avoid a Canonical Data Model – InfoQ: Don’t push models onto teams; instead let them pull a model into their context when they see a value in doing so.

Defining Bounded Contexts — Eric Evans at DDD Europe – InfoQ: integration context

SAP’s One Domain Model and Domain Driven Design – SAP Community

Harnessing DDD Aggregates with GraphQL: A Deep Dive – DEV Community

Post | LinkedIn: private and public events (https://www.linkedin.com/posts/oskardudycz_i-extremely-dislike-the-split-of-domain-activity-7119331094696476672-1x6r/)

https://www.linkedin.com/feed/update/urn:li:activity:7119331094696476672?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7119331094696476672%2C7124209345445203968%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287124209345445203968%2Curn%3Ali%3Aactivity%3A7119331094696476672%29

see also Evans talk on interchange context on youtube!

https://www.linkedin.com/posts/vaughnvernon_dddesign-ddd-domaindrivendesign-activity-7197369692951384064-qQxV?utm_source=share&utm_medium=member_desktop (The above is based on a comment in this post)

https://eda-visuals.boyney.io/visuals/messages-between-bounded-context

Schemata | VLINGO XOOM interesting!!!

What Is a Canonical Data Model? CDMs Explained – BMC Software | Blogs

hohpe epub:

Messages between bounded context (boyney.io) system A conforms to PL

api = ohs: https://youtu.be/k5i4sP9q2Lk?si=oRPqSTUxuKQwsYR5&t=3061

dependend on the agenda of the provider: https://youtu.be/k5i4sP9q2Lk?si=JX7scHQjcwRvqTY5&t=3391

acls en ohs: Visualizing sociotechnical architectures with Context Maps – Speaker Deck

Book club at Codurance – Strategic monoliths and microservices: More than 100 nations use ICD-10 codes for reporting statistics on causes of death. These kinds of standards form natural Shared Kernel models. Is this bad? Maybe not: https://youtu.be/k5i4sP9q2Lk?si=dpUhI72l8le8au-q&t=2066 (partnership)

Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture by Vaughn Vernon | Goodreads: Throughout the book, the monolith and later or the modulith are the approaches recommended most of the time (modular monolith)

Opzet:

1 PL is een vreemde eend in de bijt – het is te beschouwen als een eigen bounded context (Evans vid en hier) en vergelijkingsmatrix met andere integratie patronen. Vergelijking met andere integratie patronen en gemapped op Conway’s Law: https://youtu.be/E6zhkC58XQ8?si=–qvpdcBc_Lk7ZEG&t=2807

2. Naming things – why published en niet public. Note that PL also refers to events.

api_ddd_grey_literature_based_gt.pdf (univie.ac.at): The PL of Domain Driven Design: A practitioner’s perspective

“A Practitioner’s Perspective on the Published Language in Domain-Driven Design”

“The Published Language of Domain-Driven Design: A Practitioner’s Insights”

“Applying the Published Language of Domain-Driven Design: A Practitioner’s View

Scroll to Top