Cloud Computing - a Bit of Life on the Sunny Side
I have been thinking it was time to move my knowledge application (https://mds.net) from the Amazon Enterprise Compute Cloud that I have been happily using since 2010 (for various projects) to Microsoft's Windows Azure. Now I have done it.
There are a number of reasons for the move, the most important being:
- Azure is PaaS (Platform as a Service) while Amazon is merely IaaS (Infrastructure as a Service).
This means that my overhead will be significantly smaller because I no longer have to maintain infrastructure level technologies. This is weight off a developer's shoulders! I still remember my first public website, where I configured my router and network and everything on the server before the web application finally became publicly accessible.
Now I only have to think about the application. I can deploy from my pc directly to Azure in a few clicks! This application I deployed is a blend of MVC5, Nuget packages, Web API, oAuth for external logins and, of course, a lot of HTML, CSS and Javascript. It just worked without any issues. Here are the overall steps. Start by creating a website on Azure. Then run the VS deploy wizard and choose to deploy to Azure. You will be asked for your credentials and will be able to select your Azure website. Tick the box "Remove existing files" if you need to clean an existing site of it's content and assemblies before deployment. That is pretty much it for the code part.
While it was rather quick to deploy the application to the new location on Azure, moving all the database data from cloud to cloud was, by contrast, a bit tricky* (see below) but still all in a days work. It sure feels good to have both application and data in a totally managed environment, that I don't have to worry about.
And if I want to scale the infrastructure, then I can do it with a few clicks that will add servers and automatically balance the traffic load. And I have all kinds of infrastructure reports that it would normally take a team of infrastructure professionals to dig out. It is just buttons now, and these things have actually become fun. You gotta love Cloud computing!
Another nice little gain from using Azure services is that Azure's SSL certficate can now be used to access the application via a secure connection / https. However, the url is bonkers(https://altskavaek.azurewebsites.net). If I wanted the same url, that is https://mds.net, then I would still have to acquire my own certificate at $2000+ and renew it periodically and upload it to Azure...
Happy Cloud Computing! If you are not a developer you can always try online versions of Microsoft Office and file storage and other apps to get the same kind of safe feel and not having to worry about hardware.
Drop a comment if you need more specific details.
*Here is how the data was moved, just to give an idea:
1) Create the new db server on Azure and on it the new target db.
2) Use the "Generate Scripts" wizard in SSMS on the source server to generate a script that will create the same tables and objects in Azure db. Run the script on SQL Azure db.
3) Use BIDS (Business Intelligence Development Studio) to create and execute an SSIS package that will move the data from source db to Azure db. (Moving data into tables with an autoincrementing id column will require a workaround involving "Set Identity_Insert ON" before running the package to move the data).
4) Add the SQL Azure server as a linked server (if needed) to the source server in order to execute any additional SQL commands that operate/move data across servers. I ended up doing this because certain heavy binary data would not be moved via the SSIS package without additional configurations, so I executed an SQL command on the linked servers to transfer that data.