Introduction

Microsoft Azure is awesome and I've enjoyed doing loads of projects with it over the years but many organizations haven’t really considered some of the opportunities which the cloud can offer.  In the integration space and in particular around traditional on-premise BizTalk customers some of the projects have never had requirements which have made them need to think too much about the cloud.  Even if your production requirements have not needed to consider the cloud for almost all organisations I believe there are opportunities where the right use of the cloud can have its benefits.

Recently I've been thinking about a list of things which every BizTalk customer should consider as a way of helping to improve their return on investment or capability with BizTalk by leveraging Windows Azure.  In the rest of this article I will consider some of these.

1. Development Environment

One of the common themes I have seen with customers over the years is how painful or expensive it can be to get new virtual or physical machines and how setting up a development environment is often done on a shoe string budget and corners are often cut.  Having a good development setup is the foundation on delivering successful projects and I’m always amazed how many BizTalk projects don’t have a build server.

Microsoft Azure offers you the opportunity to create your entire development environment in the cloud.  This means you can have as many development machines as you need and build servers.  You can even use Visual Studio Online to host your source code in TFS.  There are many advantages of having the development environment in the cloud and in particular changing an up-front cost to a running cost is a good thing to do in a lot of cases because this means you pay for it when you use it.  If your project goes live and you don’t need to do any BizTalk work for a year then turn the environment off and you will pay a tiny cost just for storage of the machines.

There is also the speed of setup.  I've seen projects where the lead time to get machines then get them setup on premise has been weeks and this is before the developers can do anything.  In the cloud I've seen projects where you can have a fully up and running development environment say 5 developer machines and a build server in a couple of days and this can be reduced to hours if you script it all.  This is a huge benefit!

In terms of a cloud development environment you can have this isolated from your network if you wish but also you can use things like VPN or Inter Route Express to connect the environment to your network if you have dependencies on premise to integrate with.

In the below view I talk about some of the benefits of a cloud hosted development lab.

2. Environments for new and old versions during a migration

Most BizTalk customers will do an upgrade at some point.  This will usually involve a period of time where you will be running two versions of BizTalk in your test environments and development environments while you support production and test and prepare for the migration.  Depending on the complexity of your BizTalk integration requirements this can be a short or long period of time.  The result of this means you need more virtual machines to setup more environments during the migration.  This means more cost and more resources on premise.

Using Azure you would be able to create on demand environments with older and newer versions of BizTalk to support the things you are doing and then when the migration is complete you can throw away the now unused environments.  Again you pay for what you use.

In development if you’re doing a migration jump of multiple versions in one go, you may have branched your code and be running support of two versions at the same time.  Having your development environments in the cloud makes it easy to do this.

3. Proof of Concept Environment

When you’re working on integration projects and new technologies come along you need to do proof of concepts.  Doing these proof of concepts can sometimes be difficult if you don’t have the right resources to help you do it properly.  To give an example I once reviewed a proof of concept from a vendor which was completed and the vendor proposed that they had solved a key problem.  When I reviewed the solution they had solved a distributed integration problem by getting it all working on one machine.  Their solution wouldn't have worked when it was deployed to a real test environment because the multi-machine scenario was different.  The vendor was not given enough machines by the customer to properly simulate the issue.

In these cases Azure offers you the opportunity to spin up a temporary environment in the cloud which you can use for such cases then when you have the solution you can either throw the environment away or turn it off.

Likewise another example I have seen with this is when trying a new product.  We were trying to integrate with a Rules product the customer had bought and by using Azure we were able to setup a trial version of this product in the cloud to go through the processes involved in setting things up and starting to prototype integration with it.  We were able to get this up and running within a couple of days and Azure helped remove a lot of the blockers and constraints because with an isolated environment in the cloud many of these things didn't apply and we were able to be really agile around this prototype.  The idea was to fail fast if it wasn't going to work rather than spend weeks and a small fortune before we could do anything with it.

4. Deployment Practice Environment

Many BizTalk Admin teams don’t have a dedicated environment where they can learn how to deploy the code delivered to them from a development team.  When they are learning to deploy an application for the first time it's often on a test environment which is used for something else.  In the early stages of project there are often deployment challenges and as soon as something goes wrong the pressure is on from all areas because people can't get on with their work.

Azure offers the opportunity to create a deployment practice environment where the BizTalk Admin team can practice deployments and configuration of stuff delivered by the development team without impacting anyone else.  This increases their changes of doing a successful deployment and reduces the risk of delays to a project.  If you were offered the change to do this and it would only cost you pence per hour and you only pay when you use it then it’s a bit of a no brainer.  Well Azure offers you this already.

5. Isolated Testing Environment

Similarly to the deployment practice environment most customers I've seen rarely have a place where BizTalk can be tested on its own without having to be shared with testing activities of other teams who are probably covering functional scenarios.  The main exception to this is a performance testing environment but again the testing is probably focused on the entire application stack.

In Azure you would be able to create an environment where you can execute tests which focus solely on BizTalk.  You might use this to develop some feature based tests to validate the BizTalk solution works correctly against stubs of the external applications.  You may also use this to troubleshoot issues in a place where you're not interfering with other test activities.

You may not use this kind of environment very often but if you’re a developer who is assigned that strange bug and you need to do some investigation this kind of environment can save you a lot of time by giving you a place for investigation.  Again you only pay on demand so you can kill or turn off then environment when it's not needed.

6. Reference Architecture

As an architect in your organization if you were asked the question “what does your architecture look like” your first instinct is possibly to go to visio or a modelling tool.  That’s fine but many organisations don’t have a reference architecture where architects can work with projects to explore the architecture you have because you have a replica of it or a scaled model of it which lets you demonstrate the key architecture patterns in your organization.

Being able to consider the impact to your architecture of changes and then try them out can be a valuable capability for an architect to validate assumptions before thousands of pounds is bet on them.

Azure can offer you the opportunity to have a reference architecture of which your BizTalk investment could be a key part of that.

7. Training

Most BizTalk customers want to be able to develop the skills of their own people with their current version of BizTalk or the next version to prepare for an upgrade.  In Azure you could setup a machine for the member of staff to be able to learn about BizTalk in a safe and low cost place.  There is no worrying about what if they do something wrong because they are in their own isolated space where they can just try out BizTalk.  If they have MSDN then they probably also get Azure Credits so it might not cost you anything to do this.

8. Security Proof of Concept

As an extension to the proof of concept option above I often find that anytime you have to do a proof of concept which has a strong security element to it there can be lots of challenges.  In particular security people are reluctant to let you try anything new unless there has been significant mitigation of any risks.  This can result in the POC failing or costing a fortune before it even starts.  One of the benefits of Azure is the ability to do this proof of concept in the cloud in an isolated domain completely away from any of the corporate assets.  When the POC is complete you can then show this to the security team to demonstrate how a proposed design may work in relation to its security aspects or what the impact may be on other services.

Imagine that you setup a temporary environment with BizTalk and a new application your trying and you can then create the proof of concept, demonstrate key parts of it to the security team and complete some security and penetration testing on the approach and ensure everyone is completely happy before you need to implement the full solution.  With the temporary environment you can turn it off and keep it for reference purposes or throw it away.  Either way it is likely to have cost you a small amount by comparison with on premise costs and you would have removed many of the blockers.

Conclusion

One of the main themes here is that typically on premise infrastructure costs more as an upfront cost and takes time to get in place.  That then means projects don’t do some of the things they should or its painful to get a new environment if you need one.  That alone covers many of the typical problems on most BizTalk projects but there are a number of other opportunities that Azure offers.

Above are a few opportunities from my experience which I think some or all of which could apply to any BizTalk customer.  I'd be really interested to hear if anyone has others.

See Also

Another important place to find an extensive amount of BizTalk related articles is the TechNet Wiki itself. The best entry point is BizTalk Server Resources on the TechNet Wiki.