The challenge
Our client wanted to avoid unnecessary costs, as the deployment time for a single application took about one week. They also aimed to increase efficiency by automating end-to-end testing, reducing on-site infrastructure, and migrating it to Azure’s Cloud service.
Deploying a single environment required running multiple scripts sequentially and performing manual steps. This was the reason why the process took a full week to complete.
The investment bank lacked the manpower and expertise to complete this project on time and needed help. Due to our successful cooperation on previous projects and our experience in cloud migration, they chose VirtusLab.
The solution
VirtusLab’s work focused on three areas: deployment, scaling, and testing.
Deployment
VirtusLab migrated the client’s system to the Azure cloud environment. Our engineers upgraded from a semi-manual, script-driven deployment to a completely automated system.
The new deployment ran multiple things at the same time, which reduced the total deployment time. The automation also left very little room for human error.
Scaling
Our engineers implemented the use of economical, temporary cloud computing resources and auto-scaling. They also replaced the client’s custom solutions with more conventional software such as JFrog Artifactory and HashiCorp Vault. This helped our client scale their operations more flexibly and release their future projects as open-source.
Testing
VirtusLab built an end-to-end testing framework and conducted the automation of testing pipelines. This was done in three tasks:
- Our engineers created a Jenkins pipeline that runs over fifty implemented use cases, multiple times a day.
- Our engineers automated end-to-end test cases and created a test framework. It served as a foundation for further testing.
- VirtusLab replaced an inefficient manual testing environment. Our engineers integrated the framework with the client’s private cloud. This allows our client to compose a new environment with all the necessary components like MongoDB replica sets, brokers, and caches for each test. This combination allows our client to create tests that can run in parallel and are independent of each other.
The results
Migrating to a cloud environment added new features, improved test coverage, and reduced the dependency on internal VM infrastructure, which opened the way for optimizing the client’s spending on maintenance. It also allowed to scale the system from a few to tens of databases within minutes. This led to several positive outcomes for our client’s business.
- The deployment times for a single build went from weeks to hours.
- The automation reduced the risk of failure for the new deployment process.
- Testing of new releases is now faster, saving up to a few days on each.
- Our client cut costs by leveraging Spot Virtual Machines instead of more expensive alternatives.
Container orchestration
![Kubernetes-logo](https://cdn.virtuslab.com/Kubernetes_269409b093.png?format=webp&width=250)
Languages
![scala-logo](https://cdn.virtuslab.com/Scala_02ac325e92.png?format=webp&width=250)
![java-logo](https://cdn.virtuslab.com/Java_0359c55d43.png?format=webp&width=250)
Infrastructure as Code
![Terraform-logo](https://cdn.virtuslab.com/Terraform_7df2faa368.png?format=webp&width=250)
Deployment
Artifact Management
Security
![HashiCorp Vault-logo](https://cdn.virtuslab.com/Hashi_Corp_Vault_d3d55182dc.png?format=webp&width=250)
Data
![MongoDB-logo](https://cdn.virtuslab.com/Mongo_DP_268ff8fb41.png?format=webp&width=250)
![Kafka-logo](https://cdn.virtuslab.com/Kafka_5b7f2f3519.png?format=webp&width=250)