This week’s pattern is the sidecar. Named after the device that attaches to a bicycle or motrocycle, this architectural pattern describes components of applications that are independent from a main application that have access to the same resources and support the main application much like the vehicular sidecar.
Vehicular sidecars were originally invented to allow for safely carrying an additional passenger. Design pattern sidecars in some ways provide support of an “additional passenger” through isolating the different components that may be designed and architected by different teams, for example when a development teams works on an application, and an SRE team works on the monitoring for that application. While the different components need access to the same shared resources, and should share the same lifecycle, they may need different runtimes, languages, or be developed and deployed in isolation from each other. Other than monitoring, this pattern is often used for logging, configuration, discovery, and general health checks.
💡 Sidecars can be used to implement circuit breakers.