Design patterns for container-based distributed systems
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
- Single-container management patterns Provide “upward direction” rich set of interfaces for Application specific monitoring matrices and “downward direction” lifecycle apis.
- 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.
- 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.
- Leader election i.e zooKeeper
- Work queue i.e sqs
- scatter/gather i.e apache-camel