Amazon Web Services is known primarily as an IaaS (infrastructure as a service), and with good reason: The Amazon cloud is practically synonymous with public cloud computing in general and with IaaS in particular. Yet, many of the services available in AWS are comparable to PaaS (platform as a service) offerings. The key distinguishing feature between an IaaS and a PaaS is the type of service. In an IaaS, customers typically work with virtual machines that they configure themselves. In a PaaS, customers work with services created and maintained by the PaaS provider. AWS has a mix of both.
To view all our recommendations for cloud computing services, visit our best picks page.
Amazon has a full selection of compute services, including on-demand instances in a range of sizes for specialized services like Amazon Elastic MapReduce (EMR), which is a hosted version of the Hadoop platform based on EC2 and S3, and Cluster GPU Instances, which brings high-performance computing and specialized GPU (graphics processing unit) computing to public cloud users. The storage offerings are similarly wide-ranging, with S3 block storage, reduced redundancy storage, EBS and high-performance SSDs.
Amazon breaks its pricing for EC2 down into four separate categories: On-Demand, Reserved Instances, Spot Instances and Dedicated Hosts. On-Demand is the typical pay-as-you-go model that's consistent with other PaaS and IaaS services. Reserved Instances provides a significant discount on the On-Demand services, with a discount available when you make a capacity reservation. Spot Instances allows you to request spare Amazon EC2 computing capacity for up to 90 percent off the On-Demand price. For those working with a larger business, Dedicated Hosts are physical EC2 servers dedicated for your use only. Amazon provides detailed pricing guidelines to give you an accurate understanding of what your business needs.
- Languages: Since Amazon is largely an IaaS, there is virtually no limit to the languages and server-side technologies you can install and run. Common languages such as Java, Python, Ruby and Perl are readily available in AWS. You can run .NET, PHP, Django or Java application servers as well.
- Back-end support: Another common feature of PaaS offerings is automatic load balancing and auto-scaling. The PaaS service monitors the load on your application, can add servers if needed, and distributes work across a set of servers. AWS offers the Elastic Load Balancing service, which performs similar functions. Once you have created a set of servers, you can create a load balancer from the management console and configure it to manage loads of multiple protocols (HTTP, HTTPS, TCP, etc.) and perform health checks on the servers. Since any traffic to the domain name mapped to the load balancer is distributed across the cluster, your fault tolerance improves. You can also configure the load balancer to manage auto-scaling.
- Database integration: AWS is similarly supportive of database technologies you may want to install and run. You can set up and manage Oracle, MySQL and SQL Server all on your own servers. You also have another option with AWS (and this is where the lines between IaaS and PaaS start to blur): Rather than create your own database instance, you can use Amazon's Relational Database Service (RDS) to provide access to an Amazon managed database. There are multiple advantages to this approach. Amazon takes care of all the database administration tasks, like patching software and creating backups. RDS supports multi-zone replication, so you get high-availability features without the level of administrative overhead you would have if you ran databases in your own instances. The RDS service also allows you to provision IOPS storage for applications that need consistent I/O performances.
- Support: Amazon offers Basic, Developer, Business and Enterprise support plans. The Basic plan is free and includes 24/7 access to customer service, community resources and documentation. It also features seven core Trusted Advisor checks, which can help you optimize the use of your services, and access to health status. Developer, Business and Enterprise all include various features, but you can expect a primary contact for support, faster responses, architecture support, third-party software support and training.
Like Azure, Amazon provides a wide range of cloud-based services; PaaS isn't its focus. You can mix and match to make a more flexible service, but if you're a developer looking for a tailored PaaS, you may want to consider smaller, more specialized companies.
AWS vs. Azure
Amazon Web Services (AWS) has been around for a dozen years. In that time the cloud computing services landscape has changed quite a lot. Arguably one of its largest competitors these days is Microsoft Azure, which has been around since 2010. And Microsoft has a history of making significant improvements on a regular basis, making it more and more of a threat every day.
Both services offer flexible, stable and profitable solutions. So how to choose between them? At a high level, AWS is a known stable and reliable choice with a wide array of compelling offerings. Meanwhile, Microsoft Azure likely ties directly to many of the closed source tools your company may already using such as Visual Studio, SQL Server and Microsoft Windows itself.
Amazon groups its Infrastructure as a Service offerings into the four categories of Compute, Storage and Content Delivery, Database, and Networking. Those resources benefit from Amazon's security and identity services, such as Amazon hosted Active Directory, AWS Identity Management, AWS Certificate manager for managing SSL/TLS certificates, and hardware-based key storage and management through AWS CloudHSM. Businesses can can monitor infrastructure resource usage through such management tools as Amazon CloudWatch, AWS Cloudtrail for tracking user activity and API usage, and AWS Config for tracking resource inventory and changes.
Similarly, Azure covers all of those broad categories, which it calls Compute, Data Management and Performance, and Networking. It secures these services using a combination Azure Active Directory, Active Directory Federation Services, Multi-Factor Auth and a sophisticated Role Based Access control model that it uses to extend a modern security architecture into the cloud. Azure has several services and integrations for in-depth monitoring and alerting on infrastructure performance metrics and logs. To find out more how these two titans measure up against one another, check out our formal face off between AWS and Azure.