Empowering Backend Engineering Team

I am writing this blog to share the ideas and concepts which will empower the backend developer, devops engineer and QAs.

Terraform Presentation Slide

These ideas are not tied or limited to particular framework or libraries or cloud providers, instead these can be in many different ways using different tool sets which the team might already be familiar with.

To achieve these end goals, the backend application and devops toolsets should be complementing each other in various aspects.

I am going to list out the desired features I would like to have in my project / team under various categories.

I have also created the following sample repositories on github to showcase these ideas in a simplified way.

Sample Java Spring Boot application with Maven:

https://github.com/harishkannarao/MySpringBoot

Sample QA Acceptance tests with Gradle:

https://github.com/harishkannarao/gradle-qa-acceptance-tests

Sample Infrastructure as Code in AWS with Terraform:

https://github.com/harishkannarao/github-actions-aws-terraform

Application Development and Deployment Stage:

Application Pipelines:
  1. Generated or updated based on configuration files
  2. Run on isolated containers for consistent integration test runs
  3. Ability to install required dependency service (eg: database) to run isolated integration tests
  4. Deploy the application to different environments from development to production





Infrastructure Provisioning Stage:

Infrastructure as Code:
  1. Provision and maintain infrastructure through configuration files (eg: Terraform, Cloudformation)
  2. Parameterise the variable values and reuse the configuration templates

Infrastructure Pipelines:
  1. Generated or updated based on configuration files





QA Acceptance Tests Stage:

QA Pipelines:
  1. Generated or updated based on configuration files
  2. Run on isolated containers
  3. Run tests against different environments using properties files
  4. Capture screenshots during browser testing
  5. Capture request and response during api testing



Production Deployment Stage:

  1. Ability to quickly rollback during deployment failure

Post Production or Operational Stage:

Dashboard and Alerts:
  1. Total requests
  2. Success (2XX and 3XX) and error (4XX and 5XX) rate graphs
  3. Response time (average and 95th percentile) graph
  4. Application Cpu Utilisation graph
  5. Application Memory Utilisation graph
  6. Application running instances graph
  7. Database Cpu Utilisation graph
  8. Database Storage space availability graph




Logging and Tracing:

  1. Distributed log tracing between micro-services (eg: Spring Cloud Sleuth or Zipkin)
  2. Correlation key between application access logs and error logs


Connecting to instances and database:
  1. Ability to remotely monitor JVM
  2. Ability to SSH into the running instance
  3. Ability to connect to database

Comments

Popular posts from this blog

JSON with curl and jq

Import self signed in Linux for Chrome / Chromium headless testing

Colima - Drop In replacement for Docker Desktop for Mac and Linux