Pacific Northwest Software Symposium

November 8 - 10, 2019

Understanding Kubernetes: Container Patterns

Friday - Nov 8 3:15 PM

Jonathan Johnson

Jonathan Johnson

Software Architect

Prerequisite: If you are unfamiliar with Kubernetes be sure to attend: Understanding Kubernetes: Fundamentals

Aha moments with apps in containers can be quite liberating. The mobile space is saturated with “there's an app for that”. For us, we now expect “there's a container for that”. “Write once, run anywhere” (WORA) has changed to “Package once, run anywhere” (PORA). As the community of containers is riding up the hype curve we will look at some of those top aha moments together.

• Go rouge with Java 9 and jlink
• Polyglot microservices
• RabbitMQ broker in 2 minutes
• Private Docker hub in a container
• Composing a Pod with multple containers
• Database flavors for integration testing

The epiphanies come from the modular simplicity. Leveraging namespaces and using cgroups, these apps share a common kernel without polluting the host OS. This simplifies installation, conflicts and uninstalls. The barriers to getting something running are decreased and normalized to a container run command. This is subtly powerful and liberating. With this simplicity comes complexity such as shared resources, file systems, mounts, networking and overall cluster management.

Your software package delivery and installation is no longer an rpm, deb, dmg, jar, war, native executable or a run script, it is simply an image that has a common run container command.

Lastly, we will explore how containers can help and hurt your team if you are not careful. What goes into a container is a reflection of a team's skills. Should a team make each tech stack different, or should you standardize? External processes affect your tech stack choices inside your container such as static code analysis, code beautifiers, CI/CD, tracing, logging, and monitoring. Exercise caution as standardization and frameworks can lead to coupling. Your tech stack details can change from version to version so get your SemVer and API versioning right. Finally, containers can be a vehicle to introduce new technologies to those that are conservative and risk avoiders.

During the presentation, we will explore some example on Katacoda.

Video Preview

About Jonathan Johnson

Jonathan Johnson is a platform architect at Intelligent Artifacts, formulating the symbiosis of an artificial general intelligence (AGI) platform with the Kubernetes ecosystem, and a software architect at Dijure LLC.

Jonathan is halfway into his second score of engineering commercial software, driven by his desire to design helpful software to move us forward. His applications began with laboratory instrument software and managing its data. Jonathan was enticed by the advent of object-oriented design to develop personal banking software. Banking soon turned to the internet, and enterprise applications took off. Java exploded onto the scene, and since then he has inhabited that ecosystem. At 454 Life Sciences and Roche Diagnostics, Jonathan returned to laboratory software and leveraged Java-based state machines and enterprise services to manage the terabytes of data flowing out of DNA sequencing instruments. Then as a hands-on architect at Thermo Fisher Scientific, he applied the advantages of microservices, containers, and Kubernetes to their laboratory management platform.

Jonathan enjoys comparing and sharing his adventures with peers. He shares ways to modernize application architectures while adhering to the fundamentals of high modularity and low coupling. A longtime resident of Connecticut, he discusses his experiences with technical groups and meetups.