Container Design Patterns for Distributed Systems