Tuesday, 16 June 2015

A cloud of acronyms and terminology

Anybody getting their feet wet with Cloud technologies will discover something very quickly: It's a jungle or rather a bazaar of multiple projects with technologies doing the similar things, overlapping in some places and unique in others. It can be quite a mess to figure out, so I’ll try to cut through some of the technobabble.

First, there are few things that "cloud" means and a few areas it touches but it all falls under the umbrella of hosting. Basically, somebody/something is putting ("provisioning") a server, machine (real or virtual), application, services or a combination of all them somewhere that you use remotely over the internet. That's about it. Just imagine your typical traditional office network with all of those servers tied together using Ethernet cables and routers accessible over the internet. Each server has its own application or services that you can access and configure remotely. Yes, that's about it.

So what's the big deal?

Imagine that each time you wish to set up a network environment you have to create a network topology diagram (a specification), hand it off to IT technicians who stands up all the servers, connect them all together and installs all the middleware and application in your specification. If it's anything more than one server, it could take weeks if not months.

Now here it the big deal: With cloud technologies, you can do this in minutes (well, ok, hours) in an incremental, repeatable self-documenting fashion. Cloud will make developers better because it addresses a fundamental characteristic of good software development:  laziness. Wait, what?  Lazy, how can that be good?

From Larry Wall’s “three great virtues of a programmer” laziness is “The quality that makes you go to great effort to reduce overall energy expenditure.” That is exactly what cloud technologies do for a developer, reduce overall energy expenditure, in other words, drive efficiency.

Being able to stand up a whole network, with services and applications in a matter of minutes or hours opens up a whole new world of software development and application deployment efficiencies. Network topologies can be built up, updated and destroyed with different version combinations to ensure that software on all supported permutations and it call be automated. That is, no humans need to do that work.

Topology configurations can be stored versioned, archived, application and services dynamically bound before being actualized.
As you can imagine, all of these also comes with truck load of provisioning, versioning, configuration and development technologies and projects all champing at the bit to get a piece of the action.

So how do we disseminate all of this? First, it’s important to define levels of service that Cloud can provide and the primary consumer of those services.

“The Application”:  Software as a Service (SaaS)

The oldest and most familiar model, an application is hosted on the web (a cloud) and made available on-demand for customers using a subscription model.  All the data is typically added to the host and is accessible using VPN.

Using the traditional desktop office productivity sweat such as Microsoft Office as an example, one would, pay a software license fee, install it on every workstation that is used and maintain it (apply fix packs and updates).

With SaaS, one pays a subscription which usually contains a certain amount of functionality and resource allocations (disk space, etc.) and the rest is done by the cloud provider.

Development of The Application: Platform as a Service (PaaS)

There is a category SaaS related to the development, running and management of SaaS offerings. This could be called Software Development Software as a Service but is actually called Platform as a Service as it also contains SaaS offering not directly related of software but in support of (work item management, reporting metrics, etc.).

So using an office productivity suite as an example, it should be possible to use something PaaS offering to develop it. It should provide all the tools needed by a software developer (a particularly lazy one) to create a SaaS offering, the PaaS cloud provider usually also provides hosting services for your Saas offering.

A PaaS offering can be found in IBM BlueMix that uses Cloud Foundry technology.  This will be the first technobabble checkpoint:: Cloud Foundry. My next blog posting will be about that and related technologies.

In preparation head over to IBM Bluemix and sign up for a free account here: https://console.ng.bluemix.net/.