Continuous Integration & Deployment
Deployment
We extensively use GitHub Actions for CI/CD. Since all our in-house products are hosted on either EKS or GKE, the GitHub Actions contain steps to build a Docker image via Dockerfile and roll out the updated Docker image to these Kubernetes Clusters. We use Blue/Green deployments to roll out the changes to minimize downtime.
The following repositories have some of our GitHub Actions implementations:
whisper-chain-fe/.github/workflows at main · TrueSparrowSystems/whisper-chain-fe
whisper-chain-be/.github/workflows at main · TrueSparrowSystems/whisper-chain-be
Ephemeral Preview Environments
- We have designed a mechanism for multiple products to provision a new preview environment for each pull request via Kubernetes and AWS Fargate.
- These environments are then terminated automatically when detected unused.
- It allows our Product and Design team to provide feedback much early in the development lifecycle.
- The whole system is designed in the most cost-effective way.
<aside>
💡 The Ephemeral Preview Environments have allowed development teams to move faster and get early feedback from PX teams in a cost-effective way.
</aside>
E2E and Unit Testing
Our GitHub actions CI/CD pipeline performs automatic E2E and unit testing on every PR and sends out a report to the development and QA team.
Infrastructure
Provisioning
- We use Infrastructure as Code tools like Terraform and AWS CloudFormation to provision and automate infrastructure. It allows us to maintain a history of changes, reduce human errors, and improve consistency between environments.
- All our applications are deployed on Kubernetes (except Stateful Sets). All the Kubernetes operations are automated like capacity management, DNS mapping, SSL certificate generation, and load balancer provisioning.
- We also have support for autoscaling of pods using metrics like CPU, Memory, or any metrics from Prometheus.
Monitoring & Logging