400 likes | 575 Views
Connecting to the Clouds. Cloud Brokers and OCCI. Overview. The Broker, components and architecture jOCCI : an OCCI Java implementation The “Connector Project” A full overview. Disclaimer. My visibility on the projects was limited.
E N D
Connecting to the Clouds Cloud Brokersand OCCI.
Overview • The Broker, components and architecture • jOCCI: an OCCI Java implementation • The “Connector Project” • A full overview Raffaele Di Fazio
Disclaimer • My visibility on the projects was limited. • I was just asked to design and develop with a general overview of the goals. • I do NOT have any details about European projects involved with the cloud broker nor any of the other parts I will show to you. Raffaele Di Fazio
The Broker Raffaele Di Fazio
The Broker: a cloud perspective • A cloud broker is an intermediary between the customer and a cloud provider. • The goal of a Cloud Broker is: • To be able to provide a unified interface to manage multiple cloud providers. • To simplify the choice for the customer. • To try to understand the need of the customer and to find the provider that best suits its needs. Raffaele Di Fazio
The Broker: a cloud perspective • Can have different goals based on the user request: • Try to minimize the costs. • Try to give the fastest service (i.e. deploying in EU instead of US) • The Broker, essentially: propose the usera service. Raffaele Di Fazio
Cloud Platforms • At the beginning: one player (Amazon) • Now: multiple players, variegated offer. • Several cloud providers: • Amazon • VCloud • HP Cloud • Eucalyptus • … Raffaele Di Fazio
Amazon Web Services Raffaele Di Fazio
HP Cloud Raffaele Di Fazio
OpenStack • A scalable “operating system” for cloud computing. • It is used to control “compute, network, storage” resources. • A “compute” is any information processing resource (i.e. a VM). • It can be used to control cloud infrastructures. It is a softwaresuite. • This leads to multiple custom clouds ( see http://www.openstack.org/user-stories/) Raffaele Di Fazio
Differences btw cloud providers • Interfaces • APIs • Costs • Way of managing the VMs (i.e. different functionalities) • Even the terminology used can be different. • GOAL: simplify this mess! Raffaele Di Fazio
Broker + OCCI + Proactive Cloud Provider OCCI Server Broker ProActive Raffaele Di Fazio
Broker + OCCI + Proactive: 2nd architecture Cloud Provider OCCI Server ProActive Broker Raffaele Di Fazio
Broker + OCCI + Proactive: expanded OCCI Server Broker ProActive PROCCI jOCCI Cloud connectors Raffaele Di Fazio
jOCCI: an OCCI java library Raffaele Di Fazio
Dictionary… pay attention! • OCCI has a particular naming convention we must follow. • There are very common words that are keywords when speaking about OCCI. • Kind, Link, Resource, Attributes, Category are some of them. • Other classes are: Parser, Server, Model. • Please be careful! Raffaele Di Fazio
OCCI • OCCI: Open Cloud Computing Interface • It is a standard for interoperability between cloud platforms. • GOALS: • Interoperability: between cloud providers • Portability: avoid vendor lock-in • Integration: possibility to support multiple platforms • Extensibility Raffaele Di Fazio
OCCI continued • Currently focus on IaaS. • An extension to support PaaS, SaaSis possible. • It is a set of specifications: • Core: Model specification • Rendering: How to structure the OCCI requests • … • IN PRACTICE: RESTful protocol for cloud management tasks Raffaele Di Fazio
OCCI Core Model Raffaele Di Fazio
OCCI implementation – core • Main classes reflect the OCCI core model: • Category: basic classes to identify OCCI types • Kind: type identification system for all the Entities. • Mixin: extension mechanism for a Kind. • Action: … • Entity: abstract type of resource and link types • Resource: represent a concrete resource and represents real world instances of VMs, etc. • Link: association between two resources. Raffaele Di Fazio
jOCCI • It is a OCCI server written in Java. • Born because of the necessity to replace occi4java • Unsupported, unmaintainable, ugly code. • Inspired by the design of rOCCI, a ruby based OCCI implementation. Raffaele Di Fazio
jOCCI design goals • Be extensible • Model expressed by means of JSONs, defined at runtime. • Extendible, following OCCI principles. • No assumption on the backend (more about this later) • Only supporting OCCI core model by default Raffaele Di Fazio
jOCCI implementation • Made up of two components: • OCCI Core: contains the definitions of all the classes representing the OCCI core specifications • OCCI Server: contains the server, the parser and all the other classes with functionalities to handle OCCI requests/responses. • This makes the development of the specification (CORE) and the server, decoupled. Raffaele Di Fazio
jOCCI core – features • jOCCI implements only the core classes of the OCCI Model. • Rough example: • It defines what are the fields of the Kind class • It does NOT define which types of Kind we can use (i.e. Compute) • This approach makes jOCCIindependent from a specific definition of the instances. Raffaele Di Fazio
jOCCI – Server • Developed using the following technologies: • Apache Tomcat • RESTEasy • Jackson (JSON parsing) • Completely independent of the backend implementation. This is loaded at runtime (more about this later). Raffaele Di Fazio
jOCCI - Server • REST interfaces supporting HEAD, GET, POST, PUT, DELETE HTTP methods. • OCCI requests are HTTP requests that can be expressed in different formats. • Request formats: text/occi, text/plain, application/json, etc. • The server should be flexible enough to support these different types. Raffaele Di Fazio
Example of OCCI request • curl -X POST --header 'Content-type:text/occi' --header 'X-OCCI-Attribute: method=start' http://localhost:8080/jocci/compute/8432c343-15ec-40ff-bb19-1a7062a1aa5b?action=start --header 'Category: start; scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#"; class="action"' -u demo:demo Raffaele Di Fazio
Broker + OCCI + Proactive: an Expanded view OCCI Server Broker ProActive PROCCI jOCCI Cloud connectors Raffaele Di Fazio
Connecting to ProActive: PROCCI Raffaele Di Fazio
PROCCI • Procci was created to be integrated with occi4java to allow ProActive to process OCCI requests. • These requests are mainly intended to be used to manage virtual machines. • The final goal of this interconnection is to be able to speak with the broker. Raffaele Di Fazio
PROCCI • jOCCI parses OCCI requests. • Methods exposed by PROCCI are called directly by jOCCI. • Under the hood, a job is created and it is submitted to the scheduler. • After the job is executed, a response is shown to the user through jOCCI by means of HTTP response. Raffaele Di Fazio
PROCCI Connection • When jOCCI is started, it executes the setup phase. • In each Action class attach the method implemented by the backend. • This allow us to plug the actions to be executed. • Does not force jOCCI to know the backend. Raffaele Di Fazio
PROCCI connection Raffaele Di Fazio
The connector project Raffaele Di Fazio
Broker + OCCI + Proactive: an Expanded view OCCI Server Broker ProActive PROCCI jOCCI Cloud connectors Raffaele Di Fazio
The connector project • We wanted to write several connectors to be able to connect to multiple cloud providers. • Connectors are fundamental for the broker. • It must talk with the cloud service providers. • Technically they are built on top of APIs to connect to the cloud providers. • Not much more to say here! Raffaele Di Fazio
A complete example • A user submit a OCCI request to start an already created virtual machine. • jOCCI receives the request. Once processed, it calls PROCCI. • PROCCI creates a job. The job is submitted to ProActive scheduler. • The job is executed. A remote cloud provider is called using a connector. Raffaele Di Fazio
That’s it! Thank you! Raffaele Di Fazio