Neutronium

1,288 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,288
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
35
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Neutronium

  1. 1. NEUTRONIUM A PaaS Framework for OpenStack
  2. 2. NEUTRONIUM: A PAAS SERVICES FRAMEWORK <ul><li>Goal: An open ecosystem for platform services </li></ul><ul><ul><li>Lots of services </li></ul></ul><ul><ul><li>Services interoperate smoothly </li></ul></ul><ul><ul><li>A large and diverse community of service developers/providers </li></ul></ul><ul><li>Anyone can add a new service </li></ul><ul><ul><li>Does not require development by cloud provider </li></ul></ul><ul><ul><li>New service is deeply integrated </li></ul></ul>
  3. 3. EXAMPLES OF PAAS SERVICES <ul><li>SQL Databases </li></ul><ul><li>NoSQL Databases </li></ul><ul><li>Map/Reduce </li></ul><ul><li>Load Balancers </li></ul><ul><li>Web Servers (for example Tomcat) </li></ul><ul><li>Messaging </li></ul><ul><li>… </li></ul>
  4. 4. DEEPLY INTEGRATED SERVICES <ul><li>Deployment </li></ul><ul><li>Management (for example database backup) </li></ul><ul><li>Orchestration (to combine with other service) </li></ul><ul><li>In PaaS web console and other user interfaces </li></ul><ul><li>Integrated billing (optional) </li></ul><ul><li>Monitoring </li></ul><ul><li>Documentation </li></ul><ul><li>… </li></ul>
  5. 5. NEUTRONIUM PAAS LAYER
  6. 6. Swift Nova Glance Keystone Neutronium Servers … IaaS PaaS Library Models User APIs Neutronium Web Console Command Line Java, Ruby, … Eclipse, … Mobile API (REST/JSON)
  7. 7. NEUTRONIUM REST/JSON API <ul><li>CRUD (create,read,update,delete) </li></ul><ul><ul><li>Library items </li></ul></ul><ul><ul><li>Models </li></ul></ul><ul><li>Instantiate template to produce model </li></ul><ul><li>Management </li></ul><ul><ul><li>Start - stop </li></ul></ul><ul><ul><li>Version upgrades </li></ul></ul><ul><ul><li>Scaling </li></ul></ul><ul><ul><li>Backup </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Current status of deployed components </li></ul>
  8. 8. NEUTRONIUM COMPONENTS <ul><li>Primitive </li></ul><ul><ul><li>Hardware </li></ul></ul><ul><ul><ul><li>Compute (virtual machine) </li></ul></ul></ul><ul><ul><ul><li>Storage (disk) </li></ul></ul></ul><ul><ul><li>Software </li></ul></ul><ul><ul><ul><li>Machine images </li></ul></ul></ul><ul><ul><ul><li>Executable code </li></ul></ul></ul><ul><li>Compound </li></ul><ul><ul><li>Combine other components </li></ul></ul>
  9. 9. COMPONENT HIERARCHY <ul><li>Applications </li></ul><ul><li>Standardized Stacks (for example LAMP) </li></ul><ul><li>Services </li></ul><ul><li>Primitive </li></ul>
  10. 10. COMPONENT TEMPLATES AND MODELS <ul><li>Component Template (like a class) </li></ul><ul><ul><li>A non-procedural specification </li></ul></ul><ul><ul><li>Can be parameterized </li></ul></ul><ul><ul><li>Can contain conditionals </li></ul></ul><ul><li>Component Model (like an object) </li></ul><ul><ul><li>Represents a currently deployed system </li></ul></ul><ul><li>Instantiation (Template => Model) </li></ul><ul><ul><li>Expansion </li></ul></ul><ul><ul><ul><li>Formal parameter references => actual parameter values </li></ul></ul></ul><ul><ul><ul><li>Conditionals evaluated and a single alternative selected </li></ul></ul></ul><ul><ul><li>Deployment </li></ul></ul><ul><ul><ul><li>Plan: non-procedural spec => procedural deployment plan </li></ul></ul></ul><ul><ul><ul><li>Bound to specific hardware </li></ul></ul></ul><ul><ul><ul><li>Network bindings to IP and Port </li></ul></ul></ul><ul><li>Templates and Models are both described using JSON syntax </li></ul>
  11. 11. COMPONENT PORTS AND CONNECTIONS <ul><li>Each component has a set of typed ports </li></ul><ul><ul><li>URL (address of web server) </li></ul></ul><ul><ul><li>Extension point (add servlet to a web server) </li></ul></ul><ul><ul><li>Configuration (modify web server configuration) </li></ul></ul><ul><li>Connections </li></ul><ul><ul><li>Connect a port of one component to a port on another components </li></ul></ul><ul><ul><li>Source and destination ports must have compatible types </li></ul></ul>
  12. 12. LIBRARIES <ul><li>Libraries provide custom semantics for services (and other components) </li></ul><ul><li>System wide and per user </li></ul><ul><li>Types </li></ul><ul><ul><li>Component templates </li></ul></ul><ul><ul><li>Machine images </li></ul></ul><ul><ul><li>Executables </li></ul></ul><ul><ul><li>JAR / WAR </li></ul></ul><ul><ul><li>Script (Chef and other) </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Named via path (/a/b/c) </li></ul>
  13. 13. COMPONENT ASPECT-ORIENTED PROGRAMMING <ul><li>Security boundaries </li></ul><ul><li>Monitoring </li></ul><ul><li>Geographic placement (across datacenters) </li></ul>
  14. 14. NEUTRONIUM EXTENSION POINTS (STANDARD INTERFACES) <ul><li>New services (via components) </li></ul><ul><li>New user interfaces (via Neutronium REST/JSON Interface) </li></ul><ul><li>New tools (by reading/modifying models) </li></ul><ul><li>New semantics (by adding to libraries) </li></ul>
  15. 15. COMPONENT EXAMPLE Load Balancer Jetty MyApp1 (WAR) MySQL Jetty Jetty MyApp1 (WAR) MyApp1 (WAR)
  16. 16. COMPONENT EXAMPLE: JSON TEMPLATE <ul><li>{&quot;@component&quot;=&quot;MyService&quot;, </li></ul><ul><li>&quot;params&quot;=[ </li></ul><ul><li>{&quot;@param&quot;=&quot;servers&quot;, &quot;default&quot;=3}, </li></ul><ul><li>{&quot;@param&quot;=&quot;replicas&quot;, &quot;default&quot;=0} ], </li></ul><ul><li>&quot;parts&quot;=[ </li></ul><ul><li>{&quot;@component&quot;=&quot;lb&quot;, &quot;val&quot;=&quot;!/System/Services/LoadBalancer&quot;}, </li></ul><ul><li>{&quot;@copies&quot;=&quot;frontends&quot;, &quot;count&quot;=&quot;!servers&quot;, &quot;val&quot;= </li></ul><ul><li>{&quot;@component&quot;=&quot;frontend&quot;, &quot;visible&quot;=true, </li></ul><ul><li>&quot;parts&quot;=[ </li></ul><ul><li>{&quot;@component&quot;=&quot;jetty&quot;, &quot;val&quot;=&quot;!System/Services/Jetty&quot;}, </li></ul><ul><li>{&quot;@component&quot;=&quot;war&quot;, &quot;val&quot;=&quot;!MyStuff/Wars/MyApp1&quot;}, </li></ul><ul><li>{&quot;@connect&quot;=&quot;x&quot;, &quot;from&quot;=&quot;!jetty.servlets&quot;, &quot;to&quot;=”!war&quot;}, </li></ul><ul><li>{&quot;@visible&quot;=&quot;serverport&quot;, &quot;val&quot;=&quot;!frontend.jetty.listener”} ] } }, </li></ul><ul><li>{&quot;@component&quot;=&quot;database&quot;, &quot;val&quot;=&quot;!/System/Services/MySql&quot;, </li></ul><ul><li>&quot;replicas&quot;=&quot;!replicas&quot;}, </li></ul><ul><li>{&quot;@connect&quot;=&quot;c0&quot;, &quot;from&quot;=&quot;!lb.load&quot; &quot;to&quot;=&quot;!frontends.frontend.serverport&quot;}, </li></ul><ul><li>{&quot;@connect&quot;=&quot;c1&quot;, &quot;from&quot;=&quot;!frontends.frontend.db&quot;, &quot;to&quot;=&quot;!database.listener&quot;}, </li></ul><ul><li>{&quot;@visible&quot;=&quot;ServiceEntry&quot;, &quot;val&quot;=&quot;!lb.listener”} ] } </li></ul>
  17. 17. NEUTRONIUM DISTRIBUTED ARCHITECTURE <ul><li>Highly-available, highly-reliable, highly-durable data </li></ul><ul><li>Support multiple data centers </li></ul><ul><li>Same API and capabilities available everywhere </li></ul><ul><li>Partition tolerant, eventual consistency </li></ul>
  18. 18. MULTI-TENANT SERVICES <ul><li>A single tenant service is instantiated by deploying it </li></ul><ul><li>A multi-tenant service is instantiated by registering with it </li></ul><ul><li>Multi-tenant example: Swift </li></ul><ul><li>Note that Neutronium itself is multi-tenant. </li></ul>
  19. 19. MULTI-TENANT MANAGEMENT SERVICES <ul><li>Example: MySQL database </li></ul><ul><li>Each MySQL service is deployed as a single tenant database running on a new virtual machine </li></ul><ul><li>But all MySQL databases might also share a multi-tenant MySQL management service </li></ul><ul><ul><li>Monitoring </li></ul></ul><ul><ul><li>Auto scaling </li></ul></ul><ul><ul><li>Periodic backup </li></ul></ul><ul><ul><li>Failure recovery </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Other services may also have their own management services </li></ul>

×