While Docker solves many DevOps challenges, composing real-world applications requires a resilient infrastructure. Day two sessions at Kubecon dove into production use cases. The speakers also described how Kubernetes and Platform as a Service are evolving to support real-world applications in production.
Tim Gross, Product Manager at Joyent (@0x74696d) explored how to maximize container value by building fast immutable deployments, optimizing resource utilization, and overcoming network performance bottlenecks. Tim described how composing real-world microservices solutions require a container-native architecture. Unfortunately, many applications are not container-native today, and the application is unaware of the dynamic upstream and downstream environment.
Linking together traditional applications often re-builds a fragile, monolithic environment that does not leverage container application platform benefits.
Tim introduced the containerbuddy project that delivers the following attributes:
- Container registration
- Container self-introspection
- Heartbeat service
- Rapidly responds to container deployment modifications
Containerbuddy simplifies service discovery in Docker and provides a workaround for applications not designed from the start for container-native discovery. The project wraps your application, monitors changes in dependent/upstream service, and triggers external actions when container changes are identified.
Tim’s pragmatic approach to wrap container unaware applications aligns with thoughts expressed by Ashesh Badani, General Manager Red Hat OpenShift (@asheshbadani). Ashesh mentioned that customer struggle with a large, existing application portfolio. Refactoring should not be a requirement to move stateful applications to the cloud. Instead, we need container application platforms that shift applications into containers, and enable teams to refactor over time.
Containerization is changing the developer experience and underlying platform infrastructure. During the “Evolution of PaaS” panel, Gabriel Monray, CTO at Deis (@gabrtv) mentioned that Platform as a Service (PaaS) is disappearing; being replaced by well-defined compassable building blocks. Ashesh echoed the theme, and noted how OpenShift has been rebased on container-native infrastructure; Kubernetes. PaaS is evolving to incorporate DevOps best practices and enable microservices architecture design.
In the opening keynote, Joe Beda (@jbeda) described how microservices are not about code, microservices are about people. When breaking down a monolith into microservices, an important end goal is to establish small independent teams that can operate in parallel; overcoming the mythical man month software development dilemma. Joe presented DevOps best practices pioneered at Google by Site Reliability Engineers (SRE). SRE goals are to focus on tools and processes that innovate themselves out of mundane monitoring and managing work. Key activities include performing blameless post-mortem, changing application to prevent outage re-occurrences, and running drills to proactively find problems. Joe sees operational practices trending towards specialization. For example, “OS OPS” focuses on the minimal operating system distribution that strips away application specific capabilities. “CLUSTER OPS” marshals APIs and machines to create logical infrastructure instead of physical infrastructure. If the underlying cluster APIs just work, “APPs OPS” will focus on determining application specific quality of service parameters and business domain capabilities.
Kelsey Hightower (@kelseyhightower) wrapped up the day with the famous Tetris game demo, which illustrates how any organization can optimize resource allocation using container application platforms. Whether you have a greenfield, brownfield, or darkfield application portfolio, Kubernetes will help you tightly container pack applications into costly machine resources.