CHAPTER 16 Adapter Problem Solution Containers allow us to package and run applications written in different libraries and languages in a unified way. Today, it is common to see multiple teams using different technologies and creating distributed systems composed of heterogeneous compo‐ nents. This heterogeneity can cause difficulties when all components have to be treated in a unified way by other systems. The  Adapter  pattern offers a solution by hiding the complexity of a system and providing unified access to it. The  Adapter  pattern takes a heterogeneous containerized system and makes it con‐ form to a consistent, unified interface with a standardized and normalized format that can be consumed by the outside world. The  Adapter  pattern inherits all its char‐ acteristics from the  Sidecar , but has the single purpose of providing adapted access to the application. The best way to illustrate this pattern is through an example. A major prerequisite for successfully running and supporting distributed systems is providing detailed moni‐ toring and alerting. Moreover, if we have a distributed system composed of multiple services we want to monitor, we may use an external monitoring tool to poll metrics from every service and record them. However, services written in different languages may not have the same capabilities and may not expose metrics in the same format expected by the monitoring tool. This diversity creates a challenge for monitoring such a heterogeneous application from a single monitoring solution that expects a unified view of the whole system. With the Adapter  pattern, it is possible to provide a unified monitoring interface by exporting 135