All eyes have been on the price war among AWS, Microsoft and Google for IaaS services domination, but less attention has been paid to comparing the features they offer for developers. As these providers expand the realm of competition beyond pricing, they are also pushing the boundaries of IaaS into PaaS territory. Cloud developers will likely be the beneficiaries as new services are added to support software development.
The big-name platform as a service (PaaS) providers -- Heroku, Engine Yard and Red Hat OpenShift -- provide higher levels of developer services than a strictly infrastructure as a service (IaaS) offering. These services include abstractions that hide some of the administrative details of virtual machines (VMs), support for specific programming languages and development environments, integrated databases, logging and monitoring.
Some PaaS providers, such as CloudBees, specialize in supporting DevOps, which offers tight integration with Jenkins, a continuous delivery system for Java applications. Engine Yard -- first known as a Ruby PaaS -- now supports PHP and Node.js applications in a PaaS with use cases in software as a service (SaaS), e-commerce and mobile applications.
Thanks to AWS, Microsoft Azure and Google, which have added PaaS-like features to their IaaS offerings, you can get some of the benefits of PaaS within IaaS.
As compelling as some PaaS offerings are, some developers may not want to switch from IaaS. Thanks to AWS, Microsoft Azure and Google, which have added PaaS-like features to their IaaS offerings, you can get some of the benefits of PaaS within IaaS.
The many platform services in Amazon cloud
Amazon Web Services (AWS) is known for steadily adding new services to its catalog of products. For developers, some of the most important services are Relational Database Service (RDS), Elastic Load Balancing, Elastic Beanstalk, CloudSearch, Simple Workflow Service and Simple Queue Service.
Developers using RDS can choose among managed Oracle, SQL Server, MySQL and PostgreSQL databases. AWS manages many of the tasks that are typically handled by a database administrator, such as backups, patching and tuning I/O operations. However, users will still have to design their data models.
AWS' Elastic Load Balancing allows developers to deploy a cluster of servers and a load balancer that distributes workloads across the cluster. This service can also manage auto-scaling, so developers can focus more on development and less on monitoring loads and adjusting cluster resources.
Elastic Load Balancing is a lower-level service than Elastic Beanstalk. Similar to PaaS environments, you can upload your code to Elastic Beanstalk and it will perform a number of tasks, including provisioning servers, adding a load balancer and configuring auto-scaling and application health monitoring. Elastic Beanstalk enables developers to take control of AWS resources allowing for PaaS-like automation while still retaining IaaS-like levels of infrastructure control.
CloudSearch, Simple Workflow Service and Simple Messaging Service provide middle-tier applications that would otherwise require developers to provision servers and manage additional applications. For example, CloudSearch can be used for searching unstructured text collections instead of installing, configuring and maintaining Solr or ElasticSearch servers.
Microsoft's PaaS-like services
Microsoft has a complement of PaaS-like services to rival AWS: database service with support for SQL Server and MySQL, a Redis-based caching service, messaging services, a job scheduler, Active Directory and multifactor authentication.
Not surprisingly, Visual Studio supports deployment to Microsoft Azure and non-Microsoft languages including PHP, Python and Ruby that goes beyond the basic ability to run scripts written in these other languages. For example, Python developers can deploy Django websites and host IPython notebooks in Azure.
Google catches up with platform services
Although Google's PaaS-like offerings are not as extensive as those offered by AWS and Microsoft, they do have something to offer developers who need high performance storage and data management services.
If you're a developer who needs an object, relational or NoSQL data store, then Google's got what you need. The Cloud Storage service provides durable, high availability object storage with managed replication. Google's Cloud SQL is similar to other managed MySQL services, taking care of patching, replication and performance management issues. The NoSQL database from Google, Cloud Datastore, includes an SQL-like engine that supports queries made up of entities, filters and sort criteria. Like relational databases, it supports ACID transactions for data integrity.
For developers who are stepping into the world of big data, all three vendors have services for analyzing large data sets. AWS and Microsoft each have a Hadoop service: Elastic Map Reduce (EMR) and HDInsight, respectively. Google's BigQuery offers a more relational-like big data service, but it has some limitations when compared to fully supported SQL queries. If you need Hadoop in the Google cloud, you will have to install and manage it yourself.
About the author:
Dan Sullivan holds a Master of Science degree and is an author, systems architect and consultant with more than 20 years of IT experience. He has had engagements in advanced analytics, systems architecture, database design, enterprise security and business intelligence. He has worked in a broad range of industries, including financial services, manufacturing, pharmaceuticals, software development, government, retail and education. Dan has written extensively about topics that range from data warehousing, cloud computing and advanced analytics to security management, collaboration and text mining.