CLOUD & DEVOPS SERVICES FOR CLOUD NATIVE PRODUCT

ABOUT THE CLIENT

The client is reinventing the way of working with documents in the cloud to help their customers boost productivity and save time spent on daily routines. To implement their vision, the client has chosen a cloud native solution based on fault-tolerant capabilities that is friendly to intense growth and scaling.

CHALLENGE

The client had a manual multi-environment infrastructure deployment аnd no continuous integration & continuous deployment automation. That significantly impacted the speed of product development, release, and delivery cadence of new application versions in general. Besides, it required a considerable part of the development team capacity to process it manually.

SOLUTION

From the tech perspective, the product comprises four parts:

The desktop application has been developed using the ElectronJS framework which allows us to build applications for multiple operations systems. The main purpose of the application is to collect data from the back-end and present it to users.
CI/CD pipeline aims to build installers for Windows and macOS. GitHub Actions has been selected as CI/CD tools since it supports multiple host runners, and it's possible to build applications for Windows and macOS simultaneously.
The tools:
1. GitHub
2. Github Actions
- Install dependencies (yarn install)
- Build packages for specific OS (Windows, macOS)
- Archive installers (.exe and .dmg files)

HIGH-LEVEL SOLUTION DIAGRAM

The API (back-end) has been developed using the NodeJS framework. The main purpose of the application is to process user data. CI/CD pipeline aims to build a docker image described in Dockerfile and deploy it to Amazon Web Services. Elastic Container Service has been chosen as the deployment service because it easily deploys, manages, and scales containerized applications. It deeply integrates with the rest of the AWS platform to provide a secure and easy-to-use solution for running container workloads in the cloud. GitHub Actions were selected as CI/CD tools since it supports the AWS deployment and has an official module for deployment to ECS.
The tools:
1. GitHub
2. Docker
3. Github Actions
- Build Docker image
- Tag Docker image
- Push Docker image to ECR (AWS Elastic Container Registry)
- Deploy to ECS (AWS Elastic Container Service)

HIGH-LEVEL SOLUTION DIAGRAM

Workers have been developed using the NodeJS framework. The main purpose of the worker is to process data from external services and pass it to the API. CI/CD pipeline aims to build a docker image described in Dockerfile and deploy it to Amazon Web Services. Elastic Container Service is used as the deployment service, and GitHub Actions as CI/CD tools since it's deployed on ECS as API.
The tools:
1. GitHub
2. Docker
3. Github Actions
- Build Docker image
- Tag Docker image
- Push Docker image to ECR (AWS Elastic Container Registry)
- Deploy to ECS (AWS Elastic Container Service)

HIGH-LEVEL SOLUTION DIAGRAM

Lambda functions have been developed using the NodeJS framework. The main purpose of the Lambda function is to obtain data from external services and pass it to workers. AWS Lambda has been selected since it will automatically scale and execute the code – from several requests per day, up to thousands per one second. For deployment, SAM (AWS Serverless Application Model) is leveraged. AWS SAM makes it easy to organize related components and resources, and operate on a single stack.

The infrastructure (Infrastructure as a Code) is described by Terraform and is stored on Github. There are separate config files for different stages (dev, stage, prod). Terraform state is the mechanism via which it keeps track of resources that are actually deployed in the cloud. In this particular case, the state is stored in S3 Bucket.

TECHNOLOGIES

AWS, Terraform, Github, Github Actions, ElectronJS, NodeJS, Docker, ECR, ECS, AWS Lambda, AWS SAM.

RESULT

The developed solution has allowed the client to use Terraform code, Github Actions pipelines and Amazon Elastic Container Service that have automated continuous integration & continuous deployment processes instead of using manual multi environment AWS infrastructure and applications deployment. As a result, it significantly increased the speed of product development, release and delivery cadence of new application versions and, finally, allowed to fully focus the development team capacity on product development rather than on doing manual CI/CD activities.

Similar cases

INFRASTRUCTURE & DEVOPS SERVICES FOR FINTECH PRODUCT

The client experienced the need to automate the deployment process of microservices and simplify the release process. One of the requirements was to migrate Docker containers to AWS ECS and move existing infrastructure to Terraform.

view success story

CLOUD & DEVOPS SERVICES FOR REAL ESTATE PRODUCT

The client faced the need to automate multi-environment continuous integration and deployment process of microservices, move the front-end part to CDN as well as deploy multi-environment infrastructure as a code.

view success story

SERVERLESS DATA & ML PIPELINES

The client had high costs for development, deployment, and, most importantly, operation of the data platform including Data Lake, Ingestion, and ML Pipelines. The pipelines were mostly running in EC2 instances, which led to the increased cost of operations and required a significant amount of time to deploy and test the pipelines in lower environments.

view success story

SERVERLESS DEPLOYMENT AUTOMATION

The client came with a request to automate and unify the deployment process of serverless applications on AWS Lambda. Having manual deployments before, the customer was facing inconveniences and difficulties, including non-uniform environment setup (versions of Serverless, Python, Node, and so on were inconsistent) and inability to control the environment changes in one place.

view success story

DATA SCIENCE INFRASTRUCTURE

The client needed to strengthen collaboration within the data scientists team by moving research capabilities into cloud workloads. Besides, they wanted to automate and unify the deployment process of AWS resources. That, in turn, would decrease the time and effort required for a team of data scientists to build and test their models.

view success story

CICD FOR MOBILE CROSS PLATFORM APPLICATION

Initially, the client’s development team performed continuous integration and continuous deployment processes manually. Consequently, it was time- and effort-consuming to build cross-platform mobile applications. Besides, they used the legacy tools stack – that doesn’t have built-in mobile-specific continuous integration and deployment capabilities.

view success story
SERHII YELCHENKO Delivery Director

We are cloud native company who visions cloud computing as the home for tech products. Our team of top-notch engineers specialize in Cloud solutions, we develop scalable cloud native applications, provide DevOps services which facilitate innovations and allow release products faster, build reliable and secure cloud infrastructure for our clients from the US and Europe.

Tell us about your business needs

    I’ve read and I accept the Privacy Policy