Nowadays, cloud computing is everywhere. In the simplest terms, cloud computing is storing and accessing different data and programs over the internet and the fundamental building block for that is Infrastructure as a Service (IaaS). IaaS provides support natural development, testing, and usage of the application within the cloud environment. In this article I will give you a quick intro to IaaS and then compare five providers: Amazon EC2, Google Compute Engine, IBM’s SoftLayer, Microsoft Azure and Digital Ocean.
IaaS helps us to avoid the complexity of buying and operating our own servers. Moreover, maintenance and upgrading of softwares is not required. With these benefits, it is obvious that it has lower infrastructure costs in many scenarios, thus helping new organizations who do not have time and capital to invest in their own hardware.
Some of the other benefits of IaaS include:
- services are distributed as a vast array of resources
- being flexible, IaaS provides dynamic scaling
- cost is variable as per usage
- multiple users can use a single piece of hardware
- location independence: the service can usually be accessed from anywhere as long as there is an internet connection and the security protocol of the cloud allows it
Now that you are aware of the benefits of IaaS for building your web app, all you have to do is decide which solution to pick. The only problem is that there are so many choices today. As a Java developer, I initially struggled a bit when evaluating various IaaS providers. So in this article, I am going to describe the five best solutions for hosting Java web apps and compare them with each other.
Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides resizable compute capacity in the cloud. It helps in launching and managing server instances, thus making it suitable for developers for web-scale computing. You can use server instances for any legal purposes as per your requirement.
Instances are available in different sizes and configurations. EC2 allows AWS to provide different instance types that you can use to meet specific needs. So, you can start different VMs depending on your needs. If you are deploying a Java app, you can install your app server (Tomcat, Web Sphere, etc.) into one VM and use other services like micro-services, databases, etc. on separate VMs with appropriate configurations. More details, specifically on how AWS works with Java, can be found here.
With Amazon EC2, one has the choice of different instance types, operating systems and software packages which makes it flexible. Amazon EC2 has a memory, CPU, and instance storage configuration which helps in storage selection. Also, you can choose the boot partition size that is optimal for your choice of operating system and application.
The only demerit of using EC2 can be the expenses. As my workflows became more complicated and I used more services it was hard to project costs. However, to help estimate the costs, Amazon offers a monthly calculator.
The networking is not as flexible as compared to other service providers. Since a lot of data has to move from one end of LAN to another, the data traveling distance is much longer than it needs to be leading to congestion problems commonly seen on the internet.
Amazon EC2 is an industry standard today. Many leading websites and apps use EC2. Some of the prominent ones are Instagram, Reddit, Netflix, Adobe Systems, Smugmug, and many more. There are many articles on Amazon’s collaboration, for example why Netflix chooses Amazon.
Continue reading %Top 5 IaaS Solutions for Hosting Java Applications%