The next term in my Buzzword Bingo series is “The Cloud”. Cloud is often used in combination with a problem. Problems nowadays are solved by putting them into “The Cloud”, right?
This is mentioned especially by people who have only a vague understanding of both, the problem and Cloud, but want to get rid of the first one.
As you may already have guessed, this simplistic approach is going to work only in a few cases.
But let us take a step back and have a look behind the curtain, what “The Cloud” really is:
Technically I tend call it “good old application service providing (ASP) on steroids”, because clouds are run mainly not by the small ASP company around the corner, but by multinational giants such as Amazon, Microsoft, Google and Deutsche Telekom.
There are three main areas of service:
- Software as a service (e.g. mail server hosting, shop systems, accounting systems, CRM) targeting end customers
- Platform as a service – computing power and storage for developers
- Infrastructure as a service (hosting of virtual machines, directory services, networking and connectivity) for enterprise IT departments.
Technically “The Cloud” is a no-brainer. Get a good Internet connection and all you need to develop a solution, build an infrastructure or using a service is at your fingertips.
All assets much easier to handle and quite often at much lower rates as your company could do it by themselves! This is due to the fact that large data centers are really run to fulfill the highest efficiency, scalability and availability standards, which is a goal hard to achieve for smaller to mid-size companies.
From a development perspective there is not a real big difference working in “The Cloud”, if you are used to create scalable solutions on-premise (btw. that’s the new buzzword for running at home :-)). Your software is deployed / runs just somewhere else, or you are using infrastructure or other services provided externally via an Internet connection.
So far, so good, but here is the point where the issues start. Even, living in “The Cloud”, you should understand the problem you want to solve and tackle it with skills and experience.
In addition to this, there are quite a few non-functional aspects you should be aware of while creating business-critical solutions:
- Your data is stored externally and therefore is at a higher risk to be compromised. This requires you to plan for advanced security standards to avoid industrial espionage. At least, you should give the spooks a hard time getting it.
It also helps to work with and store only raw data in a cloud system, e.g. to do any heavy computations/aggregations and to bring results back on-premise for final analyzing and decision making.
Then, store your conclusions, plans, roadmaps and any business sensitive data on-premise!
- The pricing models of all Cloud providers differ and work in a way which is quite different to the classical on-premise approach (one solution – very often run on two servers (to have failover) in the data center :-)).
“The Cloud” is measuring computing cycles, instances, transactions and storage space.
Therefore, it is absolutely recommended to compare provider offerings having these data for your solution ready at hand! Which means, you should have a rough understanding what the new solution requires.
To get this data, do a load test with your new service! Load tests are a great tool even for saving money, if you use the results to re-factor the solution to use less of the costly resources. This can be done by changing aggregation algorithms, doing batch transactions and compressing data at the right time and places.
- Legal issues. If anything goes wrong, you should be able to get your right!
This is, of course, more difficult, if you have to cope with foreign legislation. Therefore always try to get a local contract binding both sides to local jurisdiction. This is not an easy task, negotiating with a multinational, but I have a feeling that they are slowly getting it.
- Even “The Cloud” may fail (power outages, hurricanes, meteors, you name it) and experience outages. Or, more trivial, a construction company decides to dig a whole where the Internet connection enters your building, which is even more likely.
Although the normal operation mode for cloud systems is always on, always online, it is more than wise to choose a hybrid approach being able to provide essential functionality on-premise. Ideally on-premise functionality should be able to handle emergency operations for the solution, which means that speed, comfort, usability might be compromised, but the system still is able to do the most important things.
This is something one needs to keep in mind while architecting the solution, but it absolutely pays off and even could save lives, in case things go wrong.
And of course – emergency mode needs to be tested! 🙂
- Put only applications or services into “The Cloud” that are able to use the benefits of this technology. The Access database wit 5 Users or other small footprint applications / services can stay where they are.
Everything else is economical nonsense.
- Bandwidth. We tend tend to believe that bandwidth is not an issue anymore, but if one puts more and more services into “The Cloud” there will be a tough awakening, as soon as the Internet pipe dries up. So, plan for it!
Let us sum it up, “The Cloud” is technically absolutely the next quantum leap for the IT industry, but it is not the sole asset to make you happy!
From my perspective on business-critical solutions, it should be best practice to choose a differentiated, hybrid cloud / on-premise approach that leverages the benefits of “The Cloud” without sacrificing data security and emergency availability.
Just use your common sense and you will be on the right track with it!