Neutronium

20
NEUTRONIUM A PaaS Framework for OpenStack

description

Presentation from Openstack Design Summit, Boston, 10/4/11.

Transcript of Neutronium

Page 1: Neutronium

NEUTRONIUM

A PaaS Framework for OpenStack

Page 2: Neutronium

NEUTRONIUM: A PAAS SERVICES FRAMEWORK

– Goal: An open ecosystem for platform services• Lots of services

• Services interoperate smoothly

• A large and diverse community of service developers/providers

– Anyone can add a new service• Does not require development by cloud provider

• New service is deeply integrated

Page 3: Neutronium

EXAMPLES OF PAAS SERVICES

– SQL Databases

– NoSQL Databases

– Map/Reduce

– Load Balancers

– Web Servers (for example Tomcat)

– Messaging

– …

Page 4: Neutronium

DEEPLY INTEGRATED SERVICES

– Deployment

– Management (for example database backup)

– Orchestration (to combine with other service)

– In PaaS web console and other user interfaces

– Integrated billing (optional)

– Monitoring

– Documentation

– …

Page 5: Neutronium

NEUTRONIUM PAAS LAYER

Page 6: Neutronium

Swift

Nova

Glance

Keystone

NeutroniumServers

IaaSPaaS

Library

Models

User APIs

NeutroniumWeb

Console

Command Line

Java, Ruby, …

Eclipse, …

Mobile

API (REST/JSON)

Page 7: Neutronium

NEUTRONIUM REST/JSON API

– CRUD (create,read,update,delete)• Library items

• Models

– Instantiate template to produce model

– Management• Start - stop

• Version upgrades

• Scaling

• Backup

• …

– Current status of deployed components

Page 8: Neutronium

NEUTRONIUM COMPONENTS

– Primitive• Hardware

− Compute (virtual machine)

− Storage (disk)

• Software− Machine images

− Executable code

– Compound• Combine other components

Page 9: Neutronium

COMPONENT HIERARCHY

– Applications

– Standardized Stacks (for example LAMP)

– Services

– Primitive

Page 10: Neutronium

COMPONENT TEMPLATES AND MODELS

– Component Template (like a class)• A non-procedural specification • Can be parameterized• Can contain conditionals

– Component Model (like an object)• Represents a currently deployed system

– Instantiation (Template => Model)• Expansion

− Formal parameter references => actual parameter values

− Conditionals evaluated and a single alternative selected

• Deployment− Plan: non-procedural spec => procedural deployment plan

− Bound to specific hardware

− Network bindings to IP and Port

– Templates and Models are both described using JSON syntax

Page 11: Neutronium

COMPONENT PORTS AND CONNECTIONS

– Each component has a set of typed ports• URL (address of web server)

• Extension point (add servlet to a web server)

• Configuration (modify web server configuration)

– Connections• Connect a port of one component to a port on another components

• Source and destination ports must have compatible types

Page 12: Neutronium

LIBRARIES

– Libraries provide custom semantics for services (and other components)

– System wide and per user

– Types• Component templates

• Machine images

• Executables

• JAR / WAR

• Script (Chef and other)

• …

– Named via path (/a/b/c)

Page 13: Neutronium

COMPONENT ASPECT-ORIENTED PROGRAMMING

– Security boundaries

– Monitoring

– Geographic placement (across datacenters)

Page 14: Neutronium

NEUTRONIUM EXTENSION POINTS(STANDARD INTERFACES)

– New services (via components)

– New user interfaces (via Neutronium REST/JSON Interface)

– New tools (by reading/modifying models)

– New semantics (by adding to libraries)

Page 15: Neutronium

COMPONENT EXAMPLE

Load Balancer

Jetty

MyApp1(WAR)

MySQL

JettyJetty

MyApp1(WAR)

MyApp1(WAR)

Page 16: Neutronium

COMPONENT EXAMPLE: JSON TEMPLATE

{"@component"="MyService",

"params"=[

{"@param"="servers", "default"=3},

{"@param"="replicas", "default"=0} ],

"parts"=[

{"@component"="lb", "val"="!/System/Services/LoadBalancer"},

{"@copies"="frontends", "count"="!servers", "val"=

{"@component"="frontend", "visible"=true,

"parts"=[

{"@component"="jetty", "val"="!System/Services/Jetty"},

{"@component"="war", "val"="!MyStuff/Wars/MyApp1"},

{"@connect"="x", "from"="!jetty.servlets", "to"=”!war"},

{"@visible"="serverport", "val"="!frontend.jetty.listener”} ] } },

{"@component"="database", "val"="!/System/Services/MySql",

"replicas"="!replicas"},

{"@connect"="c0", "from"="!lb.load" "to"="!frontends.frontend.serverport"},

{"@connect"="c1", "from"="!frontends.frontend.db", "to"="!database.listener"},

{"@visible"="ServiceEntry", "val"="!lb.listener”} ] }

Page 17: Neutronium

NEUTRONIUM DISTRIBUTED ARCHITECTURE

– Highly-available, highly-reliable, highly-durable data

– Support multiple data centers

– Same API and capabilities available everywhere

– Partition tolerant, eventual consistency

Page 18: Neutronium

MULTI-TENANT SERVICES

– A single tenant service is instantiated by deploying it

– A multi-tenant service is instantiated by registering with it

– Multi-tenant example: Swift

– Note that Neutronium itself is multi-tenant.

Page 19: Neutronium

MULTI-TENANT MANAGEMENT SERVICES

– Example: MySQL database

– Each MySQL service is deployed as a single tenant database running on a new virtual machine

– But all MySQL databases might also share a multi-tenant MySQL management service• Monitoring

• Auto scaling

• Periodic backup

• Failure recovery

• …

– Other services may also have their own management services

Page 20: Neutronium

© Copyright 2010 Hewlett-Packard Development Company, L.P.    HP CONFIDENTIAL