In today’s fast-paced digital landscape, application scaling has become a critical aspect of managing online services. As businesses experience fluctuating demands and unpredictable traffic patterns, the ability to adapt resources dynamically is essential for maintaining performance and controlling costs. AWS Auto Scaling offers a powerful solution to this challenge, enabling organizations to automatically adjust their computing capacity based on real-time needs.
This comprehensive guide will walk readers through the intricacies of mastering application scaling on AWS. It covers fundamental concepts of Auto Scaling groups and explores strategies for effective implementation. The article delves into designing scaling policies, optimizing performance with dynamic scaling, and leveraging predictive scaling for proactive management. Additionally, it examines the integration of Auto Scaling with various AWS services, providing a holistic approach to resource optimization in cloud environments.
AWS Auto Scaling Fundamentals
What is AWS Auto Scaling?
AWS Auto Scaling is a powerful service that helps users monitor their applications and automatically adjust capacity to maintain steady, predictable performance at the lowest possible cost [1]. This advanced cloud computing feature provides automatic resource management based on server load, enabling businesses to effectively handle peak time demands while optimizing performance and costs [2].
The primary goal of AWS Auto Scaling is to ensure that applications have the correct number of Amazon EC2 instances available to handle the load [3]. It accomplishes this by organizing EC2 instances into Auto Scaling groups, which serve as the foundation for scaling operations [2]. These groups can be configured with minimum and maximum instance counts, as well as a desired capacity, allowing AWS Auto Scaling to maintain the specified number of instances [3].
Auto Scaling Components
To implement effective auto scaling strategies, several key components work together:
- Auto Scaling Groups: These are collections of EC2 instances that form the basis of Amazon EC2 Auto Scaling [3]. When creating an Auto Scaling group, users specify the subnets and the initial number of instances [2].
- Launch Templates: Auto Scaling groups use launch templates (or launch configurations) as configuration templates for their EC2 instances [3]. These templates define the specifications for new instances launched by the Auto Scaling group.
- Amazon Machine Images (AMIs): AMIs are downloadable executable images of EC2 instances used to launch new instances [2]. They contain all system settings and configurations, ensuring that new instances are identical to the original.
- Load Balancers: These components distribute traffic among the instances in an Auto Scaling group [2]. Elastic Load Balancing automatically registers and deregisters instances as they are launched or terminated [3].
- Scaling Policies: These define the rules for when to add or remove instances based on metrics such as CPU utilization [2].
Scaling Options
AWS Auto Scaling offers various scaling options to cater to different application needs:
- Manual Scaling: This option allows users to manually build or terminate EC2 instances as needed [1].
- Scheduled Scaling: Developers can predict future traffic patterns and schedule AWS Auto Scaling to execute at specific times [1].
- Dynamic Scaling: This option enables automatic scaling in response to changes in demand [1]. AWS Auto Scaling uses services like Amazon EC2 Auto Scaling and Application Auto Scaling to adjust capacity based on standard utilization metrics, throughput metrics, or custom metrics [4].
- Predictive Scaling: This feature supports predictive scaling for Auto Scaling groups, helping to scale Amazon EC2 capacity faster during regularly occurring spikes [4].
- Maintaining Current Instance Levels: Developers can configure an Auto Scaling group to maintain a specific number of running instances [1].
AWS Auto Scaling also provides built-in scaling recommendations that users can leverage to optimize for performance, costs, or a balance between the two [4]. These recommendations are part of scaling plans, which offer features such as resource discovery, dynamic scaling, and predictive scaling [4].
To implement and manage scaling strategies, AWS offers multiple interfaces, including the AWS Management Console, AWS Command Line Interface (CLI), AWS Tools for Windows PowerShell, AWS SDKs, and a low-level HTTPS API [4]. Additionally, AWS CloudFormation supports creating scaling plans using templates [4].
By leveraging these components and scaling options, organizations can ensure their applications remain responsive and cost-effective, even during periods of fluctuating demand. AWS Auto Scaling’s flexibility and automation capabilities make it an essential tool for managing resources in cloud environments.
Planning Your Auto Scaling Strategy
Assessing Application Requirements
When planning an auto scaling strategy, it’s crucial to assess the specific requirements of the application. This involves understanding the resource needs, traffic patterns, and performance expectations. Application Auto Scaling offers a wide range of scalable resources, including AppStream 2.0 fleets, Aurora replicas, DynamoDB tables, Amazon ECS services, and many more [5]. By identifying the appropriate scalable targets, organizations can ensure their applications remain responsive and cost-effective.
To begin, developers and system administrators should evaluate their application’s behavior under various load conditions. This assessment helps in determining the most suitable scaling options:
- Manual Scaling: For applications with predictable or stable workloads
- Scheduled Scaling: Ideal for applications with known traffic patterns
- Dynamic Scaling: Best for applications with fluctuating demands
- Predictive Scaling: Suitable for applications with recurring traffic spikes [5]
Choosing Scaling Metrics
Selecting the right metrics is fundamental to an effective auto scaling strategy. AWS Auto Scaling uses CloudWatch metrics to monitor and trigger scaling actions. When creating a scaling plan, it’s essential to choose metrics that accurately reflect the application’s performance and resource utilization.
Some commonly used metrics include:
- CPU Utilization: Measures the percentage of allocated EC2 compute units currently in use
- Network In/Out: Monitors the volume of incoming and outgoing network traffic
- Request Count Per Target: Tracks the number of requests completed per target in an Application Load Balancer
It’s important to note that the scaling metric and load metric should be strongly correlated [6]. This ensures that the metric data can be used to proportionally scale out or in the number of instances. For example, if CPU utilization is chosen as the scaling metric, it should increase and decrease proportionally to the number of instances in the Auto Scaling group.
To enhance the responsiveness of your scaling strategy, enable detailed monitoring for EC2 instances. This provides CloudWatch metric data at a one-minute frequency, ensuring faster response to load changes [6]. Additionally, enabling Auto Scaling group metrics is recommended to access capacity forecast graphs in the AWS Management Console [6].
Defining Scaling Thresholds
Defining appropriate scaling thresholds is critical for maintaining optimal performance and cost-efficiency. AWS Auto Scaling offers several strategies to help determine these thresholds:
- Optimize for availability: Scales resources to maintain utilization at 40%, suitable for applications with urgent and unpredictable scaling needs
- Balance availability and cost: Maintains resource utilization at 50%, ideal for balancing high availability and cost-efficiency
- Optimize for cost: Targets 70% resource utilization, appropriate for applications that can handle reduced buffer capacity [7]
When setting up scaling policies, it’s crucial to consider the following:
- Step Adjustments: Define different scaling actions based on the size of the alarm breach. This allows for more granular control over scaling activities [8].
- Warmup Period: Configure a warmup period for newly launched instances to prevent scaling activities from being too reactive to short-term changes [8].
- Cooldown Period: Implement a cooldown period between scaling activities to allow resources to stabilize before initiating another scaling action [9].
- Minimum and Maximum Capacity: Set appropriate limits to ensure your application scales within desired boundaries. Scaling policies will never exceed these limits [9].
To avoid potential issues, be cautious when using burstable performance instance types like T3 and T2. Depending on the target utilization, there’s a risk of exceeding the baseline and running out of CPU credits, which can limit performance [6].
By carefully assessing application requirements, choosing appropriate scaling metrics, and defining suitable scaling thresholds, organizations can create a robust auto scaling strategy that optimizes performance, availability, and cost-efficiency in their AWS environment.
Implementing Auto Scaling Groups
Creating Launch Templates
Launch templates are essential components in implementing Auto Scaling groups, as they specify the configuration information for EC2 instances. These templates include crucial details such as the Amazon Machine Image (AMI) ID, instance type, key pair, security groups, and other parameters necessary for launching EC2 instances [10]. One of the key advantages of using launch templates is the ability to create multiple versions, allowing for greater flexibility and easier management of instance configurations [10].
To create a basic launch template, developers should follow these steps:
- Specify the Amazon Machine Image (AMI) for launching instances.
- Choose a compatible instance type.
- Select the key pair for connecting to instances (e.g., using SSH).
- Add security groups to manage network access.
- Specify any additional volumes to attach to each instance.
- Add custom tags (key-value pairs) to instances and volumes [11].
It’s important to note that when configuring security groups, they must be specified as part of the network interface rather than in the Security groups section of the template [11]. This ensures proper network connectivity for Auto Scaling instances.
Launch templates offer several advantages over launch configurations, including access to the latest features and improvements in Amazon EC2. For instance, launch templates support features such as Systems Manager parameters, current generation EBS Provisioned IOPS volumes, EBS volume tagging, T2 Unlimited instances, Capacity Reservations, and Dedicated Hosts [10].
Configuring Auto Scaling Groups
Once a launch template is created, the next step is to configure the Auto Scaling group. This process involves setting up the group’s parameters and defining its behavior. Here are the key aspects to consider when configuring an Auto Scaling group:
- Group Name: Choose a descriptive name for the Auto Scaling group (e.g., “CodeDeployDemo-AS-Group”) [12].
- Launch Template: Select the previously created launch template as the basis for the group’s instances [12].
- Network Settings: Specify the Virtual Private Cloud (VPC) and subnets where the instances will be launched [12].
- Instance Type: If not specified in the launch template, select the appropriate instance type for the group’s needs [10].
- Scaling Limits: Define the minimum and maximum group size, which represent the boundaries for the number of instances in the group [13].
- Desired Capacity: Set the initial number of instances the group should maintain [13].
- Scaling Policies: Configure rules for automatically adjusting the group’s size based on metrics such as CPU utilization or network traffic [14].
- Health Checks: Implement periodic health checks to ensure instances remain healthy and replace any that become unhealthy [14].
- Tags: Add tags to instances for easier management and identification [12].
Setting Desired Capacity
The desired capacity is a crucial parameter in Auto Scaling groups, as it represents the target number of instances the group should maintain under normal conditions [13]. Here are some key points to consider when setting the desired capacity:
- Initial Capacity: The desired capacity serves as the initial number of instances launched when creating the Auto Scaling group [13].
- Maintenance: The Auto Scaling group attempts to maintain the desired capacity by launching or terminating instances as needed [13].
- Scaling Boundaries: The desired capacity must be equal to or greater than the minimum group size and equal to or less than the maximum group size [13].
- Dynamic Adjustments: When scaling policies are in effect, they can modify the desired capacity within the specified minimum and maximum limits [14].
- Manual Scaling: Administrators can manually adjust the desired capacity, but the Auto Scaling group will always try to return to this value if instances are added or removed [14].
- Flexibility: For greater control, set a wide range between the minimum and maximum capacity, allowing for manual adjustments of the desired capacity as needed [14].
- Automatic Replacement: If an instance terminates unexpectedly (e.g., due to a Spot Instance interruption or health check failure), the Auto Scaling group automatically launches a new instance to maintain the desired capacity [13].
By carefully configuring these components, organizations can create robust Auto Scaling groups that efficiently manage resources, maintain application performance, and optimize costs in response to changing demands.
Designing Effective Scaling Policies
Target Tracking Policies
Target tracking scaling policies automatically adjust the capacity of an Auto Scaling group based on a specified metric and target value. This approach allows applications to maintain optimal performance and cost efficiency without manual intervention [15]. With target tracking, developers select a metric and a target value representing the ideal average utilization or throughput level for their application. Amazon EC2 Auto Scaling then creates and manages CloudWatch alarms that trigger scaling events when the metric deviates from the target [15].
To optimize scaling performance, multiple target tracking scaling policies can be used together, provided each uses a different metric. This approach provides additional information about the load on an Auto Scaling group, enabling more informed decisions about capacity adjustments [15]. For example, utilizing both utilization and throughput metrics can offer a more comprehensive view of the application’s performance.
When creating a target tracking scaling policy, developers can choose from predefined metrics or use custom metrics. Predefined metrics include:
- ASGAverageCPUUtilization
- ASGAverageNetworkIn
- ASGAverageNetworkOut
- ALBRequestCountPerTarget [15]
To use resources cost-efficiently, it’s recommended to set the target value as high as possible while maintaining a reasonable buffer for unexpected traffic increases [15].
Step Scaling Policies
Step scaling policies offer more granular control over scaling actions compared to simple scaling policies. They allow developers to define separate policies for scaling out (increasing capacity) and scaling in (decreasing capacity) based on CloudWatch alarms [8]. The key advantage of step scaling is the ability to apply different scaling adjustments based on the size of the alarm breach [8].
To implement step scaling:
- Create a CloudWatch alarm that monitors a specific metric for the Auto Scaling group.
- Define the metric, threshold value, and number of evaluation periods that determine an alarm breach.
- Create a step scaling policy that specifies how to scale the group when the alarm threshold is breached.
- Add step adjustments to the policy, defining different actions based on the breach size [8].
Step scaling policies support three adjustment types:
- ChangeInCapacity: Increment or decrement the current capacity by a specified value.
- ExactCapacity: Change the current capacity to a specified value.
- PercentChangeInCapacity: Increment or decrement the current capacity by a specified percentage [8].
When configuring step adjustments, it’s crucial to ensure that the ranges don’t overlap or have gaps. Additionally, only one step adjustment can have a null lower bound (negative infinity) or a null upper bound (positive infinity) [8].
Scheduled Scaling
Scheduled scaling allows developers to set up automatic scaling for applications based on predictable load changes. This approach involves creating scheduled actions that adjust the Auto Scaling group’s desired capacity at specific times [16]. Scheduled actions can be configured for one-time scaling events or recurring schedules [16].
To create a scheduled action, developers specify:
- The Auto Scaling group
- When the scaling activity should occur
- The new desired capacity
- Optional new minimum and maximum capacity [16]
For recurring schedules, a cron expression and time zone can be used to describe when the scheduled action should recur. Alternatively, the AWS Management Console offers recurrence pattern options based on cron expressions [16].
When implementing scheduled scaling, it’s important to consider the following:
- If a start time is specified, Amazon EC2 Auto Scaling performs the action at that time and then based on the specified recurrence.
- If an end time is specified, the action stops repeating after that time.
- Scheduled actions do not persist in the account once they reach their end time [16].
By default, recurring schedules are set in Coordinated Universal Time (UTC), but the time zone can be changed to correspond to local time or another network part. When specifying a time zone that observes Daylight Saving Time (DST), the action automatically adjusts for DST [16].
To temporarily disable scheduled scaling without deleting the actions, developers can suspend the ScheduledActions process for an Auto Scaling group [16]. This feature provides flexibility in managing scaling activities during maintenance periods or other scenarios where temporary suspension is necessary.
Optimizing Performance with Dynamic Scaling
Dynamic scaling is a powerful feature in Amazon EC2 Auto Scaling that automatically adjusts the capacity of an Auto Scaling group based on real-time metrics. This approach enables applications to maintain optimal performance and cost efficiency without manual intervention [17]. To implement effective dynamic scaling, organizations should focus on three key areas: implementing CloudWatch alarms, configuring dynamic scaling rules, and testing and refining policies.
Implementing CloudWatch Alarms
CloudWatch alarms are fundamental to dynamic scaling, as they monitor metrics and trigger scaling actions when thresholds are breached. To set up effective alarms:
- Choose appropriate metrics: Select metrics that accurately reflect application performance, such as CPU utilization, network traffic, or request count per target [18].
- Define thresholds: Set alarm thresholds that indicate when scaling actions should occur. These thresholds should be based on the application’s performance requirements and expected load patterns [18].
- Specify evaluation periods: Determine the number of consecutive periods a metric must breach the threshold before triggering an alarm. This helps prevent unnecessary scaling actions due to brief spikes in activity [8].
- Configure notifications: Set up alerts to notify administrators when metrics exceed thresholds, enabling manual intervention if needed [18].
Configuring Dynamic Scaling Rules
Amazon EC2 Auto Scaling offers three types of dynamic scaling policies:
- Target Tracking Scaling: This policy automatically adjusts capacity to maintain a target usage level for a specific metric. It’s ideal for applications with steady traffic patterns and predictable usage [17][18]. To implement:
- Select a metric that changes inversely proportional to capacity changes.
- Set a target value representing the ideal average utilization or throughput level.
- Amazon EC2 Auto Scaling will create and manage CloudWatch alarms to trigger scaling events [17].
- Step Scaling: This policy increases or decreases capacity based on metric thresholds using predefined steps. It’s suitable for applications with sudden traffic spikes or drops, allowing fine-grained control over scaling actions [17][18]. To configure:
- Define step adjustments based on the size of the alarm breach.
- Specify scaling adjustments for each step, such as adding or removing a certain number of instances [8].
- Simple Scaling: This policy adjusts capacity based on a single scaling adjustment with a cooldown period between activities. It’s less flexible than step scaling but can be useful in certain scenarios [17].
When configuring scaling policies, consider the following:
- Use target tracking scaling as the primary strategy for most applications [17].
- Implement step scaling for more granular control over scaling actions [18].
- Set appropriate warmup periods for newly launched instances to prevent premature scaling actions [8].
- Define separate policies for scaling out and scaling in to handle different scenarios effectively [8].
Testing and Refining Policies
To ensure optimal performance of dynamic scaling policies:
- Conduct thorough testing:
- Simulate various load scenarios to verify scaling actions occur as expected.
- Monitor CloudWatch metrics to confirm proper functioning of policies [18].
- Analyze performance:
- Review CloudWatch metrics, cost optimization recommendations, and user feedback.
- Identify areas for improvement in scaling behavior [18].
- Fine-tune policies:
- Adjust policy thresholds, metrics, and scaling strategies based on analysis results.
- Optimize for performance, cost, and reliability [18].
- Consider advanced configurations:
- Implement multiple scaling policies to cover different scenarios.
- Be cautious when combining target tracking and step scaling policies to avoid conflicts [17].
By carefully implementing CloudWatch alarms, configuring dynamic scaling rules, and continuously testing and refining policies, organizations can optimize application performance and resource utilization in their AWS environment. This approach ensures that applications can automatically adapt to changing workloads while maintaining cost-efficiency and reliability.
Leveraging Predictive Scaling for Proactive Management
Understanding Predictive Scaling
Predictive scaling is a powerful feature in Amazon EC2 Auto Scaling that uses machine learning to analyze historical workload patterns and forecast future capacity needs. This proactive approach to scaling helps organizations maintain optimal performance and cost efficiency without manual intervention [19]. By examining up to 14 days of historical load data, predictive scaling can detect daily or weekly patterns in traffic flows and generate hourly forecasts for the next 48 hours [20].
This innovative scaling method is particularly well-suited for applications with:
- Cyclical traffic patterns, such as high resource usage during business hours and low usage during evenings and weekends
- Recurring on-and-off workload patterns, like batch processing or periodic data analysis
- Long initialization times, causing noticeable latency during scale-out events [19]
Implementing ML-Powered Scaling
To implement predictive scaling, organizations need to create a predictive scaling policy that specifies the CloudWatch metric to monitor and analyze. The process involves several key steps:
- Data Collection: Predictive scaling requires at least 24 hours of metric data to start forecasting future values. However, for more accurate predictions, it’s recommended to have two full weeks of historical data [20].
- Forecast Generation: Using machine learning algorithms, predictive scaling analyzes the collected data to generate capacity forecasts for the next 48 hours. These forecasts are updated every 6 hours to ensure accuracy [20].
- Mode Selection: Initially, predictive scaling runs in “forecast only” mode, allowing organizations to evaluate the accuracy of predictions without actually scaling the Auto Scaling group. Once satisfied with the forecast data, the policy can be switched to “forecast and scale” mode [20].
- Scheduling Buffer Time: To ensure newly launched instances are ready to handle traffic, organizations can specify a scheduling buffer time using the
SchedulingBufferTime
property or the “Pre-launch instances” setting in the AWS Management Console [20].
Analyzing Predictive Scaling Effectiveness
To maximize the benefits of predictive scaling, it’s crucial to analyze its effectiveness and make necessary adjustments:
- Review Recommendations: Before actively scaling an Auto Scaling group, organizations should review the recommendations and data provided in the Amazon EC2 Auto Scaling console. This helps ensure that predictions are accurate and suitable for the specific workload [21].
- Compare Multiple Policies: For effective analysis, it’s recommended to have at least two predictive scaling policies to compare. This allows organizations to evaluate different metrics and target value combinations [21].
- Assess Impact: The Amazon EC2 Auto Scaling console provides information on the availability and cost impact of each policy. This data helps in choosing the most appropriate scaling strategy for the application [21].
- Monitor Forecast Accuracy: Organizations can review historical forecasts in the console to visualize how well the policy performs over time. This information is crucial when deciding whether to allow a policy to scale actual capacity [21].
By leveraging predictive scaling, organizations can proactively manage their resources, ensuring optimal performance during peak times while potentially reducing costs by avoiding over-provisioning during periods of low demand [19].
Integrating Auto Scaling with AWS Services
Auto Scaling with ELB
Elastic Load Balancing (ELB) plays a crucial role in distributing incoming application traffic across multiple EC2 instances. When integrated with Auto Scaling groups, ELB acts as a single point of contact for all incoming web traffic, optimally routing requests to prevent any single instance from being overwhelmed [22].
To use ELB with an Auto Scaling group, administrators simply need to attach the load balancer to the group. This process automatically registers the group with the load balancer, eliminating the need to manually register individual EC2 instances [22]. As instances are launched or terminated by the Auto Scaling group, they are automatically registered or deregistered from the load balancer, respectively [22].
ELB offers four types of load balancers compatible with Auto Scaling groups:
- Application Load Balancers: Route and balance traffic at the application layer (HTTP/HTTPS), supporting path-based routing.
- Network Load Balancers: Handle traffic at the transport layer (TCP/UDP), retaining the client’s source IP.
- Gateway Load Balancers: Distribute traffic to a fleet of appliance instances, ideal for third-party virtual appliances.
- Classic Load Balancers: Route and balance traffic at either the transport or application layer [22].
To attach an existing load balancer to an Auto Scaling group, users can select the appropriate option in the AWS Management Console. For Application, Network, or Gateway Load Balancers, they should choose a target group, while for Classic Load Balancers, they can directly select the load balancer [23].
Auto Scaling with RDS
While Amazon RDS doesn’t support automatic horizontal or vertical scaling, it does offer manual scaling options to accommodate changing workloads. Vertical scaling, or resizing an RDS instance, can be performed with a simple click in the AWS Management Console [24]. This approach is suitable when application and database connectivity configurations cannot be altered.
For horizontal scaling, RDS supports the creation of read replicas to distribute read operations across multiple nodes. This feature is available for MySQL, MariaDB, Oracle, PostgreSQL, and SQL Server engines [24]. Additionally, Amazon RDS Proxy can be employed to support hundreds of thousands of connections, enhancing application scalability and resilience to database failures [24].
To implement a form of automated scaling for RDS, administrators can create a script using the AWS CLI to modify the database instance class based on CPU usage. For example, the script could trigger an upscale when CPU usage exceeds 90% and downscale when it falls below 60% [25].
Auto Scaling with DynamoDB
Amazon DynamoDB offers built-in auto scaling capabilities through the AWS Application Auto Scaling service. This feature dynamically adjusts provisioned throughput capacity in response to actual traffic patterns, helping to maintain performance during sudden traffic increases while optimizing costs during periods of lower demand [26].
To enable DynamoDB auto scaling, users create a scaling policy that specifies:
- The table or global secondary index to manage
- The capacity type (read or write) to adjust
- Upper and lower boundaries for provisioned throughput
- The target utilization ratio [26]
When auto scaling is enabled, Application Auto Scaling creates CloudWatch alarms to monitor the table’s actual utilization. If utilization deviates from the target for a sustained period, the alarms trigger adjustments to the provisioned capacity [26].
To implement DynamoDB auto scaling using infrastructure as code, administrators can use CloudFormation templates or Terraform. Alternatively, the AWS Management Console provides a user-friendly interface for enabling and configuring auto scaling features [27].
Conclusion
Mastering application scaling on AWS has a significant impact on an organization’s ability to maintain optimal performance and cost-efficiency in the cloud. By leveraging Auto Scaling groups, effective scaling policies, and integrations with various AWS services, businesses can create robust and adaptive infrastructures. This approach enables applications to handle fluctuating demands seamlessly, ensuring reliable performance during peak times and cost savings during periods of lower usage.
To wrap up, the journey to master AWS Auto Scaling involves a deep understanding of fundamental concepts, careful planning, and continuous refinement of scaling strategies. By implementing dynamic and predictive scaling techniques, organizations can proactively manage their resources and stay ahead of changing workloads. This proactive approach not only enhances application performance but also optimizes resource utilization, ultimately leading to improved user experiences and more efficient cloud operations.
FAQs
Currently, there are no frequently asked questions available for “Master Application Scaling on AWS: A Step-by-Step Guide.” Please check back later for updates.
References
[1] – https://www.simplilearn.com/tutorials/aws-tutorial/aws-auto-scaling
[2] – https://www.projectpro.io/recipes/explain-auto-scaling-and-its-components
[3] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html
[4] – https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-a-scaling-plan.html
[5] – https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html
[6] – https://docs.aws.amazon.com/autoscaling/plans/userguide/best-practices-for-scaling-plans.html
[7] – https://docs.aws.amazon.com/autoscaling/plans/userguide/gs-configure-scaling-plan.html
[8] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html
[9] – https://docs.aws.amazon.com/autoscaling/application/userguide/getting-started.html
[10] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html
[11] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html
[12] – https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-auto-scaling-group.html
[13] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html
[14] – https://stackoverflow.com/questions/26882408/what-desired-instances-is-needed-for-aws-amazon-webservices-autoscaling-group
[15] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html
[16] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html
[17] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html
[18] – https://www.withcoherence.com/articles/10-best-practices-for-effective-auto-scaling-on-aws
[19] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html
[20] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/predictive-scaling-policy-overview.html
[21] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/predictive-scaling-graphs.html
[22] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html
[23] – https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html
[24] – https://aws.amazon.com/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizontally/
[25] – https://stackoverflow.com/questions/34065157/does-aws-support-autoscaling-for-rds-instance
[26] – https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html
[27] – https://trendmicro.com/cloudoneconformity/knowledge-base/aws/DynamoDB/auto-scaling.html