Pacific Northwest Software Symposium

November 8 - 10, 2019

Understanding Kubernetes: Testing Patterns

Saturday - Nov 9 9:00 AM

Jonathan Johnson

Jonathan Johnson

Software Architect

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

Highly cohesive and loosely coupled business functions can have a great impact on your agility to deliver new features. Microservices in containers is an effective implementation detail for continuous delivery. However, before you bite into that big sandwich, consider how provisioning a variety of data flavors as containerized endpoints could greatly improve your internal testing.

How many times have you heard a colleague say, “Well that feature does not have integration tests because it requires a database with some specialized data”? Balderdash - put your data flavors in containers!

Let's explore a solution to create a pipeline of data flavors. We use Docker images, Kubernetes Pods, Minikube to provision these endpoints. See how a Gradle project drives integration tests against these Pod endpoints, all ready for your continuous integration pipeline. In the end you can see the power of Consumer Driven Contracts against your dataset flavors.

Watch how your team becomes empowered to create their own dataset flavors in containers for development and testing. See a wall to integration testing come down.

We will explore a GitHub Gradle-based project that includes:

  • a RESTful Java microservice that accesses a database,
  • subprojects that produce Docker images of database flavors,
  • a subproject using TestNG to run Consumer-driven contract tests (Pact) against the database flavored endpoints.

This presentation will follow the source code found here.

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.