Q: What is High Availability?
High Availability (HA) is an environment configuration that ensures that your application is always available to serve requests from users. For a typical web application, configuring for HA requires running multiple web servers behind a load balancer, configuring Auto Scaling to replace lost instances and launch more instances in response to surges in traffic, and having a standby database instance configured for automatic failover. These measures ensure that your application will continue to serve traffic if infrastructure failure affects any single resource, and that it can handle increases in traffic without running enough servers to handle max capacity at all times. For AWS Elastic Beanstalk, production HA configuration also includes running your database instances outside of your web server environment which allows you to perform blue/green deployments and advanced database management operations.
Q: How long will it take for the stack to come up and running?
Launching a new Elastic Beanstalk environment usually takes less than 5 minutes, but may take longer if you launch a large number of instances or include a database instance. A database instance takes about 10 minutes to launch.
Q: Can I customize my app once it is hosted on AWS?
Most settings on your Elastic Beanstalk environment can be changed after launch. Application name, environment name, platform, and VPC assignment cannot be changed.
Q: What is the benefit of hosting an application on AWS and Elastic Beanstalk?
Elastic Beanstalk provides monitoring tools, resource management, and simple configuration options that make it easy to manage environments. You can simply upload your code and Elastic Beanstalk automatically handles the deployment, from capacity provisioning, load balancing, auto-scaling to application health monitoring. At the same time, you retain full control over the AWS resources powering your application and can access the underlying resources at any time.
Q: Will I own the resources in the stack?
All of the resources in your environment except the CNAME record that points to your load balancer are launched under your account. To avoid drift, you should only manage these resources using the functionality provided by Elastic Beanstalk.
Q: How can I change the configuration of my environment after it is created for me?
You can use the Elastic Beanstalk Management Console or EB CLI to change settings on a running environment, or save an environment's current configuration and apply it to another environment. You can also use configuration files to configure and extend the resources in your environment in the source code of your application.
Q: How do I scale my app in the event of more traffic?
Configure your environment's Auto Scaling group to launch more instances when traffic reaches a predefined threshold.
Q: How do I update the application?
Deploy a new version of your application's source code to a running environment with the Elastic Beanstalk Management Console or EB CLI.
Q: Can I make my application non-highly available?
Yes, you can change your environment type to Single Instance to remove the load balancer, and launch a single-AZ database instance to reduce the number of resources needed to run your environment.