New Amazon Web Services infrastructure project for Nopio
New infrastructure in Amazon Web Services for Nopio has proven to be the best solution to ensure proper availability of their client's applications and solving problems with releasing subsequent versions of the application.
Introduction
Nopio is a Krakow-based software development company with over 8 years of experience in creating websites and web applications for companies and start-ups around the world. Apart from producing high quality code, they are also proactive consultants. Nopio approached Hostersi to assist on a project for their customer, for whom they developed the programming part of the online service. Hostersi's task was to design and organize the infrastructure in Amazon Web Services.
Problem
The client's existing AWS cloud infrastructure contained components that became inadequate to its growing needs and scale of operation. These shortcomings could lead to temporary application availability issues for end users and cause problems releasing subsequent versions of the application. The CI/CD pipeline was based on AWS Beanstalk (Automatic Application Deployment Service) and had to be replaced with an autoscaling service. Problems related to the release of subsequent versions of the application were solved by implementing AWS CodeBuild, AWS CodePipline and AWS CodeDeploy services.
Solution
In the first stage of the project, we analyzed the existing architecture. Based on the outcome it was decided that the best solution would be to create and implement a highly scalable and reliable infrastructure based on Amazon Web Services. To ensure an adequate level of reliability, Hostersi also designed the solution created in Amazon Web Services, to allow maintaining high availability of resources (HA), easy scalability and a high level of security. As part of the work, the deployment process and implementation of subsequent application versions were also improved.
AWS services:
RDS - the infrastructure uses MySQL database engine
EC2 - the infrastructure core consists of WEB instances serving the application
QuickSight - additional BI service
ElastiCache - the infrastructure uses Redis as a job queue system for workers and storage for sessions
ElasticSearch - standalone database used to store large amounts of data
Load Balancer - routes the traffic to the auto scaling application group
S3 - used to store static files
CodeBuild - a tool that creates the application package and installs dependencies to reduce workloads on CodeDeploy and deployment time
CodeDeploy - managed through Terraform, creates one application for each environment and several deployment groups depending on the number of stacks
CodePipeline – used as data ingestion point, links build and deployment pipelines
CloudWatch - within Terraform, CloudWatch alerts are created, integrated with Nagios and used to monitor key metrics
ASG - Auto Scaling Group created as IaC (Infrastructure as Code) using Ansible / Packer / Terraform
Additional services:
Jenkins - used for running tasks directly in the worker layer of the environment
Packer - prepares the docker image used for building the application
Cloudflare - infrastructure CDN layer
MongoDB - the client uses the NoSQL MongoDB database
Results
The client gained flexibility - both in scaling production servers and in the areas of application and new solution testing. The solution enabled quick and convenient scaling on a number of levels - from launching new virtual servers, changing parameters, adjusting the configuration of AWS services, current load to capability for geographical scaling. Thanks to the implemented deployment-centric tools, the process of publishing a new version of the application is faster and more secure.
Read also: