Cloud : a marketing concept hiding a complex technical reality, a simple word aimed at non-tech people, similar in its fogginess to the infamous Web 2.0 more than 10 years ago. As always, IT professionals have to see through the marketing fog, and I’m here to help.
Anything new ?
It began in the 1940s
The 1940s are surprisingly impressive, really : they already had jet-powered fighter aircrafts and computers. Though I’m pretty sure you’re more likely to have heard about the Messerschmitt Me 262 Schwalbe than about the Z3, both changed the world.
In 1941, Konrad Zuse finishes the Z3 computer. Made of no less than 2,300 relays (not transistors), the Z3 used floating point binary arithmetic and had a 22-bit word length. Take that Commodore 64. But I digress.
Le Poinçonneur des Lilas
Yes, this is the title of a famous song about a guy in charge of punching holes in subway tickets. You will get it in a few lines, trust me.
From the 1950s to the late 70s, mainframe computers were kings : big expensive machines, equipped with stone-age hard drives at best, punch card readers at worst. People were lining up to use these equipments, often renting it for a couple of hours. Before the Cloud came the Crowd.
People were lining up to use mainframe computers, often renting it for a couple of hours. Before the Cloud came the Crowd.
The 1980s or the age of personal computers
Indeed, engineers were frustrated not to have the possibility to work on their programs at home. Nobody being very happy with bulky mainframes plus the invention of the microprocessor in 1971 by Intel gave birth to the microcomputer revolution. A formidable wave of family-friendly computers hit the shelves, allowing a generation of bedroom programmers to emerge.
Then comes the Internet
Starting from the mid-90s, getting an Internet connection at home became affordable enough for millions of users to start interacting with online servers. Like 1969 UNIX users logged in to the same mainframe from their own dull green-on-black terminals, people used their own fancy (and increasingly powerful) microcomputers to connect to a centralized server.
Computing power sharing has been there since day 1
The point of this very short history lesson is to highlight the fact that sharing computing power has always been common practice, from mainframes to the Cloud. It is even possible to go as far as saying that Cloud computing can be seen as the gifted little brother of 1950s mainframe computers.
Cloud computing can be seen as the gifted little brother of 1950s mainframe computers.
Why « Cloud » ?
Very often on diagrams, the Internet was symbolized by a nice cloud clipart. It was a convenient way to sum up the complexity of the worldwide network linking two or more LANs.
One Cloud, three categories, three types
Here comes complexity
The category of the Cloud you will be using depends on what you will use it for :
- Infrastructure (IaaS) : Provides servers, OSes, virtualization, network and storage. Think : Amazon Web Services, Microsoft Azure, AT&T, CenturyLink Technology Solutions, Cisco Systems, Cloudscaling, Comcast, EMC, GoGrid, Green Cloud Technologies, Hewlett-Packard, IBM, Joyent, NaviSite, Nebula, NTT Communications, Peak, ProfitBrick, Rackspace and Terremark,
- Platform (Paas) : Provides a computing platform and a solution stack as a service. The big names ? Apprenda, CloudBees, CumuLogic, Docker, Engine Yard, Eucalyptus Systems, GigaSpaces, Morphlabs, MuleSoft, Parallels, Piston Cloud Computing, Pivotal Software, Puppet Labs, Ravello Systems, Red Hat, RightScale, ScaleXtreme, Software AG, StackDriver and Xively,
- Application (SaaS) : Provides access to centrally hosted software. Examples : Acumatica, Avalara, BetterCloud, Birst, Cloudability, FinancialForce, Google, Insightly, Intacct, Jaspersoft, Marketo, NetSuite, Oracle, Paxata, Salesforce.com, SAP, Star2Star Communications, Tableau Software, Workday and Zoho.
The type of the Cloud you will use is determined by the way you implement it :
- Private : A Cloud infrastructure entirely dedicated to one company,
- Public : The services are rendered over a network that is open for public use,
- Hybrid : A composition of two or more clouds (private or public) that remain distinct entities but are bound together.
Cost, performance, reliability
A problem ?
This section covers Iaas and PaaS. SaaS is left on the side, because of both the variety of applications available and the number of providers.
Albeit dedicated servers offers the best performance, it’s also possible to get quite a lot of computing power from the Cloud. In fact, it appears that I/O is the weak point of Cloud computing : this comes from the fact that, most of the time, storage equipment is shared among users. This can result in a global slowdown if someone starts writing a lot of data.
Something good about the Cloud is that it’s simple to scale up CPU power (and RAM by the way). In my experience, doing so results in a substantial gain, as the graph below suggests :
A tad old, but still informative enough.
This graphic has been generated using data collected while running a custom test written in C. With the help of OpenMP, I was able to multiply matrixes using 1, then 2, then 3…up to 12 threads (X axis). The computation time was recorded for each loop (Y axis) ; on a multicore processor, threads were managed by as much core as possible.
The blue line (Core 2 Quad Q8400) serves as a reference and shows the results I got while running the test on my workstation back in 2010. The two main conclusions are 1/ CPU power is reasonably good and 2/ adding virtual cores really makes a difference.
Should you trust a cloud ?
Make sure the Cloud computing service provider you chose offers an acceptable level of transparency over what’s happening behind the scenes. Service Level Agreements sure helps, but you have to know exactly how and when you will be notified of incidents, and what level of technical details may be communicated to you. In a word, make sure you won’t play poker.
Simply put, moving anything to the Cloud means moving it to someone else’s computer. How do you judge their security ? Think certifications : ISO 27001/27002 and ISO 7498-2, Tier 1, 2, 3 and 4, all these are signs of trustworthiness.
Simply put, moving anything to the Cloud means moving it to someone else’s computer. How do you judge their security ?
You can get an idea of how much hosting your whole infrastructure in the AWS Cloud would cost you using Simple Monthly Calculator. You will probably find out it cost more than your current infrastructure. When you examine the technical requirements needed to achieve reliable performance for your sites, you will often find that dedicated servers are cheaper. The need for redundancy, storage cost, the temptation to scale up and far too many pricey options are to blame.
For example, the server hosting this blog costs me 18$ AUD per month. On AWS, it would cost me 37$ AUD. Not expensive, but my dedicated server is cheaper.
Copy/Paste won’t work
Sysadmins and developers working together
I don’t know you, but I can tell you this : you are not ready to scale. Worse, your infrastructure and the applications running on it are probably not Cloud-proof. Cloud is virtualization, modularity, scalability, servers can pop and disappear in a minute. This creates tons of unforeseen issues with IPs, DNSes, transactions and data integrity. Developers alone won’t be able to solve all these problems themselves and the same is true for systems administrators. Developers and sysadmins will have no other choice than to work closely together as a team to pass this test. You’re right, it looks like it’s DevOps time.
Switch to DevOps before you switch to the Cloud
As stated above, copy/pasting your infrastructure to the Cloud won’t work. Even if it looks like it did at first. Switching to the Cloud is a project in itself, not a hobby, not a click on a couple of buttons. You have to plan ahead, document and test.
The ideal would be to switch to DevOps before attempting anything, because this new way of working fits perfectly with the Cloud.
A successful switch to the Cloud implies getting Devs and Ops working hand in hand. Said otherwise, the Cloud is a good reason to implement DevOps.