Windows developers were fortunate to have an early platform as a service (PaaS) in the form of Microsoft Azure. Microsoft eventually added infrastructure as a service (IaaS) to Azure and included Linux servers in the IaaS lineup as well as Windows operating systems.
To view all our recommendations for cloud computing services, visit our best picks page.
Cloud providers like Microsoft Azure are blurring the lines between PaaS and IaaS with PaaS-like offerings, such as databases, messaging queues and caching, as well as IaaS core services, such as virtual machines and object storage. Developers are free to mix and match IaaS components with services found in PaaS offerings, making it even easier to balance the need for control offered by IaaS with the higher-level services of PaaS.
Azure comes in varying support plans, from a basic, free version to an enterprise-level premier plan. The basic plan comes with 24/7 access to customer service, documentation and community forums, as well as best practices and health and status notifications. From there, features are ramped up to include technical support, third-party software support, training and launch support for the higher-tier plans.
Azure offers a simple PaaS model based on web and worker instances, three different persistent storage services, and support for common programming languages and development frameworks.
Azure breaks down its pricing based on what services you need. It provides services and pricing information on main features, like app services, virtual machines, SQL databases, blob storage, container service and functions. There is a pricing calculator to give you a quote for the services you'll be using. Like many PaaS offerings, Azure only charges its customers for the service capacity they use.
- Languages: Azure has software development kits (SDKs) for several languages and server-side technologies. This includes .NET, Node.js, PHP, Python, Java, GO and Ruby.
- Development: The SDKs include tools to help you prepare your application to run in the Windows Azure PaaS. Applications are deployed with three configuration files: a service definition file, a service configuration file and a service package. The service definition file defines the service model characteristics, such as the number of roles. Azure defines two roles: Web and Worker. They are both Windows Server operating systems, but the Web role includes an IIS server to handle web-based requests. The configuration files also include supporting details to enable services such as SSL and Remote Desktop.
- Databases and storage: Developers have three basic options with regard to persistent storage when using Azure: SQL Database, Tables or Blobs. SQL Database is a database as a service that provides many of the features of SQL Server, but without the database administration overhead. The SQL Database includes data center replication to two replicas, giving you high-availability storage without having to configure and monitor replication services. SQL Database supports much of Transact SQL, so developers experienced in coding for SQL Server should find SQL Database familiar. Not all Transact SQL procedures are supported, so familiarize yourself with the subset of supported Transact SQL before starting significant development with SQL Database. If you prefer to use a NoSQL database, such as MongoDB, but do not want to manage a data store service, then the Tables data storage option may be a good fit for you. Tables supports up to 200TB of simply structured data. Blobs, or binary large objects, are unstructured storage objects designed to store arbitrary binary data. This data storage system also supports up to 200TB of data and is accessed through REST or API commands.
- Deployment: The Azure management console includes an application deployment function. It requires a developer to specify a URL for your application and a region to deploy the application. When you deploy code to an application, you have the option of deploying to a staging area or to production. When deployed to the staging area, the application is accessed through a URL based on the application's globally unique identifier (e.g., GUID.cloudapp.net) rather than a user-friendly DNS name. You can administer your application through the Windows Azure dashboard or through a command-line interface. Microsoft has a Windows Azure PowerShell utility as well as a command-line interface for the Mac OS X and Linux operating systems. Once your application is deployed, you can scale resources to meet demand. If you prefer to manually scale Web and Worker role servers, you can do that through the management console. Manual scaling is the default mode, but automatic scaling is available as well. Automatic scaling is based on either average CPU usage or the number of queue messages. When average CPU or the number of queue messages cross a threshold, the number of servers in a particular role increase or decrease as needed.
Microsoft Azure provides a wide variety of services rather than specializing in PaaS. If you're a developer looking for a specific type of PaaS that serves personalized needs, you may want to consider a smaller company.
Azure vs. AWS
Microsoft Azure may only have been around since 2010, but the company's constant evolution and innovation means it's catching up to arguably its biggest competitor in Amazon Web Services (AWS), which has been around for a dozen years. In recent years the cloud computing services landscape has changed quite a lot.
There's no denying that both company's services offer flexible, stable and profitable solutions. So the decision as to which to pick is that much harder. At first glance, Microsoft might be a no-brainer. After all, it's likely tied directly to the clouse source tools your company has already adopted, including Visual Studio, SQL Server and Microsoft Windows. Meanwhile, AWS is a well-known, stable and reliable option with a wide array of compelling offerings of its own.
Microsoft Azure grops its Infrastructure as a Service offerings into three categories called 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.
Amazon covers all the same ground through four categories it calls Compute, Storage and Content Delivery, Database, and Networking. Those resources reap the benefits of 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 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.
To find out more how these two titans measure up against one another, check out our formal face off between Azure and AWS.