Planning Your Cloud Stack: Define the Layers
A cloud stack for a green energy company
Today, I’m starting a new blog series, called “Planning Your Cloud Stack,” where I will describe challenges, problems, and their solutions identified in the process of building an enterprise cloud for one of our customers. It is a green energy company—let’s call it “GreenEgg” (the name is fictional)—that provides its customers with electricity and solar devices. A significant part of the GreenEgg’s business is on the web—the company is using its website for billing management and e-commerce (selling and shipment tracking of solar devices). Since the website is deployed on a regular hosting, GreenEgg is experiencing several typical issues in its everyday operation:
- Website traffic is not regular but has peaks and gaps. So, during the peaks, the server could be overloaded and could provide low response time; however, during the traffic gaps, the server stands idle and resources are wasted.
- It’s vital for the GreenEgg’s website to have 100% uptime (literally, as close to 100% as possible). This is of critical importance for several large-scale customers. Currently, GreenEgg is using an internal back-up server and specific maintenance services and both these options imply additional expenses.
- To expand its business to other areas and to attract new customers, GreenEgg needs a smooth way to expand capacity of the website. This can lead to the implementation of its own cluster with several nodes, load balancing, etc.
- Enterprise-level customers of GreenEgg often require a proven secure storage solution for their confidential information (for example, financial and contact information).
- In addition, GreenEgg needs a better tool to monitor and analyze the website activity, detect problems, and generate reports. Regular web statistics is becoming too slow and complicated, as the company grows.
This series of blog posts will describe how a cloud solution helped GreenEgg resolve these problems, as well as how they planned and implemented that solution from scratch. We will focus on utilizing the most popular cloud products and service providers, such as Amazon EC2, RightScale, enStratus, and Eucalyptus. Finally, we will touch upon Magento and Open For Business, chosen as e-commerce solutions.
Defining 10 cloud layers
In light of the great variety of cloud products, tools, and services available on the market, we need a way to classify them. That will help us understand which products can work together, supplement each other, and vice versa which ones cannot be used simultaneously in a single cloud stack. Let’s take generic cloud computing layers as a basis:
This scheme is quite clear and straightforward, but five layers are definitely not enough to cover all the variety of cloud products, tools, and services available. For example, many applications allow for using different application servers, web servers, and storage solutions. Say, Open For Business can be configured to use Tomcat or Jetty as a web server. A storage solution for Magento could be standard MySQL, MySQL Cluster, or ScaleDB. Further, Platform-Infrastructure-Server layers do not cover such aspects as hardware virtualization, different operating systems, and management tools.
Considering all of the above-mentioned, we introduce the following 10 layers to represent the cloud stack (from top to bottom):
- Client (user herself/himself)
- Application UI (typically, a browser or a desktop application)
- Application services (basically, the ways for a user to communicate with the application)—typically, it is HTTP (web) and web services API (REST, SOAP, etc)
- Application code (core code base of your application)
- Application middleware (software that connects your application with other software components and allows them to work together)—typically, this is an application and/or web server
- Storage (a storage solution for your application)
- Cloud management (a solution that manages instances of your application in the cloud, provides administration and monitoring services—e.g., RightScale or enStratus)
- OS (an operating system that runs your application)
- Hardware virtualization (Usually, the application deployed on a cloud is not running on a single dedicated server but starts up on a cloud node by request, collapsing when it’s no longer needed.)
- Hardware/infrastructure (includes physical server(s) that runs your application and network infrastructure—typically provided by a cloud vendor like Amazon EC2)
The levels above classify products and services in a more detailed way and better fit to the general web application layer. In my next posts, I’ll refer to these layers to analyze and select the most suitable cloud solution for GreenEgg.