Amazon EC2 Application Development
Amazon EC2 is the most advanced and popular cloud computing platform
Amazon Elastic Compute Cloud commonly referred to as Amazon EC2 is the core of the Amazon Web Service (AWS), the most advanced and popular cloud computing platform. The platforms allows users to rent virtual machines hosted in Amazon data centers and scale the number of instances on demand. Another part of the platform is a variety of web services supporting hosted applications (storage, database, cache, management and many others), which are also available to external applications.
Amazon EC2 runs a virtual machine from the image provided by the user, giving him a full control over the environment. While it’s beneficial for users who demand customized environments, it imposes a burden of maintaining the environment. Amazon EC2 is different from Windows Azure which goes one level up and relieves users from the need to maintain the environment, allowing them to focus on the application itself, but at the price of locking the environment to clean Windows operating system. It’s worth mentioning that Amazon arms users with a large library of pre-configured machine images to facilitate deployment process.
Since EC2 allows hosting an arbitrary virtual machine image, moving applications to the cloud is straightforward and doesn’t require any code change. However, to take full advantage of cloud computing and to make the application scalable it should employ Amazon Web Services (AWS) provided by the platform.
Amazon Web Services (AWS)
Here we list major services provided by the Amazon cloud platform grouped by category. Detailed information is available on Amazon web site.
|Simple Storage Service (S3)||store and retrieve large amounts of data|
|Elastic Block Store (EBS)||block level storage volumes for use with EC2 instances|
|AWS Import/Export||move large amounts of data into and out of AWS|
|Simple DB||run queries on structured data in real time|
|Relational Database Service (RDS)||set up, operate, and scale a relational database in the cloud|
|ElastiCache||deploy, operate, and scale an in-memory cache in the cloud|
|Simple Queue Service (SQS)||hosted queue for storing messages|
|Simple Notification Service (SNS)||set up, operate, and send notifications from the cloud|
|Simple Email Service (SES)||highly scalable bulk email-sending service for the cloud|
|Route 53||highly available and scalable DNS web service|
|Virtual Private Cloud (VPC)||set up VPN, firewall, security to AWS resources in the cloud|
|Elastic Load Balancing||distributes incoming traffic across multiple EC2 instances|
|CloudFront||distribute content with low latency via a global CDN|
|Management, deployment, monitoring|
|AWS Elastic Beanstalk||deploy and manage applications in the AWS cloud|
|AWS CloudFormation||create and provision a collection of related AWS resources|
|CloudWatch||monitoring for AWS cloud resources|
|Auto Scaling||automatically scale EC2 capacity as per predefined conditions|
AWS Application Development
Developing cloud applications for Amazon EC2 implies integrating with AWS which are available via REST API. There are many tools and libraries available for different languages. Amazon provides AWS Toolkit for Eclipse which includes a plug-in for Eclipse Java IDE and AWS SDK for Java to make the development easier.