10 wishes I have for Microsoft Azure
Update 1 : November 2, 2016
Published: July 16, 2015
Since I published these wishes there has been some updates to Windows Azure, so I decided to update this post. The answers below are from Barry Gervin after he was asked by my friend @sebichondo
These are some of the wishes I have for Windows Azure using Visual Studio. I wish I could tick all of them off as available or be found wrong in thinking that they don't exist when they actually do. They have either not been straightforward or seemed completely absent and have made me lose a lot of hair, gain weight and wish for a beer on Monday morning.
Lets get right into it.
- Reverse engineer all settings from a subscription and generate a powershell script which when I run against another subscription I would get exactly the same configuration.
In regards to the discussion yesterday about exporting resource groups to ARM templates, please see this: https://buildazure.com/2016/03/30/export-azure-resource-groups-to-arm-templates-with-powershell/. You can also do this from the portal on the Resource Group blade.
- DocumentDb to be improved to support IQueryable
. I want to simply write a linq statement and the SQL expression is generated and I don't have to write the SQL query my self - I feel like I'm going back to 1980. I am thinking of customising a linq translator online for this and get my repository cleaner.
See step 7 here: https://azure.microsoft.com/en-us/documentation/articles/documentdb-get-started/ for an example of using an IQueryable linq query to DocDB.
- There is little to no documentation for using Azure CDN online. Let me not even mention best practices or samples.
Maybe you are familiar with this: https://azure.microsoft.com/en-us/documentation/services/cdn/ but could you give me an idea of what you are looking for?
- While its good that Azure ServiceBus supports AMQP, it would be nice to support more. e.g. MQTT - if IoT is the future why is this not reflected here?
You probably want to start with IOT Hub for collecting IOT Device messages, not ServiceBus directly. IoT Hub is recommended best practice for this type of scenario as the initial endpoint – and it does support both AMQP and MQTT. From there you can connect up a bunch of Azure Services, route messages with Service Bus, etc. Here’s a good place to start: https://azure.microsoft.com/en-us/documentation/articles/iot-hub-mqtt-support/
- HDInsight clusters are insanely expensive. You set it up today with minimal cores and the next 2 days it has consumed a sizable chunk of your balance.
HDInsight is a managed PaaS on IaaS environment, so while it’s cheap compared to other solutions (allows you to easily scale up and down size), for a base scenario – any similar cluster is going to be expensive as it’s a dedicated environment. I recommend using the emulator in a single VM for development/testing purposes: https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-emulator-get-started/
- HBase SDK is almost unusable. It will be nice if the SDK was complete and we could have a proper Northwind sample or NerdDinner that will follow good practices e.g. Unit Testing, BDD, Repositories, Desired State Configuration, Continuous Delivery and such. Have a way to map to entities.
It would feel very strange to put Northwind or NerdDinner, or any relational model into HBase. There might be a misunderstanding of why you’d want to use HBase here. What are you hoping to use HBase for? There is an HDInsight course on MVA that might be a good resource if you haven’t already seen it: https://mva.microsoft.com/search/SearchResults.aspx#!q=HBase&lang=1033.
The schema evolution of the database is still not Azure friendly. e.g. What happens if you want to force drop/create.
Entity framework does not seem geared for sharding on Azure
My opinion is that an ORM or query framework should not know about underlying sharding or partitioning of the underlying store. What is your use case for this?
Malisa: My view is that underlying provider and extension methods can be used at configuration level to enable EF to work in a sharded DB. If something can do DDL, they why shouldn't it do DDL for sharding with extra settings?
- I think it would be nice to enable better reporting on errors/exceptions. Maybe have a debug deployment which compiles with debug symbols and gives you a more details stacktrace.
The original post was published before Application Insights
- Publishing from Visual Studio sometimes works and sometimes it doesn't. I have noticed that making major changes to the project and publishing using Visual Studio tools does not properly clean the existing installation often resulting in old files and new files all thrown around the installation folder. I normally have to delete my webapp and recreate it to have this work. Very frustrating.
I would recommend connecting git directly to your app service and publish that way. For continual deployments, I’d also recommend you look at deployment slots so you can do really good rollback, or A/B testing on new releases or “testing in production”.