Creating a Highly available self-healing Architecture

Client Profile:

Client is a software development agency specializing in Hosted Enterprise Value Applications (EVA’s), Cloud Services, Mobile App Development, Website Development and Staff Augmentation to individuals and organizations across the globe.

Use Case:

Client required a highly secure, highly available and cost efficient infrastructure for their application. The Client had an extremely complex setup on AWS with big sizes multiple Dev. and Production instances. All instances were running in default VPC without following any high availability and security standards. Deployment was done by manual process with confirmed downtime. The entire infrastructure was managed by different development team without having any security or access restrictions. Due to unmanaged infrastructure and configuration client was also concerned about costing.

Solution Implementation:

  •  Moved complete infrastructure to a custom VPC for enhanced security and high availability.
  • Created multiple private and public subnets in VPC for application and database instances.
  • Launched application instance in public subnets with auto-scaling enabled for high availability and self-healing feature.
  • Launched multiple Mongodb instances in private subnets with read-replica feature for high availability.
  • Created custom scripts for creating builds using AWS Code Build.
  • Created custom scripts for deployment and implemented AWS Code Deploy to deploy build created by Code Build to application instances with zero downtime with ability to roll-back to previous version if required.
  • Configured CloudWatch alarms for getting resource utilization notifications and Auto-Scaling notifications.
  • Created separate IAM users and groups for managing permissions on services and resources.
  • By using small size application instances with Auto-Scaling and Security Groups, cost has been reduced to almost 50%.

AWS Services Used:

  • EC2 instances for application server.
  • Elastic Block Store (EBS) for server storage.
  • Custom VPC for creating multiple public and private subnets in multiple AZ.
  • NAT Gateway to enable instances in a private subnet to connect to the internet or other AWS services.
  • S3 for storing build output and logs.
  • Auto-Scaling and Elastic Load Balancer for high availability and fault tolerant environment of application.
  • AWS Code Build to create build from source code.
  • AWS Code Deploy to deploy build to multiple application servers from S3.
  • AWS Route53 for DNS routing.
  • AWS IAM for controlling access to AWS resources.