Selecting a Microsoft Azure solution
Before we start looking at everything Microsoft Azure can offer us, we need to take a step back and think about the reasons for choosing it in the first place. The first question is actually whether you should be using a cloud platform rather than your own infrastructure (if you have any); the second question, once you've decided to use a cloud platform, is whether to use Microsoft Azure or an alternative.
The main factors in choosing to deploy systems on a cloud platform are as follows:
- Infrastructure capabilities: If your business doesn't currently own infrastructure for hosting your solution, or it doesn't have sufficient capacity, or the business simply doesn't want to invest in its own infrastructure, then a cloud-based solution might be the best
- Cost: If a cloud-based solution is more cost-effective than a self-hosted solution irrespective of whether your business owns its own infrastructure or not, it may be a good option
The main reasons for choosing to deploy systems on Microsoft Azure in particular are as follows:
- Platform capabilities: If you've decided to build a cloud-based system using .NET, then Microsoft Azure is the obvious choice. If you are building a system on a different platform and Microsoft Azure can support it, it might be a good option.
- Cost: If Microsoft Azure can offer the right capabilities and is more cost-effective than other suitable competing platforms, then it's the best choice.
Choosing to host systems on the cloud is not a straightforward decision. You may find that you have to go through the decision-making process on a project-by-project basis rather than having a policy where you always do the same thing for all systems.
Infrastructure capabilities
There is an overhead in managing infrastructure of any scale. The following are the activities that must be performed frequently:
- Patch management
- Operating system migrations
- Platform migrations
- Provision for expansion
- Maintaining utilities (power, Internet, cooling, and so on)
The different scenarios for managing the infrastructure of a business are as follows:
- If your business runs internal systems on just a single server, this may not be a full-time job for someone, but it still needs to be done and may be time-consuming periodically
- If your business is on the other end of the spectrum and has two data centers that host hundreds of servers, you will need a team of people to manage them, which will obviously be very costly
- If your business doesn't want to invest in its own infrastructure, irrespective of whether it needs enough servers to justify building a data centre, or just a single server with a website and database, it might be your best option to host your systems on a cloud platform
- If your business' current infrastructure doesn't have the capacity for your system or it can't meet the required Service Level Agreement (SLA)
- If your business has a heavy investment in its own infrastructure and can support future expansion on a variety of platforms, you may be less likely to want to use a cloud platform, but even then, there may be a service your infrastructure can't provide, or a platform it simply can't support, so it may be cheaper and faster to implement it in the cloud
If your business builds systems using Microsoft technologies, then Azure would be the logical choice, because although it now supports a number of platforms, Windows Servers, SQL Server Databases, and .NET platform tooling have been established long ago and have a fantastic toolset.
If, for example, your company does own its own infrastructure, but it's designed for running Java websites on Linux operating systems, and you have a requirement to build and host some .NET systems, you may want to choose to build your system on Microsoft Azure instead of provisioning more servers.
If Microsoft technologies are not your normal choice and you want to build a system on a cloud platform, you may choose Azure if it is more cost-effective than a competitor cloud service provider for a comparable design and SLA.
Cost can be one of the main drivers behind most decisions in a business; it has come up in both decision-making steps for choosing to use a cloud solution, then Microsoft Azure, so it's clearly important. I'd love to get straight down to talking about coding and deciding which bits of Microsoft Azure to use for what; we still have a responsibility to make the best decisions for our business and that includes designing a cost-effective system.
If you're working on a personal project, you may want to pick up a technology for reasons such as it being new or looking interesting; everyone does this and we might not mind if it costs us a few pounds (dollars or whatever), but in a business, we need to make the right choice ourselves or convince other people of the right choice, especially in the case of larger organizations, and that means choosing a solution that is cost effective.
We can use the pricing calculator to help us work out how much a system will cost once we have designed it; it is available at http://www.windowsazure.com/en-us/pricing/calculator/.
I've tried to distil all this into two flow diagrams to help you with the decision-making process. You can use the following flow diagram to decide whether to implement a cloud-based system:
Once we've decided that building a cloud-based system is the right thing to do, we can use the following flow diagram to help us decide whether Microsoft Azure is the best platform: