Microsoft Portugal held the yearly WebCamp event this last Wednesday, focused on Web Technologies,both from Microsoft and Open Source. The openness to OSS is clear, with sessions focusing specific to that approach to software development. The term “best of breed” does come to mind, in the sense that more and more solutions include parts by different sources/vendors, that have to work well together.
Anyway, my session was focused on Azure WebApps, and I expected the technology to be familiar to most people by now, but was surprised to find out it is not. The session had an enterprise-ready focus, which I had to adjust somewhat as a consequence.
As usual, the session was demo-heavy, and unfortunately the 40 minutes were not enough to show them all. Here’s what I had planned:
- Create a site and publish from Visual Studio – showing the simplicity of the process and the new window in the SDK 2.8.1;
- WebApps in the Azure Resource Manager – open up https://resources.azure.com and show how the site resources and their settings are represented;
- Backup and Restore – using a site (a to-do app sample) I had previously deployed, I showed how the Backup and Restore features work, including the database-embed capability. For me, one of the killer features of this PaaS offering;
- Remote Debugging – it’s always amazing, being able to do remote debug to code that is running remotely in the cloud. There was a specific session on Application Insights, so I opted to not go into it;
- Staged Publishing – deployment slots are huge, both in terms of supporting the dev/test/quality environments, but also in team development itself (e.g., having a slot for each developer). Had a chance to show a swap and the “setting stickyness”, but had to skip the “A/B testing” support (where x% of the traffic is directed to a slot, and the rest to another one);
- Traffic Manager – this is another impactful demo: having pre-created sites in North Europe, Brazil and Japan, used traffic manager to unify them under a single domain name, and then www.whatsmydns.net to check the dynamic resolution. Always a great demo (I’m impressed myself );
The session time was only 40 minutes, so other demos had to be left out:
- Redis Session State Provider – the idea here was to explain about Redis (an instance of which I had pre-created), install the package with the session state provider, change web.config, and redis-cli to show the keys/sessions being added to the repository;
- Scaling – having a Redis has the backend to the user’s session state, the obvious next demo was using Scaling/Automatic scaling to see it working, and showing how scaling back down to one single server didn’t imply a loss of session;
- Web Tests (not to be confused with Load Tests) – one of the newest features in WebApps is Web Tests, a service that works similarly to what services like AreMySitesUp provide: access your site from several locations worldwide, and if for example 3 of them can’t reach it more than 3 times, send and email alert. Discrete, but helpful.
- IP Blocking – this final demo was addressing one specific complaint about the way IP Blocking works in Azure WebApps: either you include the blocked IPs in Web.config, or use App Service Environment (ASE). ASE implies the Premium service tier, which is costly. Adding an IP in the web.config implies a site restart, and if you have sites in several regions, you have to make the change in all of them. So the demo goes the applicational path: the IPs to block are simply added to Redis (ex: IPB22.214.171.124) and an Action Filter in the MVC project checks the source IP and returns HTTP 403’s if it’s in the blocked list. Quick and yet not dirty .
That was it. A full room, I’m just sorry I didn’t have the time to show everything I had prepared. Maybe I should do some screencasts?