There are three main players in the race for cloud services providers - between them, they provide all products you might need for moving your business to the cloud. But these product offerings differ in pricing as well as the naming of their services - which can be confusing at times.
Here’s a quick guide to compare the services provided by the three main players - Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP).
Please note - this is by no means a comprehensive document - the product offerings by AWS, Azure and GCP are vast and it is always a good option to consult with a trusted technology partner to select the correct provider for your requirements. This guide is intended to make you familiar with some of the most commonly needed products for cloud.
Why move to the cloud?
Companies from both the public & private sector (Netflix, AirBNB, PBS and many more) increasingly rely on cloud services for their online operations. This allows them to concentrate on their core business idea and leave the infrastructure needs to the experts. In this day and age of constantly changing demand, setting up a physical infrastructure to provide such online services would get very expensive and time-consuming - with a team of technicians, lot of extra budget for servers, constantly changing hardware requirements and so on. With the help of cloud offerings provided by these players, a lot of startups find it quick and affordable to start their own ventures without these technical challenges.
Pricing for products and services you use from these providers will depend largely on the computing power you need, the number of instances you deploy and the location. But some major advantages of using the cloud as compared to setting up your own physical infrastructure are
No upfront investment
Pay for what you use
No termination fees
Easy scaling up/scaling down
You can read up about the pricing details here - AWS, GCP, Azure
Amazon Web Services (AWS) vs Microsoft Azure vs Google Cloud Platform (GCP)
Amazon introduced IaaS (Infrastructure As A Service) at their first AWS service launched in 2004. It has been a front-runner in the race and has since kept adding features and offerings - giving them an upper hand over competition. To an extent, they are the most expensive in some regards. But they are also the best in terms of service offerings. Google and Microsoft joined the bandwagon later but quickly caught up. This did help bring down the prices which ultimately helps consumers.
Here’s a quick comparison of all the offerings provided by AWS, Azure and GCP and how it affects pricing.
1. Computation Power
This is the core of the services offered by computers - to calculate, to process data — to compute. To get faster processing for data analysis, graphics rendering or faster response time, you either need more hardware OR you can go to the cloud. If you buy hardware, it is yours. But it is also very expensive - purchasing, maintenance and all the idle time where they are not in use. On the other hand, moving to the cloud, you only pay for what you use and it is much easier and faster to scale up or scale down depending on the demand.
Amazon provides EC2 (Elastic Compute Cloud), their on-demand scalable instances. Google provides Compute Engine and Azure has Virtual Machines. While EC2 is arguably the most comprehensive, it can burn a hole in your pocket if you are not careful - the pricing is also a little complex to understand. The same goes for Microsoft Azure’s VMs as well. Google’s Compute Engine has very simple pricing, but it is also the least flexible.
With AWS Elastic Beanstalk and Google App Engine, you also have the option of buying computing processes for mobile and web apps - which significantly reduces cost compared to using EC2 or Compute Engine IF your app fits the specs for these services.
All three providers provide Docker capabilities with AWS ECS, Google Container Engine and Azure Container service.
Azure has another advantage in that it allows deploying Windows client apps with a RemoteApp service which the other two lack.
Storage is another important criteria for cloud services. Using any of these cloud providers, you can store data to the tune of some GBs to many petabytes.
For storage, Amazon’s S3 (Simple Storage Service) has been around for long and is very well documented with many samples as well as third-party libraries. Google’s Cloud Storage and Azure’s Storage also provide equally reliable services, but their resources are not as extensive as S3. Although, Google and Azure somewhat beat S3 on the pricing.
Archiving services are provided at lower rates compared to cloud storage, but it also provides lower access speed. Archiving services are generally used for storing objects which are not accessed regularly. The archiving services provided by Amazon, Azure and GCP are Glacier (AWS), Azure Backup (Azure) and Cloud Storage Nearline (GCP). Azure and AWS also provide solutions for archiving - Data Archive (AWS), Backup and Archive (Azure)
Now comes the interesting and probably a very important part - using the computing, storage and content delivery using analytics. Usually when it comes to solutions hosted on the cloud, they deal with large data sets (big data). And unless we use analytics on this data and gather some important insights, it is pretty much useless.
Analytics on big data can help with many things - predictions, new offerings, cross-selling and so on. But analytics on such large data sets requires specific tools and programming models. Google was forefront in this race due to MapReduce - they came up with a number of products for users - BigQuery, Cloud Dataproc (managed Spack & Hadoop), Cloud Dataflow (data processing in real time), Cloud Datalab, Cloud Pub/Sub (streaming data and messaging) and even Genomics (for processing genomic data)!
While Google has taken the lead on Big Data, Amazon takes the cake with QuickSight - an offering they provide for businesses to make sense of large amounts of structured and unstructured data. It helps businesses identify opportunities based on data sets and various strategies. This helps businesses where they don’t see the need to have a team of data scientists implementing solutions for analyzing their data - but still need to gather insights from the data they capture.
When deploying your cloud services, location is very important - you should choose a data center which is close to your primary users. For instance if you are providing services to users in the East Coast of United States, it would be best to deploy your services there. This will reduce the response time and also offer better user experience. CDNs also help here for faster delivery of resources.
Amazon wins hands-down in this area - it has the most extensive coverage closely followed by Azure (although Azure has very good coverage in Asia). Google has a good coverage in United States, but not so much in Europe or Asia.
When selecting the location, do keep in mind that different locations cost different. United States and Europe generally offer the cheapest options. You can find more information here - AWS global reach, Azure regions, Google cloud locations
Google cloud locations
5. Other products & services
These are the main service offerings provided by any cloud providers. But that is not the end. Here’s a quick list of other resources/services you might be interested in
Then there’s developer tools, security offerings, disaster recovery tools and so on.
Other Service Providers
While Amazon, Microsoft and Google are the big names in cloud providers, there are many small providers who offer some very competitive pricing. Many of them focus on indie developers rather than companies and can be worth giving a shot - esp if you need moderate scaling. Some examples include
Ruby on Rails (ROR) is a web development framework developed in Ruby. It simplifies and abstracts repetitive tasks and aids in speedy application development. Programmers love this language because of its simplicity, agility, elegance and speed.
The key principle of RoR is convention over configuration. Rails comes with a set of conventions which saves programmers time in configuring files in order to set-up.
Why ROR for App Development?
Rails is a start-up friendly language. It is easy to use and understand and provides ample scope for development and scalability. Many startups in the recent decade have opted for Ruby. These include names like GitHub, Basecamp, SlideShare, Groupon etc. Rails is so loved because of it’s developer friendly command line and online support. To ease it for you, we have listed some of the most prominent plus points of Ruby on Rails.
Speed is the biggest competitive advantage of RoR. Rails is developed to support rapid application development(RAD). The Modal View Controller (MVC) in ROR is beautifully implemented and it focuses on (DRY) Don’t Repeat Yourself. These principles reduce the time consumed on app development and help programmers work at fast pace. Availability of good testing frameworks also helps in bug fixing. The ease of accommodating changes makes Rails the best pic for fast application development.
The code in rails is more like read as you go type. If properly written, the code needs very less documentation. This means that it is easier for new developers to catch-up on the project and start working. The self-documentary feature saves developers time spent in writing documentations.
Agile is the use of incremental, iterative and empirical processes to respond to project uncertainties. There is a wide gap between the thinking of a developer and the client, on how development works. Agile methodology is the way to improve communication and handle changing client’s requirements in real time. It is an alternative approach to traditional sequential development.
Rails is built on a completely open source platform. The combination of Linux and Ruby (both open source) provide great incentives for start-ups as they are always tight on budget. Since Rails and most of its libraries are open source, there are no costs involved in licensing. Not to forget, savings in development time are also cost cuts.
The only two downsides of Rails are the lack of experienced professionals and compatibility issues. Finding an experienced programmer is difficult as there are very few techies who are good with Rails. Many experienced professionals in Java and PHP have still not adopted RoR completely. ROR is developing at a very fast speed and its techie friendly nature aligns with the skilled developer's mindset.
RoR is much more resource intensive as compared to PHP thus many hosts are yet to develop support for it. Rails is usually not a good bet for low-end shared hosts. But this by no means is an end in itself. Heroku and EngineYard are among the best hosts providing such services. Alternatively, you can host it on a Virtual Private Server (VPS) with Amazon EC2, Rackspace, or Linode. You can then enjoy complete control over your server and can allocate resources to your application as needed.
In the past few years, we have seen a huge change in trends in the space of databases. A new emerging trend has been the usage of NoSQL ("not only SQL"). NoSQL came into picture when developers realized the need for an agile delivery system which is easily able to process unstructured data. The system needed to be extremely dynamic and relational databases did not quite cut it. A relational database model may not be the best solution for all situations. An alternative, more "cloud-friendly" approach was to employ NoSQL instead. This is where Amazon DynamoDB and MongoDB come in handy.
NoSQL is a whole new way of thinking about databases. It is not a relational database. MongoDB, the most famous of NoSQL offerings, uses a documents model. A MongoDB database holds a collection which is a set of documents. Embedded documents and arrays reduce the requirement for joins, a key parameter for high performance and speed.
In January 2012, Amazon announced their NoSQL service, DynamoDB. While not the first in the league, it is definitely a game changer. Most people think of MongoDB as the epitome of NoSQL because of its ease of use compared to other databases. But it has major drawbacks in terms of data management.
5 features of Amazon DynamoDB that are very compelling as compared to its competitors:
Extending the application of analytics to a database has not been as easy. Ideally, we would just want to send a request to the database and have it send back the result when ready. But every NoSQL database has failed in this aspect. MongoDB has major limitations when running map-reduce jobs.
On the other hand, DynamoDB integrates with Elastic Map Reduce and reduces the complexity of analyzing unstructured data. This is a BIG plus
2. Relaxed vs Strong consistency
With Amazon DynamoDB, there is no need to hardcode replication of values. Once you make a choice, everything works like it should. Like all Amazon product offerings, read and write units can be adjusted based on actual usage. In our opinion, nothing beats this!
3. Ease of getting started
Amazon poses a real threat to competition by offering a hosted solution. If you have an AWS account, getting started with DynamoDB is as simple as making a single API call! With other NoSQL solutions, the developer must have the right servers, installations and configurations. With DynamoDB, they just need to concentrate on the application and let AWS handle the rest.
Amazon, like AWS, provides amazing performance with DynamoDB. They give single digit latency even on very heavy loads. All data is synchronously replicated across all availability zones AND there is NO downtime even while there are throughput updates! The use of SSDs is a real game changer for random reads and updates.
5. Pay for use
Amazon lets you buy operations per second capability rather than CPU hours or storage space. This removes a whole lot of complexity for developers who would otherwise need to tune the database configuration, monitor performance levels, ramp up hardware resources when needed. This provides users a fast and reliable storage space for their needs with costs that scale in direct proportion to the demand.
With all its advantages, even if we consider a few flaws DynamoDB does have, as a product it comes closest to fulfilling the promise of NoSQL compared to its competitors: Easy-to-use structured storage without the complexity of managing SQL servers and the reliability and performance benefits of scaling out.