Description

The original definition [Evans03, p. 365]:

”” Create an isolating layer to provide clients with functionality in terms of their own domain model. The layer talks to the other system through its existing interface, requiring little or no modification to the other system. Internally, the layer translates in both directions as necessary between the two models. “” — Eric Evans
Domain Driven Design

Experiences

Here are some real-life experiences:

  • Anticorruption layer for a search-index to defer the decision if the best performance can be achieved with Elastic Search, Solr or a self-developed Lucene index.

Applicability

Apply this pattern when clients shall be protected from internal changes in a module or subsystem.

Consequences

  • Allows to (ex)change software elements without affecting depending components
  • Introduces one more level of indirection and thus may increase complexity

Also Known As

  • Isolation layer

References

  • Isolate Changes, as an alternative or complimenting approach
  • Bulkhead, introduces stability boundaries within applications or systems by segmenting runtime resources.