- Simon Waight
Unsurprisingly, I think the way Cloud Computing is transforming the IT industry is also leading to easier ways to learn and develop skills about the Cloud. In this post I'm going to give a run down on what I think some of the best ways are to start dipping your toe into this space if you haven't already.
Sign up for a free trial
This is easy AND low cost. Turn up to the sign-up page for most major players and you'll get free or low-cost services for a timed period. Sure, you couldn't start the next Facebook at this level, but it will give you enough to start to learn what's on offer. You can run VMs, deploy solutions, utilise IaaS, PaaS and SaaS offerings and generally kick the tyres of the features of each. At time of writing these are:
- Amazon Web Services (AWS) Free Usage Tier - 12 months: http://aws.amazon.com/free/
- Google App Engine - each app gets a portion of free resource usage: https://developers.google.com/appengine/kb/billing#freequota
- Rackspace Cloud - no published information on any form of free resource usage tier.
- Windows Azure Free Trial - 3 months: http://www.windowsazure.com/en-us/pricing/free-trial/
- Office 365 - depending on your license level you can get a free developer site setup. If you don't qualify then a 30 day trial is available. http://msdn.microsoft.com/en-us/library/jj692554.aspx
Learn the APIs and use the SDKs
Each of Amazon, Azure, Google, Office 365 and Rackspace offer some form of remote programmable API (typically presented as REST endpoints). If you're going to move into Cloud from traditional hosting or system development practices then starting to learn about programmable infrastructure is a must. Understanding the APIs available will depend on leveraging existing documentation:
- Amazon Web Services: Pretty much every AWS component has its own REST API - the best thing to do is utilise the available documentation to identify the REST APIs you want to use: http://aws.amazon.com/documentation/
- Google App Engine: Again, documentation is your start: https://developers.google.com/appengine/docs/
- Rackspace Cloud: http://docs.rackspace.com/
- Windows Azure: Like AWS each component of Azure provides a REST API: http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx
- Office 365: as this platform is a combined offering, each of the products on offer (AD, Exchange, Lync and SharePoint) provide various APIs that can continue to be used in a relatively consistent state with their on-premise equivalents. Documentation is spread about a bit on MSDN but here's a taster:
- Exchange Web Services: http://msdn.microsoft.com/en-us/library/exchange/dd877012(v=exchg.150).aspx
- Lync via Unified Communications Web API (UCWA): http://ucwa.lync.com/documentation/api-reference
- SharePoint REST API: http://msdn.microsoft.com/en-us/library/jj860569.aspx
If you aren't a fan of working so close to the wire you can always leverage one of the associated SDKs in the language of your choice:
- Amazon Web Services: .Net, Java, Node.js, PHP, Python and Ruby. Mobile: iOS and Android. http://aws.amazon.com/code/
- Google App Engine: Java, Python and Go. https://developers.google.com/appengine/downloads
- Rackspace Cloud: .Net, Java, PHP, Python and Ruby. http://docs.rackspace.com/sdks/guide/content/intro.html
- Windows Azure: .Net, Java, Node.js, PHP, Python and Ruby. Mobile: Windows Phone (C#), iOS and Android. http://www.windowsazure.com/en-us/downloads/
The great thing about having .Net support is you can then leverage those SDKs directly in PowerShell and automate a lot of items via scripting.
Developer Tool Support
While having an SDK is fine there's also a need to support developers within whatever IDE they happen to be using. Luckily you get support here too:
- Amazon Web Services: Toolkit for Visual Studio: http://aws.amazon.com/visualstudio/ (also on Nuget) or for Eclipse: http://aws.amazon.com/eclipse/.
- Google App Engine: Eclipse: https://developers.google.com/eclipse/
- Rackspace Cloud: there is a Visual Studio plugin for Visual Studio 2010 but the page is offline at time of writing and there's no news on it being updated to support Visual Studio 2012.
- Windows Azure: Visual Studio can build Cloud Applications using project templates and there is also support for Eclipse: http://msdn.microsoft.com/en-us/library/windowsazure/hh694271.aspx
Source Control and Release Management
The final piece of the puzzle and one not necessarily tied to the individual Cloud providers is where to put your source code and how to deploy it.
- Amazon Web Services: You can leverage Elastic Beanstalk for deployment purposes (this is a part of the Visual Studio and Eclipse toolkits). http://aws.amazon.com/elasticbeanstalk/
- Google App Engine: Depending on language you have a few options for auto-deploying applications using command-line tools from build scripts. Eclipse tooling (covered above) also provides deployment capabilities.
- Rackspace Cloud: no publicly available information on build and deploy.
- Windows Azure: You can leverage deployment capabilities out of Visual Studio (probably not the best solution though) or utilise the in-built Azure platform support to deploy from a range of hosted source control providers such as BitBucket (Git or Mercurial), Codeplex, Dropbox (yes, I know), GitHub or TFS. A really strong showing here from the Azure platform! http://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-git/
So, there we have it - probably one of the most link-heavy posts you'll ever come across - hopefully the links will stay valid for a while yet! If you spot anything that's dead or that is just plain wrong leave me a comment.