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
Logging and Tracing:
Connecting to instances and database:
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:
- Generated or updated based on configuration files
- Run on isolated containers for consistent integration test runs
- Ability to install required dependency service (eg: database) to run isolated integration tests
- Deploy the application to different environments from development to production
Infrastructure Provisioning Stage:
Infrastructure as Code:
- Provision and maintain infrastructure through configuration files (eg: Terraform, Cloudformation)
- Parameterise the variable values and reuse the configuration templates
Infrastructure Pipelines:
- Generated or updated based on configuration files
QA Acceptance Tests Stage:
QA Pipelines:
- Generated or updated based on configuration files
- Run on isolated containers
- Run tests against different environments using properties files
- Capture screenshots during browser testing
- Capture request and response during api testing
Production Deployment Stage:
- Ability to quickly rollback during deployment failure
Post Production or Operational Stage:
Dashboard and Alerts:
- Total requests
- Success (2XX and 3XX) and error (4XX and 5XX) rate graphs
- Response time (average and 95th percentile) graph
- Application Cpu Utilisation graph
- Application Memory Utilisation graph
- Application running instances graph
- Database Cpu Utilisation graph
- Database Storage space availability graph
Logging and Tracing:
- Distributed log tracing between micro-services (eg: Spring Cloud Sleuth or Zipkin)
- Correlation key between application access logs and error logs
Connecting to instances and database:
- Ability to remotely monitor JVM
- Ability to SSH into the running instance
- Ability to connect to database
Comments
Post a Comment