Microservice architectures are all the rage these days, but what’s really important for long-term maintainability is modularity. It isn’t necessary to use a network boundary to create such modules. Indeed, when exploring an unfamiliar business domain, it won’t immediately be obvious where the boundaries lie between those modules.
There is also a separation of concerns between the layers. The hexagonal architecture describes one way in which to accomplish this and is common practice while developing domain-driven apps. However, ensuring that business logic doesn’t leak between the layers can take a lot of effort.
Dan Haywood explains how he and a tiny one-and-a-bit-pizza team used Apache Isis—an implementation of the naked objects architectural pattern—to build an invoicing system, Estatio, for a real-estate company that owns and operates shopping centers across four countries. The “naked objects” bit provides rigid architectural constraints, preventing business logic leaking into adjacent layers. But the framework also provides a number of powerful tools to ensure that the modules within the domain layer itself are also decoupled from each other.
You’ll see what an Apache Isis app looks like in the flesh and learn how Dan and his team manage to keep it modular—a modular monolith.
Dan Haywood is a freelance consultant, developer, writer, and trainer specializing in domain-driven design, Agile development, enterprise architecture, and REST, on the Java and .NET platforms. Dan is known as an advocate of the naked objects pattern and is the lead committer to Apache Isis, a Java framework that implements the naked objects pattern. He also works (for a client) on Estatio, an open source app that runs on top of Isis. You can find Estatio up on GitHub. Dan was instrumental in the success of the first large-scale naked objects system, which administers state benefits for citizens in Ireland, and he continues to serve as an advisor to the government. (The system has over 2,000 users and pays out over €5B a year in benefits.) Dan’s most recent open source work is the Restful Objects specification, which defines a hypermedia API for exposing domain object models. He is also a committer on Restful Objects.NET, an implementation for .NET on ASP.NET MVC. Dan is a regular presenter at various conferences and has written a good number of online and print articles. He’s also written a couple of books, including Domain Driven Design Using Naked Objects and Better Software Faster on the effective use of TogetherJ. Previously, Dan worked at Sybase UK, specializing in performance-n-tuning.
©2018, O’Reilly UK Ltd • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org