Matoffo Logo

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

Generative AI Logo

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

Generative AI Logo

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

Generative AI Logo

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.

vector cloud icon

OUR FOCUS IS
CLOUD SOLUTIONS

Our primary goal is to deliver value to our clients by resolving technical challenges and helping them achieve their objectives. We utilize cloud solutions as a powerful toolset to make this happen. With Matoffo expertise, companies can significantly reduce the time from idea to market and rapidly scale their digital business. Additionally, Matoffo enables seamless adoption of rapidly growing tech capabilities, transforming businesses to stay competitive in the market.

Tell us about your business needs

We will add your contact information included in this form to our CRM in order to process your requests efficiently. For any inquiries, look through our Privacy Policy.