The customer is a US-based, venture-backed product company specializing in artificial intelligence based software and mobile robots for the warehousing industry.
They help companies plan their inventory and automate processes like fulfillment, picking, and packing using intelligent software coupled with smart robots. Their clients are located across the globe, with their robots deployed at more than 50 sites.
A suite of applications was converted to microservices-based architecture hosted on the Kubernetes platform and deployed on the Google Cloud Platform (GCP). This involved dynamic provisioning of the environment using IaC along with continuous deployment & delivery of their application.
Argo CD was employed for this and integrated with their existing continuous integration pipeline. A complete observability stack was suggested & deployed, which was built from scratch using tools like Prometheus, Alerter, ELK, etc, for monitoring, logging, and alerting.
Context & Challenge
The client’s application was required to be installed by every customer of theirs on-prem. This meant that their customers not only used the application but also had to manage it. Which ultimately results in a lot of overhead for their customers in terms of costs and efforts required to deploy and maintain the application.
The client reached out to us to help them convert this legacy monolith application and datastore that was hosted on-prem into a SaaS offering that was easy to deploy, always available, and scalable. This would take the burden off the client’s customers and allow them to onboard more customers and expand their footprint.
Moving to the cloud would bring in another set of challenges like ensuring the service is always up, on-demand provisioning of instances for different customers, robust data strategy along with monitoring, alerting, and logging services.
The interactions started with consulting engagement, where we suggested ways to move the application to the cloud. This then transitioned into the product engineering phase, where some of the components were redesigned into a microservices-based architecture.
It then molded into a site reliability engagement where our teams of SREs ensured that the application was stable and configured the infrastructure to ensure it was always up and running.
Challenges like this require a multi-pronged approach that combines tools and strategies that help to take complete advantage of the cloud.
InfraCloud provided solutions that included tools & suggestions to improve automated infrastructure deployment along with implementing a continuous deployment pipeline.
Beyond the original scope, we also implemented an Observability stack that would provide efficient monitoring of resources along with logging and alerting.
Automated Infrastructure Deployment & Management
We started by converting parts of the application to microservices architecture, containerized them, and deployed them on GKE. When we encountered random uptime issues, we deployed it across different regions to ensure it was always available.
Doing that meant we had to maintain the configurations of all these instances so that they could be redeployed quickly. Thus we adopted Infrastructure as Code practice using which the entire infrastructure was written as declarative configuration files.
Terraform was used to provision the entire infrastructure on GCP. With this, we were quickly able to create QA and dev environments.
The application in question was a data-intensive application that relied heavily on the backend database. Thus we suggested they migrate the database to a managed database on GCP.
Along with migrating the application to the cloud, the existing datastore was also provisioned on cloud instances. PostgreSQL’s datastore was migrated to Google Cloud storage. Doing so provided the following benefits:
- Flexible and scalable datastore
- Scheduled and on-demand backups
- HA due to data replication across zones and regions
- Faster & easier recovery of data
The existing setup was already using Jenkins for continuous integration. To improve the speed of delivery, automating the entire process and making it cloud agnostic, we suggested using Argo CD - a declarative, GitOps continuous delivery tool for Kubernetes. We chose it because:
- It syncs Kubernetes manifests from GitHub, which acts as the single source of truth.
- It triggers deployment if there’s any change in the repository.
- In the future, advanced deployment strategies like Blue Green, and Canary could be employed.
There were about 9 clusters hosting close to 40 microservices spread across 3 zones after the application was moved to GCP. This meant that if anything went wrong, identifying the root cause would be tough.
That’s when we suggested implementing a foolproof observability stack that could continuously monitor resources, keep a log of activities, and alert in case of an eventuality.
We were able to deploy this by performing the following tasks:
- For all the resources deployed on GCP, monitoring rules were created using Terraform to monitor deployments for Redis, Postgres, etc.
- Deployed Prometheus and Alerter to monitor and alert for any changes in resources deployed within the cluster.
- Lastly, centralized monitoring was implemented using ELK stack.
This observability stack will be integrated with OpsGenie for auto assignment of issues and tickets to the service teams for faster resolution.
A suite of benefits was provided to the client by way of this engagement. By SaaSifying their existing application:
- We helped the client achieve multi-tenancy and offer services to their customers using the same infrastructure, thus bringing down the costs considerably.
- We were able to bring down the infrastructure costs by a huge margin by moving the application to the cloud and opting for a pay-as-you-go model.
- We helped the client improve their customers’ onboarding experience coupled with faster onboarding for new customers.
Apart from the agreed-upon tasks, we went beyond the scope to implement tools by which:
- We were able to take preventive measures and/or identify and fix issues quickly by implementing observability tools for all the resources.
- By implementing Argo CD, we helped the client have a completely automated CI/CD pipeline, thus providing a faster time to market.
We are a premier technology company with DevOps engineers who have pioneered DevOps with Container, Container Orchestration, Cloud Platforms, DevOps, Infrastructure Automation, SDN, and Big Data infrastructure solutions.
Our deep expertise and focus in these areas enable our customers to build better software faster.
We have over 50 Kubernetes-certified specialists that you can trust - CKA, CKAD & CKS
We are also one of the cloud native technology thought leaders, with speakers and authors contributing to global CNCF conferences.