Myanmar Version
áááąáˇááąááş áá áşááťá áşáááşááášááŹáážáŹ áááˇáş website ááŤáážáááŻááş web application áá áşáᯠáĄáąáŹááşááźááşááŹáá˛áˇáĄááŤáážáŹ ááŻááşááááş traffic ááťáŹá¸ááźáŹá¸ááŹáá˛áˇ ááźáżááŹáá˛áˇ áááşáááŻááşááááŻááşááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááˇáşáá˛áˇ website áážáŹ áĄáá°á¸ááťážáąáŹáˇá áťáąá¸ áĄá áŽáĄá ááşáá áşáᯠááźáąááŹáááŻááşáá˛áˇáĄááŤá ááŻáśáážááş server áá áşááŻáááşá¸á áĄá˛áᎠtraffic áááŹáááᯠáááŻááşáá˝ááşáááŻááşá á˝ááşá¸ááážááᲠwebsite áᏠááąá¸ááśááŹáááŻááşáááᯠáááşáááˇáşáá˝áŹá¸ááŹááťááŻá¸áááşá¸ ááźá áşáááŻááşááŤáááşá
ááŽááᯠááźáżááŹááᯠááźáąáážááşá¸áááŻáˇáĄáá˝ááş AWS á Auto Scaling áá˛áˇ Elastic Load Balancing (ELB) ááᯠáááşááąáŹááşáážáŻáá˝áąááᯠááąá¸ááŹá¸ááŤáááşá áᎠpost áážáŹááąáŹáˇ ááŽáááşááąáŹááşáážáŻáážá áşááŻááᯠáĄááŻáśá¸ááźáŻááźáŽá¸ áááˇáşáá˛áˇ website ááᯠáááşááᯠáá˝ááşáá˝ááşáá°áá°á á ááááşáááşááŹá á˝áŹá áááŻááşááŹá á˝áŹ áááşááąáŹááşáááŻááşááá˛áááŻááŹááᯠáĄááąá¸á áááşááąáˇááŹáá˝áŹá¸ááŤáááşá
AWS Auto Scaling áááŻáᏠááŹáá˛á
AWS Auto Scaling áááŻáᏠáááˇáş application áá˛áˇ áááŻáĄááşááťááşááąáŤáşáá°áááşááźáŽá¸ EC2 instances áĄááąáĄáá˝ááşááᯠáĄáááŻáĄááťáąáŹááş áááŻá¸ááźááşá¸ (scale out) áááŻáˇáááŻááş ááťážáąáŹáˇááťááźááşá¸ (scale in) ááŻááşááąá¸áá˛áˇ áááşááąáŹááşáážáŻáá áşááŻááźá áşááŤáááşá ááŤáᏠáááˇáş application ááᯠtraffic ááťáŹá¸ááŹáá˛áˇáĄá፠server áĄáá áşáá˝áą áĄáááŻáĄááťáąáŹááş áááşáááˇáşááąá¸ááźáŽá¸á traffic áááşá¸áá˝áŹá¸áá˛áˇáĄá፠áĄááŻáśá¸ááááŻááąáŹáˇáá˛áˇ server áá˝áąááᯠááťááşááááşá¸ááąá¸ááŤáááşá
Auto Scaling ááŹááźáąáŹááˇáş áĄááąá¸ááźáŽá¸ááŹáá˛á
- ááźáąáŹááşá¸áá˝ááşááźááşáá˝ááşáážáááźááşá¸ (Elasticity): áááˇáş application ááᯠááąáŹááşá¸áááŻáážáŻ (demand) ááąáŤáşáá°áááşááźáŽá¸ áĄáááŻáĄááťáąáŹááş ááťáááşáážááááŻááşááŹááźáąáŹááˇáş website áá˛áˇ á á˝ááşá¸ááąáŹááşáááşááᯠáĄááźá˛áááşá¸ ááąáŹááşá¸áá˝ááşáĄáąáŹááş ááááşá¸ááŹá¸áááŻááşááŤáááşá
- ááŻááşááťá ááááşáááşááŹáážáŻ (Cost Optimization): áááşáááŻáĄááşáá˛áˇ server áá˝áąáĄáá˝ááşáᏠááąá¸ááťáąáááŹááźáąáŹááˇáş server áá˝áąááᯠáĄááá áá˝ááˇáşááŹá¸ááá˛áˇ ááŻááşááťá ááááşáá˝áąáááą ááťážáąáŹáˇááťáááŻááşááŤáááşá
- á áááşááťááážáŻ (High Availability): áááˇáşáá˛áˇ server áá áşááŻááŻáážáŹ ááźáżááŹááźá áşááźáŽá¸ áĄááŻááşáááŻááşááąáŹáˇáá°á¸áááŻáááş Auto Scaling á áĄá˛ááŽáˇ server ááᯠáĄáááŻáĄááťáąáŹááş áĄáá áşáá áşááŻáá˛áˇ áĄá áŹá¸áááŻá¸ááąá¸ááŹááźáąáŹááˇáş áááˇáş website áᏠáĄááźá˛áááşá¸áááşáááşááąáááŻááşáážáŹááŤá
Auto Scaling áá˛áˇ áĄááá áĄá áááşáĄáááŻááşá¸ááťáŹá¸
- Launch Template: ááŤáᏠAuto Scaling Group (ASG) á server áĄáá áşáá˝áąááᯠá áááşáá˛áˇáĄá፠áĄááŻáśá¸ááźáŻáá˛áˇ ááŻáśá áś (blueprint) ááźá áşááŤáááşá Launch Template áážáŹ áááˇáşáá˛áˇ EC2 instance (AMI, instance type, security group) áá˝áąáĄáá˝ááş áĄááąá¸á áááşáĄááťááşáĄáááşáá˝áą ááŤáááşááŤáááşá
- Auto Scaling Group (ASG): ááŤá Auto Scaling á á
áŽááśáááˇáşáá˝á˛áá˛áˇ EC2 instances áá˝áąááᯠá
áŻá
ááşá¸ááŹá¸áá˛áˇ áĄáŻááşá
ᯠáá
áşááŻááźá
áşááŤáááşá ASG áážáŹ áĄááąá¸ááźáŽá¸áá˛áˇ áĄáááŻááşá¸ááŻáśá¸áᯠáážáááŤáááşá
- Min Size: áááˇáş application áĄáá˝ááş áĄááźá˛áááşá¸áĄááŻááşááŻááşááąááááˇáş áĄááááˇáşááŻáśá¸ instances áĄááąáĄáá˝ááşá
- Max Size: traffic áĄááťáŹá¸ááŻáśá¸ááźá áşáá˛áˇáĄááŤáážáŹááąáŹááş áĄáááŻáĄááťáąáŹááşááťá˛áˇáá˝ááşáááŻááşáááˇáş áĄááťáŹá¸ááŻáśá¸ instances áĄááąáĄáá˝ááşá
- Desired Capacity: áááşáážááĄááŻááşááŻááşá áąáááŻáá˛áˇ instances áĄááąáĄáá˝ááşá
- Scaling Policies: ááŤáá˝áąá Auto Scaling Group ááᯠáááşáĄááťáááşáážáŹ ááťá˛áˇáá˝ááş (scale out) ááŤáážáááŻááş ááťážáąáŹáˇááť (scale in) áááá˛áááŻááŹááᯠááźáąáŹááźáá˛áˇ á
ááşá¸ááťááşá¸áá˝áą ááźá
áşááŤáááşá
- Target Tracking Scaling: ááŤáᏠáĄááŻáśá¸áĄááťáŹá¸ááŻáśá¸áá˛áˇ áĄááááąáŹááşááŻáśá¸ scaling policy ááźá áşááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááşáᏠ“ááťááşá¸ááťáž CPU áĄááŻáśá¸ááźáŻáážáŻ 70% áážáŹ ááááşá¸ááŹá¸ááąá¸áፔ áááŻáá˛áˇ á ááşá¸ááťááşá¸ááᯠáááşáážááşáááŻááşááŤáááşá CPU 70% áááş ááťáąáŹáşáá˝ááşáá˝áŹá¸áá˛áˇáĄá፠Auto Scaling á server áĄáá áşáá˝áą áááşáááˇáşááąá¸ááźáŽá¸á 70% áĄáąáŹááşááťáá˝áŹá¸áá˛áˇáĄá፠server áá˝áąááᯠááťážáąáŹáˇááťááąá¸ááŤáááşá
- Simple Scaling: ááŤáááąáŹáˇ CloudWatch metric áá áşááŻáá˛áˇ áááşáááŻá¸ (áĽáááŹ- CPU Utilization > 80%) ááᯠáĄááźáąááśááźáŽá¸ instances áĄááąáĄáá˝ááşááᯠáááŻá¸ááźááşá¸ áááŻáˇáááŻááş ááťážáąáŹáˇááťááźááşá¸ ááŻááşááąáŹááşááŤáááşá
Elastic Load Balancing (ELB) áááŻáᏠááŹáá˛á
Elastic Load Balancing áááŻáᏠáááˇáş website ááᯠáááşááŹáá˛áˇ internet traffic ááᯠAuto Scaling Group áážáŹáážááá˛áˇ server áá˝áąááŽááᯠáĄááťááŻá¸ááť áá˝á˛ááąááąá¸áá˛áˇ áááşááąáŹááşáážáŻáá áşááŻááźá áşááŤáááşá ELB áᏠáááşááŹáá˛áˇ traffic ááᯠáá áşááąááŹáááşá¸áážáŹ áááşááśááźáŽá¸ áĄááŻááşááťáŹá¸áá˛áˇ server áá˝áąááᯠáĄááŻááşáááąá¸áá˛á áĄááŻááşáĄáŹá¸ááąáá˛áˇ server áá˝áąááᯠáŚá¸á áŹá¸ááąá¸ áá˝á˛ááąááąá¸ááŤáááşá
ELB ááŹááźáąáŹááˇáş áĄááąá¸ááźáŽá¸ááŹáá˛á
- Traffic ááťážááąááąá¸ááźááşá¸: server áá áşááŻáááşá¸ááᯠtraffic áĄáŹá¸ááŻáśá¸ ááŻáśááťáááŹáĄáąáŹááş ááŹá¸ááŽá¸ááąá¸ááŤáááşá
- ááťááşá¸ááŹááąá¸ á á áşááąá¸ááąá¸ááźááşá¸ (Health Checks): ELB á áá°áˇááąáŹááşáá˝ááşáážáŹáážááá˛áˇ server áá˝áąáá˛áˇ ááťááşá¸ááŹááąá¸ááᯠáĄááźá˛á á áşááąá¸ááąááŤáááşá server áá áşááŻááŻáážáŹ ááźáżááŹááźá áşááąáááş áĄá˛ááŽáˇ server ááŽááᯠtraffic áááŻáˇááŹááᯠáááşáááˇáşááąá¸ááźáŽá¸ ááťááşáá˛áˇ ááťááşá¸ááŹáá˛áˇ server áá˝áąááŽáááŻáᲠáááŻáˇááąá¸ááŤáááşá
Auto Scaling áá˛áˇ ELB áááşááᯠáĄáá°ááá˝ áĄááŻááşááŻááşááá˛á (Architecture)
áááˇáşáá˛áˇ áĄáááŻáĄááťáąáŹááşááťá˛áˇáá˝ááşáááŻááşáá˛áˇ web server architecture áᏠáĄáąáŹááşááŤáĄáááŻááşá¸ áĄááŻááşááŻááşááŤáááşá
- áĄááŻáśá¸ááźáŻáá° (Users): ááŻáśá¸á á˝á˛áá°áá˝áąáᏠáááˇáşáá˛áˇ domain name ááᯠááŻáśá¸ááźáŽá¸ áááˇáş website ááᯠáááşááąáŹááşááŤáááşá
- Load Balancer (ELB): DNS áááąááááˇáş Traffic áá˝áąáᏠELB ááᯠáŚá¸á á˝áŹááąáŹááşááŹááŤáááşá
- Traffic ááźááˇáşááąááźááşá¸: ELB á áááşááŹáá˛áˇ traffic ááᯠAuto Scaling Group áážáŹáážááá˛áˇ Load áááşá¸áá˛áˇ EC2 instances áá˝áąááŽááᯠááťážááťážáá áá˝á˛ááąááąá¸ááŤáááşá
- Auto Scaling Group (ASG): ASG áážáŹáážááá˛áˇ instances áá˝áąáá˛áˇ CPU áĄááŻáśá¸ááźáŻáážáŻá network traffic á áá˛áˇ áĄááťááşáĄáááşáá˝áąááᯠAWS CloudWatch áááą áĄááźá˛áááşá¸ á áąáŹááˇáşááźááˇáşááąááŤáááşá
- ááťá˛áˇáá˝ááşááźááşá¸ (Scale Out): áááşáážááşááŹá¸áá˛áˇ CPU utilization (áĽáááŹ- 70%) áááş ááťáąáŹáşáá˝ááşáá˝áŹá¸áá˛áˇáĄá፠ASG á Launch Template ááᯠáĄááŻáśá¸ááźáŻááźáŽá¸ server áĄáá áşáá áşááŻááᯠáĄáááŻáĄááťáąáŹááş á áááşááąá¸ááŤáááşá
- áĄáá áşáááşááąáŹááşááźááşá¸: server áĄáá áşá á áááşáĄááŻááşááŻááşáá˛áˇáĄá፠ELB áá˛áˇ ááťáááşáááşááźáŽá¸ traffic ááᯠá áááşáááşááśááŤáááşá
- ááťážáąáŹáˇááťááźááşá¸ (Scale In): traffic áááşá¸áá˝áŹá¸ááźáŽá¸ CPU áĄááŻáśá¸ááźáŻáážáŻá áááşáážááşááŹá¸áá˛áˇ ááŹáááŻááşáážáŻááşá¸áĄáąáŹááş ááąáŹááşáá˝áŹá¸áá˛áˇáĄá፠ASG á áĄááŻáśá¸ááááŻááąáŹáˇáá˛áˇ instances áá˝áąááᯠáĄáááŻáĄááťáąáŹááş ááťááşááááşá¸ááąá¸ááŤáááşá
ááááŻáśá¸ (MBA áĄááźááş)
á áŽá¸áá˝áŹá¸ááąá¸ááŻááşáááşá¸áá áşááŻáá˛áˇáážáŻááąáŹááˇáşáááąááźááˇáşáááş AWS Auto Scaling áá˛áˇ ELB áááŻáˇáᏠáááŻá¸áážááşá¸áá˛áˇ áááşá¸áááŹáááşááąáŹááşáážáŻáá˝áąáááşáááşáááŻááşááŤáá°á¸á ááŤáá˝áąááŹ
- ááŻááşáááşá¸áĄááąáŤáş áĄáŹá¸ááŹá¸áááŻááşáážáŻ (Reliability): Website áá˝áąá application áá˝áą downtime áááźá áşáĄáąáŹááş ááŹáá˝ááşááąá¸áá˛áˇ á áá áşáá˝áąááŤá
- ááŻááşáááşá¸ áááŻá¸áááşáááŻááşá á˝ááşá¸ (Scalability): ááŻááşáááşá¸áááŻáĄááşááťááşáĄááąáŤáşáá°áááşááźáŽá¸ áĄáááˇáşáĄáááşááážá ááťá˛áˇáá˝ááşáááŻááşá á˝ááşá¸ááᯠááąá¸á á˝ááşá¸ááŤáááşá
- áááşá¸áážáŽá¸ááźážáŻááşáážáśáážáŻáĄááąáŤáş áĄááťááŻá¸áĄááźááş (ROI): áááŻáĄááşáá˛áˇáĄááťáááşáážáŹ áááŻáĄááşáá˛áˇ áááŹááĄáá˝ááşáᏠááąá¸ááťáąááá˛áˇ á áá áşááźáąáŹááˇáş IT ááŻááşááťá ááááşáá˝áąááᯠááááąáŹááşá á˝áŹ á áŽááśáááˇáşáá˝á˛áááŻááşááźáŽá¸ áááşá¸áážáŽá¸ááźážáŻááşáážáśáážáŻ áĄááąáŤáş áĄááťááŻá¸áĄááźááşááᯠáááŻá¸áááşá áąááŤáááşá
ááŽááᯠarchitecture ááᯠáĄááŻáśá¸ááźáŻááźááşá¸áᏠáááˇáşáá˛áˇ ááŻááşáááşá¸ááᯠá áááşááťáááźáŽá¸ ááąááşááŽáá˛áˇ áá áşááťá áşáááş á áá áşáá áşááŻáĄááźá áş ááźáąáŹááşá¸áá˛ááąá¸áááŻááşáážáŹááŤá AWS Free Tier ááᯠáĄááŻáśá¸ááźáŻááźáŽá¸ áááˇáşáááŻááşáááŻááş Auto Scaling áá˛áˇ ELB setup ááᯠá áááşáááşááąáŹááşááźááˇáşáááŻááşááŤáááşá
English Version
Building a Scalable Web Server on AWS: A Guide to Auto Scaling and Load Balancing
In today’s digital world, when your website or web application becomes successful, you’re likely to face the problem of sudden traffic spikes. For instance, when you announce a special promotion on your website, a single server might not be able to handle the traffic, leading to slow performance or even crashing the site.
To solve this problem, AWS provides services like Auto Scaling and Elastic Load Balancing (ELB). In this post, we will explore in detail how to use these two services to build a resilient, cost-effective, and highly scalable website.
What is AWS Auto Scaling?
AWS Auto Scaling is a service that automatically adds or removes EC2 instances based on the demand for your application. It automatically adds new servers when traffic increases and removes unnecessary servers when traffic decreases.
Why is Auto Scaling Important?
- Elasticity: It allows your application to automatically adjust to demand, ensuring your website’s performance remains consistent.
- Cost Optimization: You only pay for the servers you need at any given moment, eliminating the costs associated with idle servers.
- High Availability: If one of your servers fails and becomes unhealthy, Auto Scaling automatically replaces it with a new one, ensuring your website stays online.
Key Components of Auto Scaling
- Launch Template: This is the blueprint that an Auto Scaling Group (ASG) uses to launch new servers. The Launch Template contains all the details for your new EC2 instance, such as the AMI, instance type, and security group.
- Auto Scaling Group (ASG): This is a collection of EC2 instances that Auto Scaling manages. An ASG has three important settings:
- Min Size: The minimum number of instances you want running at all times for your application.
- Max Size: The maximum number of instances you allow the group to scale out to during peak traffic.
- Desired Capacity: The current target number of instances you want to be running.
- Scaling Policies: These are the rules that tell the Auto Scaling Group when to scale out or scale in.
- Target Tracking Scaling: This is the most common and effective scaling policy. For example, you can set a rule that says, “Maintain the average CPU utilization at 70%.” When the CPU goes above 70%, Auto Scaling adds more servers. When it falls below, it removes servers.
- Simple Scaling: This policy adds or removes a specific number of instances based on a single CloudWatch metric value (e.g., if CPU Utilization > 80%).
What is Elastic Load Balancing (ELB)?
Elastic Load Balancing is a service that automatically distributes incoming internet traffic to your website across the servers in your Auto Scaling Group. ELB acts as a single point of contact for all incoming traffic and directs it to the healthy servers, preventing any single server from being overwhelmed.
Why is ELB Important?
- Traffic Distribution: It prevents all incoming traffic from hitting a single server.
- Health Checks: ELB constantly monitors the health of the servers behind it. If a server becomes unhealthy, ELB stops sending traffic to it and redirects all traffic to the remaining healthy servers.
How They Work Together (The Architecture)
Your highly scalable web server architecture works as follows.
- Users: Visitors access your website using your domain name.
- Load Balancer (ELB): The DNS directs all incoming traffic to your ELB.
- Traffic Distribution: The ELB distributes the incoming traffic evenly among the healthy EC2 instances in your Auto Scaling Group.
- Auto Scaling Group (ASG): The ASG, with the help of AWS CloudWatch, continuously monitors metrics like CPU utilization or network traffic on its instances.
- Scale Out: When the defined CPU utilization (e.g., 70%) is exceeded, the ASG automatically launches a new server using the Launch Template.
- Join the Group: When the new server starts, it registers with the ELB and begins receiving traffic.
- Scale In: When traffic decreases and the CPU utilization falls below the threshold, the ASG automatically terminates the unnecessary instances, saving you money.
Conclusion (An MBA Perspective)
From a business standpoint, AWS Auto Scaling and ELB are not just simple technical services. They are key enablers of:
- Business Reliability: They ensure your websites and applications don’t experience downtime, protecting your brand reputation and revenue.
- Business Scalability: They provide the ability to scale to meet unpredictable demand, allowing you to grow your business without worrying about infrastructure limits.
- Return on Investment (ROI): The pay-for-what-you-use model allows for efficient management of IT costs, leading to a better return on your technology investments.
Adopting this architecture is a crucial step in transforming your business into a modern, reliable, and scalable digital operation. You can start building your own Auto Scaling and ELB setup using the AWS Free Tier.
