Showing posts with label Cloudwatch. Show all posts
Showing posts with label Cloudwatch. Show all posts

Friday, November 21, 2014

What is in a cloud?



Just finished a 20 part OpenStack Series on my blog.  May be it is a good idea to step back to take a look at what a cloud is.

According to NIST (National Institute of Standards and Technology) publication 800-145, Cloud Computing is defined as “a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.

This document further defines that a cloud computing has 3 service model and 4 deployment model and 5 essential characteristics.

Wow, it is so theoretical.  Who want to memorize these definitions?  I am not taking any certification exam from NIST.

But when I read what they are I find that these service models, deployment models and essential characteristics are being used widely in all the cloud related articles. Let’s take a quick look and see if you agree.

Cloud Service Model
  • Software as a Service (SaaS)
  • Platform as a Service (PaaS)
  • Infrastructure as a Service (Iaas)

Every day we some form of Software as a Service.  Most people use Yahoo Mail or Gmail.  Microsoft Office 365 is another form of SaaS.  User of SaaS only interfaces with the application and do not know what and how it is being supported.  You may be surprised to know Facebook is a form of SaaS.

I think the best way to describe Platform as a Server is that user is responsible for the application and data that is associated with it.  The hardware, OS, network and storage is hided from the user.  AWS Elastic Beanstalk, Google App Engine and RedHat’s OpenShift are good example of PaaS.  In this model the OS license is not a concern of the user even Linux is free there is no need to worry about when to apply the latest security patches or have to schedule down time.  The development or production platform is just there to be consumed.  The PaaS provider will take care of providing a platform according to the SLA.

Infrastructure as a Service will provide all the hardware for compute, network and storage including the hypervisor and use is responsible for maintenance and security patches of the Operating System that is running on the infrastructure.  Software license is a big consideration in this model.
This diagram best describe the 3 cloud service model the modules in green are the responsibility of the user and the modules in grey is the responsibility of the provider. (A picture is worth a thousand words).


Image source: http://venturebeat.files.wordpress.com/2011/11/iaas-paas-saas.jpg

Here is a good article that compares the 3 service model.

Cloud Deployment Model

  • Private Cloud
  • Community Cloud
  • Public Cloud
  • Hybrid Cloud

I believe every heard of private, public and hybrid cloud.  Community cloud is for exclusive use by a community and can be hosted on or off premises.  I would think soon we will have a Personal Cloud add to the list.  The main difference between private and public cloud is whether the cloud is hosted on or off premises. 

For Public cloud everyone knows about Amazon Web Services and Google Compute Engine and lately Microsoft Azure.  And for private cloud OpenStack is a hot topic and yet I don’t think it is being deployed as wide as its publicity.

I see lots of potential in the use of Hybrid cloud and VMware rebrand vCloud Hybrid Service into VMware vCloud Air and is promoting a complete cloud solution.


Image source: https://communities.vmware.com/servlet/JiveServlet/showImage/38-6265-10766/cloud_roadmap.png

Cloud Essential Characteristics
The essential characteristics defined by NIST are

  • On-demand self-service
  • Broad network access
  • Resource pooling
  • Rapid elasticity
  • Measured service

These are all self explanatory.  Amazon Web Services has CloudWatch for monitoring and since it is a paid service, billing is of course has to be in place.  OpenStack is catching up on this with the Ceilometer but on the billing side, it is only taking care of the measurement portion.  A complete billing system is not in place for OpenStack

Reference:
(Csd), Nist Computer Security Division. NIST SP 800-145, The NIST Definition of Cloud Computing (n.d.): n. pag. Web.

Monday, November 10, 2014

OpenStack Series: Part 10 – Heat – Orchestration Service

The Orchestration service provides a way to create and manage cloud resources such as storage, networking, computer instances, or applications with a template.

Some documentation defines Heat as:

"A service to orchestrate multiple composite cloud applications using the .. _AWS CloudFormation: http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html?r=7078 template format, through both an OpenStack-native ReST API and a CloudFormation-compatible Query API."

One important concept for Heat is that it is a declarative specification of application model.   Puppet is a declarative language in which user specify the end state of the server or device that it manages. In the case of Heat it specifies the end state of the state and does not specify how to attend the end state.

Orchestration Service Components
  • heat - A CLI tool that communicates with the heat-api to execute AWS CloudFormation APIs
  • heat-api - An OpenStack-native ReST API that processes API request by sending them to the heat-engine over RPC
  • heat-api-cfn - Provides an AWS-Query API that is compatible with AWS CloudFormation and processes API request by sending them to the heat-engine over RPC
  • heat-engine - Orchestrates the launching of templates and provide events back to the API consumer.
  • api-heat-cloudwatch - Provides monitoring (metrics collection) for the Orchestration Service.
  • heat-cfntools - A package of helper scripts (e.g. cfn-hup which handles updates to metadata and execute custom hooks).

From the components we can see that the heat-engine is the heart of the Orchestration Service in the sense that it launches the templates to create stacks (a collection of resources).

Another thing is that Heat is heavy related to Amazon Web Services CloudFormation. On the above service components there are 3 that are related to AWS -
  • heat-api-cfn, 
  • api-heat-cloudwatch and 
  • heat-cfntools.  

Note: Cloudwatch is a AWS monitoring feature that is the counter part of OpenStack Ceilometer.

We need to look at templates and the 2 versions of APIs (OpenStack native and CloudFormation-compatible).

Heat Template
A template is how we want the OpenStack infrastructure should look like.  Initially the format is compatible to AWS CloudFormation and HOT (Heat Orchestration Template) is to replace the CFN format to be the native format of Heat.

Heat template can be integrate with Configuration Management Tools such as Chef or Puppet.
Heat Template has the following structures:
  • Description
  • Parameters
  • Mappings
  • Resources
  • Outputs

Heat Engine
The Heat API is the vehicle from user to the Heat engine to perform orchestration task.  There are 2 set of API - OpenStack native REST API and AWS Query API

When we think of orchestration, we think of the ability to provision a set of resources and in the case of OpenStack Heat - to provision a stack.

There is another notable feature in OpenStack Heat that is worth looking into. It is - AutoScaling



image source: https://wiki.openstack.org/w/images/2/2a/Current.png

With the alarm provided by the OpenStack Ceilometer, Heat template can be specified to auto scale up or scale down resources.  Usually a load balancer is to be specified in the Heat template when autoscaling is configured.

Related Post:
OpenStack Series Part 1:  How do you look at OpenStack?
OpenStack Series Part 2:  What's new in the Juno Release?
OpenStack Series Part 3:  Keystone - Identity Service
OpenStack Series Part 4:  Nova - Compute Service
OpenStack Series Part 5:  Glance - Image Service
OpenStack Series Part 6:  Cinder - Block Storage Service
OpenStack Series Part 7:  Swift - Object Storage Service
OpenStack Series Part 8:  Neutron - Networking Service
OpenStack Series Part 9:  Horizon - a Web Based UI Service
OpenStack Series Part 11: Ceilometer - Monitoring and Metering Service
OpenStack Series Part 12: Trove - Database Service
OpenStack Series Part 13: Docker in OpenStack
OpenStack Series Part 14: Sahara - Data Processing Service
OpenStack Series part 15: Messaging and Queuing System in OpenStack
OpenStack Series Part 16: Ceph in OpenStack
OpenStack Series Part 17: Congress - Policy Service
OpenStack Series Part 18: Network Function Virtualization in OpenStack
OpenStack Series Part 19: Storage Polices for Object Storage
OpenStack Series Part 20: Group-based Policy for Neutron

Reference:

"Deploying OpenStack: Learning Environments (Manual Setup)." Deploying OpenStack: Learning Environments (Manual Setup). N.p., n.d. Web. 26 Oct. 2014.
"OpenStack." Welcome to the Heat Developer Documentation! — Heat 2015.1.dev217.gd62e13d Documentation. N.p., n.d. Web. 26 Oct. 2014.