The Doppler Quarterly Special Edition 2019 | Page 72

Lesson 2: Many organizations start their journey by taking traditional RDBMS tech- nologies and putting them into containers. However, this practice creates operational issues and makes the movement of containers difficult due to growing volumes. This approach also risks encouraging embedding of business logic into the database. When using a container approach, the business logic should be outside the database to facili- tate scaling independent from other application functions, but also to allow flexibility in the choice of data store to be used. Business logic should ideally be integrated with other aspects of application functionality through a publish/subscribe model, enabling scalability at different tiers of the application as workloads evolve. Lesson 3: Application state should never be stored in the containers. Containers are transient resources that cannot be relied upon to store persistent information. Instead a data store layer should be used to track state that is necessary to manage workflows and user experience. Lesson 4: Messaging and workflow should be handled by services outside the con- tainers and application logic. This will ensure that services evolution and scaling is accomplished in a manner that is independent from the application functionality. It also enables more robust and reliable error and retry handling. These lessons show the importance of respecting two core cloud principles when bring- ing containers to cloud: separating compute from storage, and the emphasis on decom- posing monolithic applications into smaller, loosely-coupled functional modules. When combined with the ephemeral “deploy when needed, destroy when done” capabilities of containers, these lessons enable the provisioning of architectures that feature the best inherent characteristics of both cloud and containers. 70 | THE DOPPLER | SPECIAL EDITION 2019