This week, I read “Design patterns for container-based distributed systems” Design-patterns-distributed-systems-link paper published by google research. Paper explains how we can apply OOPS patterns to container-based systems.

Patterns are grouped in the following categories

  1. Single-container management patterns Provide “upward direction” rich set of interfaces for Application specific monitoring matrices and “downward direction” lifecycle apis.
  2. Single-node, multi-container application patterns
    • Sidecar pattern extend or enhance existing container. i.e container for logging. Sidecar pattern is feasible because extended container on a Single-node can share disk.
    • Ambassador pattern proxy communication to and from main containers. i.e proxy for sharded memcache nodes. Ambassador pattern is feasible because containers on the same machine share same localhost.
    • Adopter pattern Opposite of Ambassador pattern. It provides simplified view to the outside world.
  3. Multi-node application patterns Facilitates easy use of generic, boilerplate code to support following patterns as a reusable generic container. Developer can supply specific implementation and experts can provide complex implementation for the following algorithms.