Choosing Cloud Service Providers: Amazon Vs OpenStack
- Created on 23 August 2016
Choosing a cloud based platform is a common struggle for many users, as there are many factors to consider. In this article we will compare and contrast two of the most popular cloud based platforms, Amazon Web Services and OpenStack, in order to assist individuals on making the decision that best suits their needs. We will also share the reasons for our company’s choice in cloud providers, as well as how we use these services.
What is Amazon and OpenStack?
Amazon Web Services (AWS) is a public cloud service that provides a way for users to access servers, storage, databases, and a broad set of application services over the internet. Amazon Web Services own and maintain the network connected hardware required for these application services. AWS can be managed through a web UI or an API. OpenStack is a cloud based operating system that controls large pools of compute, storage and networking resources. OpenStack is managed through a dashboard or command line and empowers users to self-provision using a GUI or CLI data resources and delivers high quality services.
Amazon Web Services
- Amazon’s ecosystem: Large ecosystem of management software - independent software vendor (ISV), Platform as a service (PaaS) and SaaS are all just customers of AWS, they are not contributors or I&O peers
- AWS architecture and operational procedures are very much their own and few outside the company know how it works
- Had many different services, which are based on third party apps
- Very quick at enhancing their services and adding new ones
- Cost: Charges by the hour or per GB for traffic and storage space
- Focused more on the public cloud service market
- Located in 13 geographical regions, covering nearly the whole global map
- Capable of building up service infrastructure which can serve millions of users
- OpenStack’s ecosystem: Includes many of the same as listed for AWS, as well as government agencies, service providers, and enterprises who are implementing OpenStack
- OpenStack is a fully opened source, individuals who would like to know how it works can download the code and it’s very well documented
- Focused more on the private cloud service market
- Supports mixed hypervisor and bare metal server environments
- More than 100 companies are contributing code to it
- Cost: Open source code that you deploy on your own servers or that you buy from a commercial vendor and you need your own operations staff for it
Comparing and contrasting both services
There are a few significant differences between Amazon and OpenStack that should be considered when making the decision on which service is right for your company. One of the most significant differences is that AWS is a closed source, very few people outside the company know how the architecture and operational procedures work. OpenStack however, is a fully opened source, therefore individuals who would like to know how it works can download the code, and it’s very well documented.
Another significant difference between these two cloud services is their ecosystems. OpenStack’s ecosystem includes government agencies, service providers and enterprises. This means that if you choose to utilize OpenStack for your private cloud, there is a network you can contact at all times if you experience a crisis that can diagnose the problem due to their knowledge on the software.
Although Amazon web services and OpenStack are both large cloud service providers they are not necessarily direct competitors. AWS primarily targets the public cloud service market, whereas OpenStack primarily targets the private cloud service sector.
Below is a Google trends graph displaying the popularity of both AWS and OpenStack cloud services from 2004 to the present. However, it is important to note that AWS was created a few years before OpenStack.
The case for ITware
In order to give our readers a better perspective, we will share our experience with these services. In the previous year’s our company has done several developments for smaller projects, we had a small server room with about 6 hypervisors, and a datacenter colocation space with further 4 servers. As our company grew, we began to receive larger clients with numerous parallel ongoing projects. These projects included ongoing stress testing, complex infrastructure and geo-distributed services. It was obvious that the company’s current infrastructure was unable to serve these needs.
We’ve chosen the Amazon Web Services to build up our infrastructure. Mostly we’ve used the EC2 as an IaaS for virtual machine instances, we also used the Route 53 service for DNS. For some R&D tasks we’ve used the RDS service (database clustering) and the EMR (elastic map reduce) for some big data projects. The high variety of network configurations (security policies, routes, site-to-site VPNs) of the AWS has made our virtual datacenter nearly transparent, some of the developers in the office don’t know about that, it’s a remote site.
We have done some cost saving improvements on the AWS environment. We have a little auxiliary system, called CostSavingScheduler. This system has allowed us to shut down nearly all of our virtual machines at 18.00 and switched them back on at 08.00. Weekends and holidays are also downtime timeframes. The reason for this is that we are only developing on these infrastructures or running tests, therefore we only need them turned on during work hours. This has allowed our company to cut costs by 50 percent! Another advantage of the CostSavingScheduler system is that the developers learned how to configure the systems up to be able to start without any human interaction, even if they are clusterized or geo-distributed. This possibility to reduce costs significantly was one of the key reasons for our decision to stay with AWS.
Maybe switch to OpenStack?
Our biggest client is based on a self-hosted OpenStack based private cloud, we had often disputed in the company if it good to use two different cloud platforms - one for the development, and one for the deployments and live production environments.
Most of the services were developed as microservices, used Docker Swarm, Kubernetes and Hashicorp tools (Consul and Nomad). Therefore, we were developing the software on an abstraction layer on a top of the infrastructure.
We examined the possibilities; entry, migration and operating costs of implementing OpenStack into our business model. The pure server renting costs could be nearly half the cost of what we pay for AWS, however, we would have to hire new operations team members to manage the infrastructure. That alone would cost us more than the AWS ops on a monthly basis. In addition to the cost issue, switching to OpenStack requires an adequate amount of time and effort to set up the new infrastructure and migrate our machines.
If we disregard the issues stated above, it actually would not have been possible for us to switch to OpenStack because our stress tests and testing geo-distribution services need virtual datacenters/virtual machines in the AWS.
How we used the cloud providers
We automatized the infrastructure spin-ups with some infrastructure management tools, like AWS provider for Kubernetes as well as Hashicorp Terraform for anything else. With that, we were able to spin up custom virtualized infrastructures easily.
Terraform has multiple provider modules, for GCE, Microsoft Azure, AWS and OpenStack. With that being said, if the infrastructure setup scripts were well-written then it would be transparent to the underlying infrastructure layer.
During the development we tried to stay infrastructure independent as much as possible. Some AWS specific solutions, like EMR and RDS, were only for small R&D projects, after the first phases these systems were either re-implemented from scratch by building them by hand, utilized by Terreform for raw Linux setups, or containerized.