DDD Weekly: Issue #40

July 31, 2017

You are also opting in for interesting, DDD-related emails from buildplease.com

Exploiting Relationship Graphs to Isolate Tenant Data [video] Dian Fay. Multi-tenant database architecture is a common and intuitive strategy for supporting many clients in the enterprise software world: everyone’s using the same software, everyone’s data fit the same schema, and it’s much easier to manage one database than dozens or hundreds. But implicit in this is the assumption that each client is using the same version of the same software and schema, which is either fixed forever or under the vendor’s complete control. When this assumption no longer holds, how can we accommodate a client who wants to strike out on their own – without making export management a recurring chore for backend developers?

Hexagonal Architecture and Free Monad: Two related design patterns? [blog] Quentin Duval. In today’s post, we will explore this architecture through an example, describe it, and relate it to Free Monads, a well-know and pretty popular pattern in typed functional programming languages to build Domain Specific Languages.

Technology Culture at OVO [blog] Ed Conolly. Autonomy has become a bit of a hot topic in technology, and there are of course varying levels on offer, so it’s worth clarifying at this point to what extent we believe in autonomy and how it manifests itself in decentralised decision making. There are two high level elements of autonomy on offer if you work in a cross-functional feature team - technical autonomy and product autonomy.

Span [blog] Adam Sitnik. tl;dr Use Span to work with ANY kind of memory in a safe and very efficient way. Simplify your APIs and use the full power of unmanaged memory!

Capture - Embed - Protect, Guidelines for Domain-Driven Design [blog] Jan Stenberg via Steven A. Lowe. When using the core philosophy and the practices of Domain-Driven Design (DDD) as guidelines for software design and development, they can be summarized in three principles: Capture – Embed – Protect, Steven A. Lowe claimed in his presentation at this year’s DDD eXchange conference. We capture the domain model by understanding just enough to take positive actions. We embed the model in the code and in the conversations. We protect the domain model from corruption from other domains, especially technical ones.

Event Sourcing - Architectures and Patterns [blog] Matt Ho. Event sourcing and other applications of append-only logs have experienced a renaissance in recent years. From git, to Kafka, to block chains, the use of append-only logs is on the rise.

The challenges of monitoring a distributed system [blog] Mike Minutillo. System monitoring is important, but that isn’t news to anyone. The problem is that, without a standard methodology, monitoring is a challenge, especially when dealing with distributed systems. Gathering data can flood you with information that doesn’t necessarily help you identify what needs to be fixed at the right time.

Task Queue Implementation Pattern [paper] Ekaterina Gonina (Author), Jike Chong (Shepherd), UC Berkeley ParLab. Some applications can be broken down into variable length tasks to be executed concurrently. How do we efficiently load balance the tasks among processing elements in such applications?

From human decisions, to suggestions to automated decisions [blog] Jef Claes. Me, my dad and my grandfather in turn have been performing the chore of handling returns and refunds. This domain of the open source shop is very much underdeveloped. Even something as simple as looking up a customer’s details and order history, requires scanning multiple pages of information or even querying the database by hand. Making a well-informed decision takes up way more time than it should.

Composite UIs for Microservices - A Primer [blog] Jimmy Bogard. Microservices can be easy, if we never have to compose, orchestrate, or otherwise integrate between multiple services. If our inter-service communication is low, we can piecemeal a solution based on basic integration patterns such as messaging.

Failing at Microservices [blog] Richard Clayton. Microservices are the new fad in software architecture, and while I think they are generally the correct philosophy to take with service design and composition, the pattern can certainly lead you quickly into trouble. If you don’t know what Microservices are, I recommend reading the article written by Jame Lewis and Martin Fowler on the topic. In this post, I intend to provide some observations from my experience recently implementing and maintaining a microservice architecture.

Who should own your engineering team’s skill debt? [blog] Oren Ellenbogen. Our competitive advantage will always be in the way we designed our organization to work together and adjust, rather than the architecture implemented for the current solution. Reducing skill debt is about investing time in communication and building trust just as much as it is about gaining certain knowledge and experience.

Patterns of Event Stream Processing: An Interactive Exploration of Session Windows [blog] Michael Drogalis. Patterns of Event Stream Processing is a series of articles surveying concepts that underpin streaming systems. In this post, we’ll study a technique called session windowing that’s used for grouping related data over a period of time. We’re going to look at what they are, what they’re used for, and why they’re hard to build from scratch. We’ll finish with our suggested design pattern for building session windows in a scalable manner.

Best-in-class Microservices and Domain-Driven Design conference and workshops in the U.S.!! Explore DDD 2017 (Denver, September 19-22, 2017) [blog] Cesar de la Torre. Explore DDD 2017 is a brand-new Domain-Driven Design (DDD)-centric conference, September 19-22 2017 at the Grand Hyatt hotel, in downtown Denver, Colorado, USA. I’m not directly related to this conference, but I wanted to provide some support/awareness because this type of quality events is fundamental for the development and software architecture community.