Amazon Web Services provides a number of application management services for developers and administrators. Provided at no additional charge, AWS Elastic Beanstalk, AWS OpsWorks, and AWS CloudFormation allow you to manage your applications on the AWS cloud with added convenience and control. Whether your application is simple or complex, large or small, AWS has an application management solution to meet your needs.

If You Need Consider Using
An easy-to-use service for building web apps and web services with popular application containers such as Java, PHP, Python, Ruby and .NET
AWS Elastic Beanstalk. You upload your code and AWS Elastic Beanstalk automatically does the rest. AWS Elastic Beanstalk supports the most common web architectures, application containers, and frameworks.
A powerful end-to-end platform that gives you an easy way to manage applications of nearly any scale and complexity without sacrificing control
AWS OpsWorks. You model, customize, and automate the entire application throughout its lifecycle. AWS OpsWorks provides integrated experiences for IT administrators and ops-minded developers who want a high degree of productivity and control over operations.
A building block service that enables customers to provision and manage almost any AWS resource via a domain specific language
AWS CloudFormation. You define JSON templates and use them to provision and manage AWS resources, operating systems and application code. AWS CloudFormation focuses on providing foundational capabilities for the full breadth of AWS, without prescribing a particular model for development and operations.
Compute capacity that you manage manually or using third-party tools
Amazon EC2 directly for complete control over your instances. Add à la carte management tools like Auto Scaling and Amazon CloudWatch monitoring.

Managing an application typically includes the following activities:

Application Architecture Modeling – The AWS application management services support a wide variety of application architectures from simple web applications to highly complex applications. You can model your application to represent attributes such as layers and versions using graphical interfaces or a JSON-based DSL.

AWS Resource Provisioning – Your application is built on AWS resources such as Amazon EC2 instances and Amazon EBS volumes. The AWS application management services let you predictably configure, provision and update the resources your application uses.

Application Deployment – You need to get your application deployed to Amazon EC2 instances in a reliable and automated fashion. AWS offers a number of deployment mechanisms through its application management services that allow you to safely and reliably deploy software to one Amazon EC2 instance or to thousands.

Monitoring – Once you deploy your application on AWS, you will want to monitor its health. The AWS application management services provide built-in monitoring that helps you run your operations like a pro from day one.

Auto Scaling – Are you ready for your first spike in traffic? The AWS application management services provide load-based or time-based auto scaling policies that automatically increase capacity and help your application grow. You can sleep at night knowing that your application is scale-ready.

Configuration Management – Configuring software is error prone and difficult. You have to reproducibly manage many moving parts including installation scripts, patch management, or initialization tasks. The AWS application management services let you define and maintain versioned software configurations that can be reproduced and applied to new instances.

Automation – Once you have software configuration, automation tools allow you to manage your app over its lifetime by dynamically reproducing and applying those configurations to new instances. Automation tools also give you the power to manage automatic failover, schedule backups, perform patch management, and configure RAID volumes on EBS.

Instance Group Management – Using the AWS application management services, you can see all the Amazon EC2 instances used by your application and easily perform actions across that group of instances, such a collecting log data, graphing metrics, or installing a software package. There is no longer a need to log in to several machines individually to manually update your configuration.

Curated Software – Most applications rely on a set of software packages. The AWS application management services provide a set of curated software packages to help you get started quickly and seamlessly, as well as the flexibility to run virtually any custom software. The AWS Marketplace also offers software from third-party vendors.

The table below describes how the AWS application management services approach these management activities:

  AWS Elastic Beanstalk AWS OpsWorks AWS CloudFormation
Application Architecture Modeling Supports the most common web architectures, application containers, and frameworks.

You choose from a set of application containers that use industry standard web architectures to create applications, environments, and versions.
Supports a wide variety of application architectures, from simple web applications to highly complex custom applications.

You define your application architecture using stacks, layers, and Chef recipes. Each layer defines a set of resources that are managed together in an automated fashion.
Supports a wide variety of application architectures, from simple web applications to highly complex custom applications.

You define your application as stacks of related resources using a JSON-based domain specific language. Stacks are used to provision and manage.
AWS Resource Provisioning Supports the core resource types for web apps: Amazon EC2 instances, ELB for load balancing, Amazon RDS for databases, Amazon CloudWatch, and Amazon VPC. Supports the core resource types needed for most applications: Amazon EC2 instances, Amazon EBS volumes, Elastic IPs, and Amazon CloudWatch. Supports the widest variety of AWS resource types (see the CloudFormation FAQ for a full list).
Application Deployment Supports incremental deployments of web apps using Git, as well as deployment integration with Eclipse and Visual Studio. Supports Git, SVN, or archive checkouts, partial and staggered deployments, rollbacks, and hooks for tools integration. Deploy multiple apps per tier. Ability to execute template-defined deployments with hooks for external scripts.
Monitoring Automatically provides application and infrastructure health monitoring. Provides application, instance, and service-level monitoring using Amazon CloudWatch and Ganglia. N/A
Auto Scaling Load-based auto scaling of your web tier. Time-based and load-based auto scaling for any tier of your application. Easily integrates with Auto Scaling.
Configuration Management Versioned software environments with YAML-based configuration files. Versioned software configuration based on Chef recipes that dynamically update instances. Flexible template-based software configuration.
Automation Automatic replacement of impaired Amazon EC2 instances for web apps. Automatic failover, auto healing, patch management, RAID setup on Amazon EBS volumes, and more. N/A
Instance Group Management Manage and organize your resources as applications. Take back control and look under the hood if needed. Manage and organize your resources as stacks. Execute scripts and updates centrally without having to log in to several machines. Manage and organize your resources as stacks. Provision, configure, and manage resources based on templates.
Curated Software Ready-to-use, managed application runtimes for Java, PHP, Python, Ruby, and .NET. Predefined application stacks, as well as support for custom scriptable runtimes, including hundreds of community-based Chef “cookbooks”. Declaratively defined runtimes and community-based templates. Visit the AWS Marketplace for more details.