The Cloud

What is the Cloud?Open up any technology publication or attend any technology conference and you will likely be exposed to the buzz around “the cloud”. However, explanations of what constitutes the cloud can vary widely depending on who you are talking to. During TDK’s monthly Tech Talk, Chief Technology Officer Mark Henman provided insight into cloud computing and some of its benefits and limitations.

When describing the hype around “the cloud”, Mark Henman uses the metaphor of a cloud, that is, the type which is suspended in Earth’s atmosphere: “when you look at a cloud, everyone sees something different”. Just as children often argue over whether a cloud looks like, as Mark put it, “a rabbit, a dragon, or a dragon eating a rabbit”, people often argue about what cloud computing is. Some think there is only one cloud, or they just aren’t sure what it is. Others hold the view that the internet itself is the cloud. Yet others still consider the cloud as just another word for virtualization. Such confusion and disagreement is understandable considering the hype about cloud computing is a relatively new phenomenon.

What is the cloud?

A more appropriate question might be “what is a cloud?”. A cloud is, in the broadest sense, an abstraction of computing resources that exist within one or more computer networks that can be purchased as a set of commodities, and easily managed through simple web pages. Like all abstractions, it allows one to focus on what needs to be done as opposed to specific details of how it’s going to be done. There are many clouds and many types of clouds, all of which share some of the following common characteristics:

  • Flexible: Cloud computing resources can be used for a wide array of purposes. Where processing occurs and data resides is also flexible.
  • Scalable: Cloud computing resources are highly scalable and can be provisioned and released dynamically.
  • Standardized: Flexibility and scalability require standardization within the cloud. Highly customized computing resources are inflexible and don’t scale well in the cloud.
  • Integration: In general, processes are easily integrated within a cloud. Most cloud vendors provide options like storage and database services which are easily integrated with cloud servers. Integration with on premise resources is more difficult, although certainly feasible with planning and the right technology. Integration between clouds is typically not a viable option due to how standards vary between clouds. There is a growing push for uniform cloud standards aimed at correcting this problem, but how much traction that movement has is difficult to gauge.

Other features that are often common to clouds vary depending on the situation:

  • Reliable: Traditional redundancy approaches still apply in the cloud. Clouds with more nodes tend to be more reliable. However, even the largest cloud providers like Amazon, Google and Microsoft have outages within their cloud. If your instance happens to reside in a part of their cloud which goes down, even though the cloud overall is still up, you will be down until your instance is moved or the problem is fixed. Some cloud vendors offer persistence services and claim they will quickly restart or move your resources in the event of a failure, which can certainly be an advantage in terms of reliability. Be sure to research a vendor’s reliability before going with them, don’t assume you will be getting five nines of uptime (99.999%) simply by moving to the cloud.
  • Secure: Traditional security approaches still apply in the cloud as well. Some cloud vendors argue their cloud brings enhanced security, which may be true if you don’t have the resources or expertise to follow security best practices. Some analysts argue that clouds are inherently insecure, which may also have some truth to it if you simply assume that you will be safe in the cloud and don’t give security a second thought. The reality is that resources in the cloud aren’t inherently any more or less secure than resources outside of the cloud. Security is going to hinge largely on the type of technologies in use and their vulnerabilities. Those same vulnerabilities exist whether the technology is in or out of a cloud. For situations like using software as a service, the fact that many users of that software are concentrated in the cloud may make the cloud version of that software a more appealing target to hackers than the versions running outside the cloud.
  • Cost-effective: Cloud computing can provide significant cost savings given the right situation. Whether or not cloud computing is cost effective depends on what you are using it for. See the sections below on when the cloud is and isn’t useful for more information.

There are many different types of clouds. Most mentions of the cloud refer to public clouds, where cloud computing resources are made available to the general public over the internet. There are also private clouds which can reside in on-premise or off-premises networks.

These are the four common classes of clouds:

  • SaaS: Software as a Service clouds. Software is hosted in a cloud computing environment and typically accessed by users through a web browser. Examples include Salesforce, Gmail, and Google Docs.
  • PaaS: Platform as a Service clouds. Solution stacks hosted in the cloud which provide users the ability to design, develop, test, deploy and host applications which utilize that specific technology stack.
  • IaaS: Infrastructure as a Service clouds. For those who require the most control over their resources in a cloud, IaaS allows them to use computer infrastructure as a service. Users typically have root access to their cloud servers, which is a VPS hosted in a cloud.
  • STaaS: Storage as a Service clouds. This is essentially renting storage space from a cloud vendor. It’s a useful alternative to on site storage for those who don’t have the capital or personnel to maintain storage themselves, or want easy integration with other resources in the same cloud.

Cloud computing assumption: “you don’t care”

When using a cloud there are certain things that you just cannot care about, otherwise the cloud isn’t for you.

Users of cloud computing generally:

  • Don’t care about the physical location of their resources.
  • Don’t care that they have to follow the standards of the cloud.
  • Don’t care that they cannot select non-commodity hardware and high end machines.
  • Don’t care in general about all the specific details of how the work is being done, they just care about what is being done. Remember, a cloud is an abstraction.

How much does cloud computing cost?

The cost of cloud computing varies widely depending on which cloud you are in, what type of cloud services you are consuming, and how you are using the services. For SaaS, while some are free, prices vary depending on the software being used and in many cases the level of usage. For STaaS prices vary depending on the amount of storage. Pricing for PaaS and IaaS can get very complicated. Many people are under the assumption that you only pay for what you use. That is rarely the case as most cloud vendors charge more for availability then for actual use. Pricing models depend on the vendor but generally follow the logic below:

Pay to reserve machine resources: you will pay for it to be available, whether or not you are actively using it

  • Computing units (generally based on a rather low power CPU equivalent)
  • Processor architecture (32 or 64 bit)
  • Memory
  • Disk space

Pay for what you use

  • Bandwidth: You pay a fixed rate for the bandwidth you use, typically a different rate for incoming and outgoing bandwidth. Traffic between cloud servers can be free, but not if you are communicating via a public IP.
  • Storage: If you need excess storage beyond what you’ve reserved in disk space you generally pay only for the storage you use. Don’t forget that you may also pay for bandwidth used when accessing storage.
  • I/O: Some vendors, like Amazon, will charge you a fixed rate per I/O request.
  • Queries: Some vendors will charge a fixed rate per query, typically when you are using database services.

What is cloud computing useful for?  There are some areas where clouds really shine, they are:

  • Large web sites and web applications that at least pay for themselves as they scale.
  • Horizontally scalable applications and parallel computing: applications and clusters which scale well simply by adding more identical resources/servers are well suited for the cloud.
  • Peaky web sites and web applications which experience widely fluctuating peaks and troughs: resources can be provisioned and released on demand, monitoring services and APIs allow for the automation of this process.
  • Standardized configurations: highly customized configurations aren’t well suited to cloud computing.
  • Development and test servers: servers and clusters can be easily provisioned for development/testing and decommissioned when no longer needed, this is especially more efficient when done on a large scale.
  • Prebuilt applications/instances: software vendors don’t have to support client hardware if they offer cloud based solutions.

What is cloud computing not so useful for?

  • One-off machine configurations
  • Frequently changing needs which don’t match cloud standards and scaling models
  • Small numbers of machines while the cloud can be used for just a few machines, there is virtually no cost saving over other hosting strategies.
  • Requirement for non-commodity hardware with things like hardware encryption, highly specialized or mixed machine types

Cloud Computing Myths

  • Cloud apps are free: While some are free, most are not, and some that are free won’t remain so for long.
  • Cloud computing is fail proof: As mentioned above, even cloud computing resources in the largest public clouds are susceptible to failure. No computer system is 100% fail proof.
  • Anything can be moved to the cloud: Not everything can be. For example, if you have an application that requires customizations which do not fit the cloud standards it cannot be moved to the cloud.  Applications that can only be scaled vertically will have a hard time in the cloud.
  • Clouds scale themselves: Most cloud vendors provide some form of auto-scaling, however you control the parameters that these use to monitor and scale your app.  These services are not free, and if not configured correctly, can either under-scale your app and cost you customers, or over scale it and cost you more money.
  • Clouds consist of high performance machines: they actually consist of commodity hardware and low end machines, performance increases come from horizontal scaling.
  • Clouds are inherently insecure: security in the cloud is fundamentally no different than security outside the cloud.

Shouldn’t I be in the cloud?

With all the hype around the cloud, many businesses are feeling the push to be in the cloud. However, the cloud isn’t for everyone. One should carefully consider what they want to accomplish by moving resources into the cloud. With all the different options for getting into the cloud, don't just jump in without carefully considering what you need and planning your cloud presence carefully.  Most businesses will benefit substantially simply by consulting with IT professionals about what the cloud can do to help them meet their specific business needs.