Jump to: navigation, search

Difference between revisions of "Graffiti"

m
m
Line 1: Line 1:
  
=== What's in my cloud? ===
+
== What's in my cloud? ==
  
 
I've got a lot of resources in my cloud.
 
I've got a lot of resources in my cloud.
Line 7: Line 7:
 
* How do I describe what I have?
 
* How do I describe what I have?
  
 +
At its most basic concept, Graffiti's intent is to enable better metadata collaboration across services and projects for OpenStack users. Graffiti has the initial intent of providing cross service metadata “tagging" and search aggregation for cloud resources.
  
Graffiti has the initial intent of providing cross service metadata “tagging" and search aggregation for cloud resources.
+
== Overview ==
  
== Introduction and Project Goals ==
+
A challenge we've experienced with using OpenStack is discovering, sharing, and correlating metadata across services and different types of resources. We believe this affects both end users and administrators.
  
The higher level goal of Graffiti is for OpenStack users to be able to declare the capabilities and service level objectives they require and then be guided in selecting the actual cloud resources that match their desired capabilities.  
+
For end users, we feel like doing basic tasks like launching instances is too technical for end users. For example, you should be able to just specify categories like "Big Data" or an OS family and then let the system find the boot source for you, whether that is an image, snapshot, or volume.  You also should be able to more easily filter based on specific versions of software that you want.
  
Various OpenStack services provide techniques to abstract low level resource selection to one level higher, such as flavors, volume types, or artifact types. These resource abstractions often allow "metadata" in terms of key-value pair properties to further specialize and describe instances of each resource type. However, collaborating on those properties can be a disconnected and difficult process. This often involves searching outdated wikis and opening the source code. In addition, the metadata properties often need to be correlated across several different services.  It becomes more difficult as a cloud's scale grows and the number of resources being managed increases.
+
For administrators and power users, we’d like there to be an easier way to meaningfully collaborate on properties across host aggregates, flavors, images, volumes, or other cloud resources.  
  
At its most basic concept Graffiti is a project to enable better metadata collaboration across services and projects.  Graffiti intends to provide a common methodology to describe resource capabilities in the cloud which we believe can then be leveraged by other projects such as Horizon, Nova, Heat, scheduling, reservation, and policy enforcement to enable better cross service collaboration and consistency.
+
Various OpenStack services provide techniques to abstract low level resource selection to one level higher, such as flavors, volume types, or artifact types. These resource abstractions often allow "metadata" in terms of key-value pair properties to further specialize and describe instances of each resource type. However, collaborating on those properties can be a disconnected and difficult process. This often involves searching wikis and opening the source code. In addition, the metadata properties often need to be correlated across several different services.  It becomes more difficult as a cloud's scale grows and the number of resources being managed increases.
 +
 
 +
We believe that both of the above problems come back to needing a better way for users to collaborate on metadata across services and resource typesWe started this project to explore ideas and concepts for how to make this easier and more approachable for end users.
 +
 
 +
Graffiti intends to provide a common methodology to describe resources capabilities in the cloud which we believe can then be leveraged by other projects such as Horizon, Nova, Heat, scheduling, reservation, and policy enforcement to enable better cross service collaboration and consistency.
  
 
=== Terminology Note ===
 
=== Terminology Note ===
  
Within the Graffiti concepts, we sometimes use the term "tag" interchangeably with the traditional meaning for the word "tag".  The idea is that a user can simply tag a capability onto a resource. Sometimes tagging the capability results in a simple keyword and sometimes it may map to multiple properties that they can specialize. To the end user, it shouldn't matter how the data is handled.
+
To start with, we think the term "metadata" is a somewhat unapproachable term, so we have been exploring with the concept of a "capability".  A capability can simply be thought of as a named "tag" which may or may not have properties.  The idea is that a user can simply "tag" a capability onto various cloud resources such as images, volumes, host aggregates, flavors, and so on. To the end user, the exact mechanism for how the data is stored is handled for them.
 +
 
 +
=== Screencasts ===
 +
 
 +
To help explain the ideas of the project, we have created a couple of quick screencasts demonstrating the concepts running under POC code. Please take a look!
 +
 
 +
* [https://www.youtube.com/watch?v=f0SZtPgcxk4| Concept Overview]
 +
 
  
 
=== Usage Concepts ===
 
=== Usage Concepts ===
Line 33: Line 45:
  
 
Please see our  [[Graffiti/FAQ]] for answers to common questions.
 
Please see our  [[Graffiti/FAQ]] for answers to common questions.
 
=== Screencasts ===
 
 
To explore and explain the ideas of the project, HP and Intel have created a couple of screencasts showing the concepts running under POC code.
 
 
* [https://www.youtube.com/watch?v=f0SZtPgcxk4| Concept Overview]
 
  
 
== Design Concepts ==
 
== Design Concepts ==
  
Graffiti provides cross service "metadata tagging" and search aggregation for cloud resources. In Graffiti, metadata definitions may be simple property types or may be structured into simple hierarchy of objects that we call capabilities.  Each of those capabilities may contain many properties.
+
Additional architecture concepts on the [[Graffiti/Architecture|Architecture]] page.
 
 
Graffiti provides cross service and cross environment:
 
* metadata definition aggregation and administration
 
* resource "tagging" aggregation
 
* resource metadata search aggregation (metadata properties, name, and description)
 
 
 
=== Architecture ===
 
 
 
The full architecture may be found on the [[Graffiti/Architecture|Architecture]] page.
 
  
 
== Status ==
 
== Status ==

Revision as of 16:54, 4 May 2014

What's in my cloud?

I've got a lot of resources in my cloud.

  • How do I find what I need?
  • How do I describe what I have?

At its most basic concept, Graffiti's intent is to enable better metadata collaboration across services and projects for OpenStack users. Graffiti has the initial intent of providing cross service metadata “tagging" and search aggregation for cloud resources.

Overview

A challenge we've experienced with using OpenStack is discovering, sharing, and correlating metadata across services and different types of resources. We believe this affects both end users and administrators.

For end users, we feel like doing basic tasks like launching instances is too technical for end users. For example, you should be able to just specify categories like "Big Data" or an OS family and then let the system find the boot source for you, whether that is an image, snapshot, or volume. You also should be able to more easily filter based on specific versions of software that you want.

For administrators and power users, we’d like there to be an easier way to meaningfully collaborate on properties across host aggregates, flavors, images, volumes, or other cloud resources.

Various OpenStack services provide techniques to abstract low level resource selection to one level higher, such as flavors, volume types, or artifact types. These resource abstractions often allow "metadata" in terms of key-value pair properties to further specialize and describe instances of each resource type. However, collaborating on those properties can be a disconnected and difficult process. This often involves searching wikis and opening the source code. In addition, the metadata properties often need to be correlated across several different services. It becomes more difficult as a cloud's scale grows and the number of resources being managed increases.

We believe that both of the above problems come back to needing a better way for users to collaborate on metadata across services and resource types. We started this project to explore ideas and concepts for how to make this easier and more approachable for end users.

Graffiti intends to provide a common methodology to describe resources capabilities in the cloud which we believe can then be leveraged by other projects such as Horizon, Nova, Heat, scheduling, reservation, and policy enforcement to enable better cross service collaboration and consistency.

Terminology Note

To start with, we think the term "metadata" is a somewhat unapproachable term, so we have been exploring with the concept of a "capability". A capability can simply be thought of as a named "tag" which may or may not have properties. The idea is that a user can simply "tag" a capability onto various cloud resources such as images, volumes, host aggregates, flavors, and so on. To the end user, the exact mechanism for how the data is stored is handled for them.

Screencasts

To help explain the ideas of the project, we have created a couple of quick screencasts demonstrating the concepts running under POC code. Please take a look!


Usage Concepts

  1. Load your metadata definitions (called property types or capability types)
    1. Into the Graffiti central dictionary
    2. Or configure Graffiti plugins to include existing definitions provided by the various services
  2. "Tag" the resources in the cloud with your properties and capabilities
  3. Let users find the resources with your desired properties and capabilities

Frequently Asked Questions

Please see our Graffiti/FAQ for answers to common questions.

Design Concepts

Additional architecture concepts on the Architecture page.

Status

We are working on a proof of concept with Horizon that crosses Nova, Glance, and Cinder. We are using the POC to help us better understand technical issues and will use that knowledge to help contribute to existing projects and to build out the Graffiti concepts appropriately.

The Graffiti project currently has the following aspects:


We will be at the summit with a demo of the POC (in whatever state it is) and have a scheduled design session where we'd love to discuss with the community where Graffiti can best fit in to the ecosystem and how it may relate to other projects and use cases.

Get Involved

Please join with us to help refine our ideas and identify where we can best fit in to the ecosystem. We have picked up and also have filed a few Horizon blueprints, but to accomplish the desired outcomes this will require work on other projects as well as possibly incubating the Graffiti service under an existing program. Your insight and feedback is important to us and we look forward to growing this initiative with you!

IRC

The developers use IRC in #graffiti on Freenode for development discussion.

Development