The “ports and adapters” architecture (aka “hexagonal architecture”)

Atomikos is designed along the ports and adapters/hexagonal architecture as described here by Alistair Cockburn.

Among other things, this means that it is relatively easy to:

  • Implement new transaction APIs / standards / models
  • Add new types of two-phase commit resources

Examples of things we’ve been able to realize thanks to this:

  • JTA (port) / XA (adapter)
  • TCC (port/adapter)
  • RMI (port/adapter)
  • WS-AT (port/adapter)
  • CORBA’s OTS (port/adapter)
  • TaaS - Transactions for REST (port/adapter)

The port and adapter model is also an important concept in the new book Implementing Domain-Driven Design. Our domain is 2-phase commit. Our adapter is our Participant model. Our ports are all the ways you can interact with our core system.

Comments are closed.