Deploying containerised sample applications with built in checks

SG

Scott Griffiths / August 31, 2020

2 min read

Container Checks

Tldr:#

Templated applications and pipelines that validate system, environment and application functionality. Dogfooding at its finest (Bon appetite)

What Are We Trying to Accomplish#

The expectation is that you can build and deploy sample applications that have build in test patterns that seamlessly run across various environments (Dev, UAT, Prod)

This has number of benefits:

  • Standardised deployment methods
  • Consistent environment checks
  • Reusable patterns
  • Centralised development
  • Emphasis on cross team collaboration
  • Reducing the gap between code complete and deployment
  • Lowering the barrier to entry

This has a couple of benefits here by building sample applications based around primary domain language

  1. You build in the patterns that you expect will be used by the teams consuming your services
  2. You include and manage a set of standarised templates\
  3. You allow teams to deploy customised releases based on these templates
  4. Testing and performance are built into the containers so is treated as a first class citizen

How Does It Look - Sample Webapp#

  • Unit, integration(mock), functional, perf patterns, UI included
  • Deployed as a containerised app into your existing cluster
  • Runs through all environments (Dev, Uat, Prod)
  • Other teams can use it and deploy it as a template
  • Infra template using Terraform
  • App templates using helm
  • gitops using argoCd
  • Metrics monitoring and actions using Prometheus

How Does It Look - Serverless#

  • Sample serverless api
  • Unit, integration
  • Use of step functions (patterns)
  • Use of Lambda layers (patterns)
  • Metrics monitoring and actions using Prometheus

How Do We Implement It#

Expose endpoints to continually poll the above apps for service availability, FaaS is perfect for these one off tasks (functions or OpenFaaS)

  • The use of dgoss to confirm application deployment behaviour inside docker containers

@ Discuss on Twitter