Amazon EC2 is part of AWS platform. EC2 stands for Amazon Elastic Compute Cloud, and it allows individuals and businesses of all sizes to rent virtual computing resources in the cloud.
An EC2 resource is called an Instance, and they can be provisioned for a variety of tasks on-demand. You can typically run anything that you might setup using your own server within an instance on EC2, but without the burden of managing physical hardware like racks, servers, disks and switches.
EC2 is extremely scalable in the sense that you pick and adjust the exact computing resources available to your application. You can start with a small resource allocation, such as the free tier, and as your application grows you can allocate more powerful hardware at an instant. For applications that need to be rapidly re-scaled, this can be vastly more cost effective than an on-premise solution where you may need to lease or pay upfront for computer hardware only to have it become obsolete as your application grows.
What are some applications of EC2?
EC2 is extremely flexible and can be used to run nearly every application. Some common applications of EC2 may include:
- Web servers running content management systems like Wordpress, Joomla, Drupal or Ghost.
- Servers for online games.
- Servers performing long-running tasks such as web crawling, data mining and image processing.
- Database and REST API servers.
- Servers for file storage, source control and collaboration.
- Continuous integration resources.
What are the advantages for EC2?
As a matter of fact, EC2 is the world's largest cloud hosting provider, so there are plenty of advantages for using their services:
- Your applications have access to the latest and greatest computing hardware without the upfront cost.
- Your applications are hosted inside a world-class network, granting you access to unfathomable upload and download speeds, with the capability to serve millions of concurrent users.
- There is no commitment to continue paying for computing resources if you need to scale your application up or down.
- You take advantage of an expert team that works around the clock to transparently monitor, install, upgrade and migrate failed hardware without your intervention.
- For many businesses, the likelihood of a server outage is reduced when hosting applications on EC2 compared to using their in-house resources which may not be as tightly controlled.
- You have access to a wide range of other cost effective AWS products that seamlessly integrate with EC2 hosted applications.
- EC2 tends to be very cost competitive when compared to other cloud hosting providers.
- There is a very generous free hosting tier for small projects.
What are the disadvantages for EC2?
Although we strongly advocate EC2, it's only fair to be transparent about some of the disadvantages to the AWS ecosystem:
- Because you do not have access to the physical hardware, in many cases you cannot use peripherals with EC2 instances.
- Transferring large amounts of data or disk images into the cloud can be limited by your own internet connection and thus may be time consuming when compared with an on-premise solution.
- Once your application is setup within the AWS ecosystem, it can be difficult to leave the ecosystem as you have probably integrated deeply with other AWS services such as ELB or Route 53.
- It is common for businesses to use autoscaling with EC2 to increase or decrease the resources available to your application depending on the demand, but it is not uncommon for the autoscaling to agressively allocate new resources and this can result in bill shock if it is left unmonitored.