The final post in this series completes the enterprise AWS infrastructure, creating a highly available, secure and fault-tolerant cloud system.

Let’s finish up the process of building our AWS infrastructure and discover the last crucial elements of the AWS Cloud needed for our highly available, secure and fault-tolerant cloud system.

This article is the third and the last one of the mini-series which walks you through the process of creating an enterprise-level AWS infrastructure and explains concepts and components of the Amazon Web Services platform. In the previous parts, we created the VPC, subnets, NAT gateways, configured network routing, set up required EC2 instances, bastions hosts, and the RDS database. If you have missed any of the previous parts, we strongly encourage you to check them out.

In this article, we will finish up the infrastructure, by setting up a load balancer, target groups, and deploying our applications on our platform.

The whole series comprises of:

Infrastructure Overview

Infrastructure Overview

Let’s remind ourselves of what we are building throughout this series. The goal is to create a real-life, enterprise-level AWS infrastructure that will host a user management system consisting of a React.js web application, Java Spring Boot server, and a relational database. We have already built the major part of the architecture in the previous articles. Hence, we already have in place a VPC with four subnets (2 public and 2 private) distributed across two different availability zones.

In public subnets, we have EC2 instances ready for our client applications, NAT gateways, and bastion hosts. At the same time, our private subnets contain EC2 instances for the backend servers and the RDS databases. The only element that is missing is the Load Balancer. Therefore, in this part of the series, we will set it up. In the end, we will have a ready platform with backend servers and frontend applications running on it.

Below you can find the view of the user management web application system hosted on AWS.

Figure 2 User managment app

The applications can be found on Github.

Now, let’s dive into some theory!

AWS Theory

1. Elastic Load Balancer (ELB)

Load balancing is the process of efficient incoming traffic distribution across all of the request targets (servers, application instances, databases, etc.). A load balancer is placed in front of your infrastructure and routes incoming client requests across all components able to handle those requests. This minimizes latency and ensures that no targets are overloaded, increasing the overall performance of the system.

Figure 3 Load Balancer

Elastic Load Balancer automatically distributes incoming requests across multiple targets such as EC2 instances, containers, IP addresses, and lambda functions, defined in a target group. Target groups allow you to define a set of targets that are supposed to handle the same type of traffic. Each ELB has a set of listener rules that consist of request conditions and a target group to which the requests fulfilling those conditions are supposed to be routed. You can create different target groups for different types of requests, for instance one target group for client application requests and another for the backend server requests.

Furthermore, target groups allow you to add or remove targets dynamically, and define health check settings that are later used by the load balancer to continuously monitor the status of the targets registered within the target group. If any of the targets go down, the load balancer redirects the traffic to the healthy instances, and when a new healthy instance is up, the load balancer automatically adds it to the traffic distribution. This way ELB ensures fault tolerance, and with the help of Auto Scaling Groups, provides the scalability required by modern systems.

ELB also facilitates operational monitoring of your system, through integration with CloudWatch and X-Ray AWS services, as well as central certificate management.

There are three types of ELB:

– Application Load Balancer – operates on the application layer and is best suited for load balancing of HTTP/HTTPS requests.

– Network Load Balancer – operates on the transport layer and is best suited for TCP, UDP, and TLS traffic where high performance is required.

– Classic Load Balancer – it is a legacy type for applications built within the EC2-classic network.

What kind of benefits does ELB provide?

  • High availability,
  • Fault tolerance,
  • Scalability,
  • Security features,
  • SSL/TLS certificate management,
  • Operational monitoring.

#cloud #aws #load balancing #cloud-native #aws infrastructure #enterprise aws #cloud app

The Path Towards Enterprise Level AWS Infrastructure
1.40 GEEK