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.

Storage
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/Exportmove large amounts of data into and out of AWS
Database
Simple DBrun queries on structured data in real time
Relational Database Service (RDS)set up, operate, and scale a relational database in the cloud
ElastiCachedeploy, operate, and scale an in-memory cache in the cloud
Messaging
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
Networking
Route 53highly available and scalable DNS web service
Virtual Private Cloud (VPC)set up VPN, firewall, security to AWS resources in the cloud
Elastic Load Balancingdistributes incoming traffic across multiple EC2 instances
CloudFrontdistribute content with low latency via a global CDN
Management, deployment, monitoring
AWS Elastic Beanstalkdeploy and manage applications in the AWS cloud
AWS CloudFormationcreate and provision a collection of related AWS resources
CloudWatchmonitoring for AWS cloud resources
Auto Scalingautomatically 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.

DataArt gained experience in developing Java and LAMP applications designed to run on Amazon EC2 cloud platform through a series of successfully delivered enterprise-level projects.

See also: