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.
