It gets a great deal of attention at Microsoft internally, which isn’t surprising if you consider that Azure sales more than doubled in recent quarters. Just to give you an idea: in Q1 of 2017 the Azure business grew by 93%. The total annual run rate of Microsoft’s commercial cloud business (which includes Office 365) now exceeds $14 billion and is expected to hit $20 billion by the year 2018.
Another illustration of Microsoft’s commitment to Azure is the recent Azure Red Shirt Dev Tour (there’s a short and rather funny introduction video of the event on YouTube), in which long-time Microsoft evangelist Scott Guthrie, one of Microsoft’s top speakers for the developer community, toured Europe for day-long presentations about all things Azure, hitting cities like London, Dublin, Oslo and Amsterdam. Registration was free of charge, and the Amsterdam venue that I attended was fully booked with around 1200 attendees.
Guthrie, famous for his red polo shirt (hence the “Red Shirt” tour – it would have been interesting if he had worn a shirt combining red and azure for the occasion, covered a number of capabilities recently added to Azure in an impressive three hour keynote full of hands-on live demos, followed by an afternoon session of tips & tricks. It was a good showcase of the many capabilities any cloud platform has to offer nowadays, and a glimpse of what is coming in the near future. These are some of the highlights:
A different VM type for each purpose
Probably the most used feature in Azure is still the capability to run a Virtual Machine in the cloud. There is a considerable number of standard VM types suited for different purposes, going from basic low-cost VM’s to high-performance monsters. Some of the latest additions are VMs that include a GPU, and a very impressive VM type that was created specifically to host big SAP databases (like SAP HANA) on Azure. This new M-series VM has some impressive specs, running up to 128 CPU cores with 3.5 TB of RAM (going up to 20 TB RAM is also an option).
128 CPU cores in action in a single M-series VM
The more powerful VM’s can also run Hyper-V, which enables them to run other VMs inside the main VM. And since things like a Linux VM are also an option in Azure, you can now for example run a Windows Server VM in the cloud which in turn hosts a number Linux VM’s.
Another new feature is an interesting way to help customers save money on licenses (which is at the same time an incentive for customers to not hesitate about creating more VM’s of course): on the VM creation screen there is now a “Save money” option at the bottom. If a customer already has a Windows Server license with Software Assurance, you are entitled to a 40% price reduction as part of the ‘Hybrid Use Benefit’ that’s part of the Software Assurance.
A striking element of nearly each demo in this event was the omni-presence of non-Microsoft technology: several demos were given from an iPhone or a MacBook using a Chrome browser, there was lots of open-source scripting, Linux, and databases other than SQL Server (like MySQL, Progress).
Also noteworthy was the complete absence of Windows Phones – the same thing happened at the recent Microsoft Build conference. I’m clearly not the only one who recently abandoned the Windows Phone platform (see my earlier blog post). Even Microsoft employees now openly use Android or iOS phones.
Azure App development and monitoring
Microsoft’s development tooling has always been a very strong part of its technology stack. The integration with Azure is also there. If there is a failure inside an Azure app, you can see it from the App monitoring functionality. Then, from the detail screen for that failure, you can directly create a new work item inside Visual Studio Team Services (VSTS).
A money-saver is the auto-scale option for Web Apps in Azure. This allows an admin to define rules that say something like: if CPU usage is more than 70% for x amount of time, then scale up.
An option often overlooked is that you can of course also scale down (below your usual minimal spec) at the hours of the day when your app is hardly being used.
Another demo showed the option to do continuous delivery: update the code for an Azure App in GitHub, which automatically triggers a build, test and (optionally) deploy cycle. This kind of Continuous Integration & Continuous Delivery (CI/CD) pipeline can be configured from Azure portal.
Note that the build servers used for this – which you previously had to set up yourself – are included as part of the service. Azure handles this internally, so you do need to spend any time on the build server infrastructure.
Deploying apps in self-supporting containers is another fast-rising trend. Visual Studio 2017 now has integrated Docker support and tooling. You can even include ‘dockerization’ as part of your CI/CD pipeline.
Deployment slots are also a powerful feature, which allows you to deploy the new version of your app to an alternative URL so you can check the result. This second location functions as a staging slot. At a time of your choosing you can then simply swap the production slot with the staging slot. The production URL now has the app version that was in the staging slot and vice versa.
Native mobile apps
Xamarin, the development tool to create native mobile apps (purchased by Microsoft a few years back) has now been fully integrated into Visual Studio 2017. It’s also suited for iOS app development, you do not even need a MacBook for proper testing, Xamarin’s Live Player allows you to view how your app will look on a certain device. In the Azure mobile center you can test the deployment of your app on actual devices that are racked up in the cloud. This is especially useful for Android devices since there are so many different Android versions.
There are of course also important developments for databases. SQL Server can be run as a VM but also as a service: no machine to log onto, you just get the connection string to your database. A large instance of such a database can now hold up to 4 TB of data.
Next to SQL Server, you can now also get PostgreSQL and MySQL as a service.
Microsoft recently announced the Azure Database Migration Service, which provides a Lift & Shift service for any current (on-premises) SQL Server database to the Azure database service. The migration service promises that there will no (or hardly any) need to change any code related to your database.
Azure also contains a Performance Recommendation option, which works based on machine learning. It is an easy way to tune your database. According to Guthrie, proper tuning can often prevent the need for a larger (and more expensive) database.
If you want to go beyond relational data, and store any kind of data (like key-data, documents, graphs) on a global scale, Azure now offers Cosmos DB (formerly known as DocumentDB). This is a rather impressive, globally distributed database service. In a nutshell: any data you want, synchronized across any region in the world where you need it.
Cosmos DB supports many kinds of data and you can use multiple open source API’s against it. It can scale to millions of transactions p/sec and petabytes of data. The Cosmos DB service offers a comprehensive SLA on four dimensions: there are 99.99% guarantees for availability, throughput, latency, and consistency.
Why pay for a VM or even a service that is always on, when you actually just need a certain function when a customer asks for it? One of the biggest trends for the coming years is serverless computing, allowing you to trigger a piece of serverless code only when you need it, paying for only the clock cycles your are actually using. This dramatically lowers the cost to only a fraction of an average Azure Compute scenario.
The serverless code can be defined as part of Azure Functions, or you can define a serverless workflow as part of an Azure Logic App. There is already a large number of predefined event sources available that can trigger an Azure Function or a step in an Azure Logic App.
The Azure Cognitive Services are accessible quite easily through a proper API. An app was shown for example where you could upload cat images. The cognitive service determined on the fly if the image actually contained a cat, otherwise the image was rejected and moved to a separate folder.
A final demo was the Kiosk Realtime Crowd Insight (this demo is available on GitHub) that shows the estimated age, gender and mood of the person in front of the webcam.
We talk a lot about Machine Learning these days, but I still found it almost staggering how easy it has become to apply this kind of functionality in your own application at very low cost.