Cristian Merighi's Multi-Faceted Blog

Azure Considerations

Azure Considerations

Saturday, March 24, 2018

First impact with Microsoft's Cloud.

I must admit it: I've been slow and late in adopting Azure and cloud technologies in general. Recently, I had to face my lacks of competences while a couple of customers already caught the wave and kindly convinced me to do the same.
Not that it wasn't on my schedule, on the contrary: having developed my latest projects on top of Asp.Net Core and worshipping the Microservices doctrine, I definitely needed a modern platform where I could potentially grow ...undefinitely!
It took me nothing more that couple of days (let's say a week?) to feel confident with the system and to migrate my business.
I'm now fairly happy with it. With "my business" I mean my new Asp.Net Core multi-tenancy website, my IdentityServer fork host, two of my databases and all my email accounts (moved to Office365).

It's been a pleasant experience: Azure Portal is friendly enough and it just works, the possibilities in terms of configuration look endless, so are the tools exposed by the platform that I could take advantage of.

Everything comes with a price. No, I'm not talking about the monetary costs: as part of the MPN, my monthly bill should not roar at all (even if the cost forecasts differ quite a bit from those yielded by the seductive pricing calculator). What I'm talking about are some constraints I had to deal with.

Azure Files

Aka: goodbye System IO.
It is good practice to move all the static files outside the costly App Service storage. Onto Azure Files, for instance. That done, you cannot lean on good old System.IO libraries anymore.
Rules change.
In order to access the storage you're now forced to use the new SMB 3.0 protocol.
Solution: I abstracted the basic IO functionalities and wrapped them around the provided Storage SDK.


Aka: goodbye System.Drawing.
I know I'm a bit old-fashioned, but I enjoyed manipulating bitmaps that way (I mean, via GDI+) since Asp.Net v1, getting nostalgic here. Server-side image processing might not be the most convenient way to whip the precious VM CPU, but it grants to have the task done fairly quickly, anyway, again,
GDI+ is not allowed on Azure, even if the app targets the Full-Framework.
Rules change.
Solution: I moved all the imaging processings to the client-side (Javascript).

What's Next?

Cache. Consider moving to a distributed cache system (e.g. Redis).
Mail sending. Abandon System.Net.Mail.SmtpClient for a cloud service like SendGrid.

Add Comment
Thank you for your feedback!
Your comment will be processed as soon as possible.
error Obsolete Browser
You're using an old-fashioned, unsecure, non performing browser. We strongly recommend you to upgrade it.
This site, by the way, cannot be viewed using your
CCBot/2.0 (https://commoncrawl.org/faq/)
Pick your Favorite