You may hear this from almost any vendor whose original software was built for an on-premise installation. “Look, we are on the cloud. Our product has an image on Amazon AWS. It takes just minutes to provision this pre-existing image and you are off and running.”
I love the concept of that. I love the idea that you can take any existing software and cut down the time it takes to install it. However, it comes with certain challenges. Let’s take your typical software install. Most times you have three things to install:
- The actual software itself
- A database usually SQL Server, Oracle, or IBM DB@
- A user repository that is LDAP compliant. We typically see Active Directory, Sun / Oracle LDAP, IBM Directory Server, OpenLDAP, and a few others.
- An HTTP server like IIS or Apache
If you didn’t care about scalability or high availability, you could bring up all of the above on one image. That’s great for a very small company but that’s about it. You could bring up three machine images one for each of the four items above. You will definitely scale much better but you will have no high availability. So to really do it right, you would need to either have your software (portal, social, whatever) connect to the data, user repository, and http service or you need a lot of machine images. Let’s look at those options:
Option One: connect to services
This is by far the best option. You gain all the benefits the cloud provider put into making that service scalable and available. But there’s one problem. If that service isn’t supported by the software vendor then you are out of luck. For example, IBM’s WebSphere Portal supports a lot of databases but Amazon EC2 is not one of them.
Option Two: create your own machine images
This will work but it hikes the price and complexity up rather quickly. Think about our simple scenario above with four items and a need for simple high availability. That’s 4X2 or 8 machine images. In other words, in order to bring one piece of software to the cloud, you would do exactly as you would do with an on-premise installation. You gain no value and it may cost more because many companies have data centers with existing database servers and http servers in their DMZ.
So what about Azure
First off, many thanks need to go to Kevin Orbaker (@kevinorbaker) who know Windows Azure really really well. I pinged him about this to see if the scenario was even possible. Like many other cloud platforms, Windows Azure offers offers a huge list of services like:
- http server in IIS services…….. the worlds largest IIS implementation
- Database server in SQL Server. It does have some size limitations but for my portal and social world, 20GB of data is plenty.
- Active Directory Services and tools to help sync your users to the online repository
- A Service Bus
- Azure Identity Services
- A caching service
- etc.
Note that many of these services are built using standard Microsoft tools. It’s not a brand new database, it’s SQL Server which is known and supported by many software vendor’s products. The same goes for Active Directory Services. Because of that, I have the possibility of installing my software in a couple machine images on Azure or in a couple VM’s on-premise and then point to these common and supported services. Now instead of having 8+ installation, I have one install and two images to bring up. Then I just configure the portal or other software to point SQL Server, Active Directory, and IIS. Life just became a lot easier.
Caveat: This is all theoretical. I know a lot of software vendor’s products support SQL Server, Active Directory, and IIS. I don’t know of anyone that says they support it on Azure. That said, Oracle has that new agreement with Microsoft and Azure is a key part of that agreement. Maybe it will be less theoretical in the near future.
So here are my thoughts on the benefits of such an approach:
- Much cleaner installation. It’s just the software and not the ancillary services
- Better and easier support for high availability since all those ancillary services already do that.
- Better scalability
- Easier upgrade path. Ever tried to upgrade your software and realized that you also had to upgrade the db and ldap?
- Interesting options like caching that might also work oob
- Hybrid approach lets you bring up a machine image of your software install in your data center or on a machine image on Windows Azure
So Microsoft, the company known for living in its own world, may well have created the best solution to migrate on-premise software to the cloud…………..