There’s certainly no shortage of services and systems that you can run in the cloud. Over the past six years, Azure and Amazon have exploded in their product offerings, providing nearly any system a developer could need.
From web to mobile, C# to PHP, there’s seemingly no limits when it comes to developing applications. The issue that I’m finding is, HOW developers think of using the cloud. Often, it’s for hosting a particular application or system. Or perhaps it’s to test some functionality just before deployment. In either case, cloud computing becomes just another step of the process, facilitating the environment that something happens in.
This is wrong. The cloud is so much more…
A Sample Scenario
Let’s take a recent discussion I had with a colleague:
We work with a lot of clients with different environments. While we may be on the latest and greatest version, we have to support a number of scenarios for our customers. This rings especially true when it comes to databases. With so many versions of SQL Server in circulation, we will most likely encounter a very old version or a specific flavor that we don’t have on hand.
I was recently asked how to back up a SQL Server 2014 database so that the client could restore it to SQL Server 2012 Express. If you have ever worked with databases in the past, you know that, while you typically go forward with your backups, it takes an International Committee to go the other way with your data. With such a quandary, what would be the best path to take?
I gave my answer, but then asked a few people to see what they thought. Their responses were about what I expected, and generally fell into one of two options:
- Detach the database from SQL Server 2012, copy the .mdb file from SQL Server 2014, and work with it there.
- Stand up a SQL Server 2012 server and work with the backup there.
That was pretty much what I thought, and both are totally doable. I’m going to scratch idea #1 just because I don’t want to be in the business of copying individual files. #2 is close, but the mindset behind it is exactly the point I want to make.
A typical developer will always use logic and common sense to solve a problem. They usually have control over their environment, so installing SQL Server 2012 seems the most logical to them. And it certainly would solve the problem and allow them to work. Perfect, right?
Let’s take a quick look at what that would entail. For my scenario, I’m going to estimate two hours to complete the following, at a billable rate of $100/hour for a total cost of $200.
- Having the space to install SQL Server 2012
- Installing, patching, and configuring SQL Server 2012
- Ensuring network connectivity to the server
- Getting the database backup to the machine for restoring
While those steps may not be all that difficult, they certainly can be time-consuming, depending on the environment. Not to mention, every version of SQL server installed is yet another variable in the developer’s environment that could consume resources, start unnecessary services, and require updating.
A Different Way to use the Cloud
What if, instead of messing with .mdb files (no thanks) and installing locally, we thought of the cloud as an extension of our machine and environment? With a few clicks, we could create a server in the cloud, quickly copy files into it (thanks, Internet backbone!), and test systems. The OS and SQL Server could already be configured, saving all kinds of time and efforts. Then, when the process is done, the server is deleted and you’ve spent pennies. That’s right, pennies.
The lowest level of SQL Server VMs in Azure costs $.05/hour. If the development process took four hours to complete, then it would cost a total of $0.20. That’s less than the cost of a payphone call (raise your hand if you remember those)! Let’s compare that to the cost of doing it locally ($200) and the savings are $199.80. That’s a saving of 99.9%.
When you start to think of the cloud in terms of an extension of your toolset, you can start to come up with all sorts of scenarios like this. It could be a legacy database you need to stand up for a few hours and then delete. You may be able to leverage virtual machines to load test your environment with 1,000s of connections for a day, then spin them down. The possibilities are really endless.
So What’s the Deal with Developers Who Aren’t Using It?
In my travels, I’ve encountered many people with widely varying experience with cloud computing. Almost everyone has heard of it, many are using it to some capacity in their job, and a smaller few are using it for everything. While there are definitely business rules and limitations that may prevent some people from ever fully incorporating the cloud into their daily routine, you would be hard pressed to present a situation for which I couldn’t argue that the cloud is a better fit.
I think what it’s really going to take is for developers to stop thinking of the cloud as just a place to host things but rather a set of tools they can use. Some of those tools will certainly be used in the end product, and be involved with the delivery of an application or system. More often, I suspect, you will find ways to leverage the cloud throughout your development process. You can offload security and authentication for a mobile app. Or how about giving you a Linux VM to run that application that runs on the one machine in your company it works on because the guy left the company?
The point is to stop thinking of the cloud as one thing. It’s so much more. And it can do so much more. You just have to be willing to experiment with it and recognize the areas of your development where you are wasting time dealing with hardware or systems. Simplify them with the cloud and leverage its capabilities in every aspect of your job. Trust me, it’s much better than trying to stand up SQL 2000 or Exchange 5.5.
Ready to Learn More?
Hopefully, I’ve opened your eyes a bit on what the cloud has to offer. Sure, it’s great for hosting applications and setting up systems quickly, but there is still so much more you can do. If you want to get started, I recommend the following:
- Start learning about the cloud in general. Read a book, attend a conference, watch a webinar. Anything that will educate you on what the cloud is so you have a better understanding of it.
- Learn about the differences in cloud platforms (Azure, Amazon, Rackspace, etc.) and decide which one fits your business model the best. Check out the documentation for each platform to see what’s available. And better yet, just explore the dashboard and have a look at the options.
- Look at your existing tools and processes and find the problem Try to identify the areas that slow you down and cause headaches. Often, these are the best places to start and the ones that will give the fastest returns.
- Leverage your vendor partnerships. An MSDN account grants you access to Azure as part of the deal, so be sure to use it to play around with the platform.
Once you unlock the potential of the cloud within your development, you’ll be amazed at how much it can simplify your life. Good luck!
This article was originally published on the Kentico Blog.