ow2con'14 - erocci, a scalable, model-based rest api framework
TRANSCRIPT
November 5th, 2014 erocci - Jean Parpaillon 1
erocci
A scalable model-driven REST framework
Jean Parpaillon <[email protected]>
November 5th, 2014 erocci - Jean Parpaillon 2
REST API : a user point of view
November 5th, 2014 erocci - Jean Parpaillon 3
REST API : a user point of view
Data formatJSON formatXML formatScalar data types (string, integer, float, etc)
Data access protocolFilteringSortingPaginationAuthnz (tokens, etc), return codes, etc.
Finally...Application level : data types (structures, relations, etc)
November 5th, 2014 erocci - Jean Parpaillon 4
REST API : a user point of view
Data formatJSON formatXML formatScalar data types (string, integer, float, etc)
Data access protocolFilteringSortingPaginationAuthnz (tokens, etc), return codes, etc.
Finally...Application level : data types (structures, relations, etc)
Schémas ?
One to rule them all ?
A single meta-model ?
November 5th, 2014 erocci - Jean Parpaillon 5
Let's speak about a standard ?
November 5th, 2014 erocci - Jean Parpaillon 6
Let's speak about a standard for REST
A standardIs not a catalog of schemasIs not a constraint for developersMust be implemented (implementable)
A good standardShould allow to concentrate on the design, not the implementation detailsAllow to build an ecosystemAllow to accelerate the development, not the contrary
November 5th, 2014 erocci - Jean Parpaillon 7
The Open Cloud Computing Interface
OCCI is typedA ressource is an instance of a kindA kind is a named list of typed attributes and actions
e.g. : compute : # cores (integer), RAM (float), etc Attribute : name, type, default value, mutability, etc. Action : an invocable operation on a ressource Kinds are inheritable
November 5th, 2014 erocci - Jean Parpaillon 8
The Open Cloud Computing Interface
OCCI is extensibleResource can be associated with mixinsMixin: a named set of additional attributes and actions
e.g. : IPNetworkInterface adds IP, netmask, etc to a network interface
User Mixin : aka « tags » e.g. : http://example.com/occi/mixins#my_project1
November 5th, 2014 erocci - Jean Parpaillon 9
The Open Cloud Computing Interface
OCCI is relationalLinks are ressources with additional attributes
occi.core.source : resource URI occi.core.target : URI
A bounded collection is a list of ressources of the same kind/mixin :
e.g. : GET /collections/compute/ An unbounded collection is a list of ressources with same prefx :
e.g. : GET /myresources/
November 5th, 2014 erocci - Jean Parpaillon 10
The Open Cloud Computing Interface
OCCI is self-describedGET /-/ (capabilities)
List of supported kindsList of supported mixins
Capabilities returns collection's URLhttp://schemas.ogf.org/occi/infrastructure#compute → /collections/compute/
November 5th, 2014 erocci - Jean Parpaillon 11
The Open Cloud Computing Interface
OCCI is meta-model basedModel consistency checkingAutomatic model implementationRendering independant
text/plain, application/json, …Transport independant
HTTP, ...
November 5th, 2014 erocci - Jean Parpaillon 12
OCCI Ecosystem
Framework
rOCCI (ruby)
occi4java (not maintained)
Specifc implementations
CompatibleOne
PyOCNI
OpenStack, OpenNebula, etc
Limits
Models are language/extensions/lib dependant
See http://occi-wg/community/implementations/
Tools
DoYouSpeakOcci : tests
Monitoring (Intel)
November 5th, 2014 erocci - Jean Parpaillon 13
Why erocci ?
Generic : a framework to build OCCI applications Less code, more designSmall, tested, reliableEasy to deployScalable
Runs embedded in connected objects (IoT)Scales out to serve millions of users
Extensible
November 5th, 2014 erocci - Jean Parpaillon 14
Architecture
November 5th, 2014 erocci - Jean Parpaillon 15
Genericity
Only OCCI meta-model is hard-codedEverything is pluggable :
Authentication mechanismTransport protocol (HTTP, XMPP, etc)Data sources (backends)
Allow composition of services by plugging data sources (backends) at runtime
November 5th, 2014 erocci - Jean Parpaillon 16
Less code, more design
A schema for ressources' categories (kinds, mixins)ACL-based authorizations
November 5th, 2014 erocci - Jean Parpaillon 17
Small, tested, reliable
SmallAround 12k lines
TestedContinuous integration
ReliableErlang cowboy web server (LeoFS, MongooseIM, etc)erlang/OTP platform provides fault toleranceProcess supervision
November 5th, 2014 erocci - Jean Parpaillon 18
Easy to deploy
All included erlang/OTP platformSelf contained : no web frontend Just try it !
November 5th, 2014 erocci - Jean Parpaillon 19
Scalable
Thanks to erlang/OTPRuns on RaspberryPI (~ 100 req/sec)Scales out to a full cluster
November 5th, 2014 erocci - Jean Parpaillon 20
Extensible
Pluggable mechanismsFor those who don't like erlang
D-Bus backend API (experimental)
November 5th, 2014 erocci - Jean Parpaillon 21
(1) use case : a REST backend for blog
No need for ORM, web server, database, templating, etc.Design your model
Blog entry kindUser kindContribution kind (link between a user and an entry)
Choose a storage backendChoose a transport (HTTP?)Defnes ACLAnd that's all
November 5th, 2014 erocci - Jean Parpaillon 22
(2) use case : API adapter
Backend API : write a new data source for your API Erlang APID-Bus API (any language)In any case, implements CRUD operations
Choose a transportEnjoy scalability, supervision, transports, ACL, etc.
November 5th, 2014 erocci - Jean Parpaillon 23
(3) use case : a protocol adapter
You have a resource oriented protocol and want to expose it through HTTP/OCCIUse occi_store for storing your dataerocci deals with storage, rendering, scalability, ...
November 5th, 2014 erocci - Jean Parpaillon 24
Roadmap
Authn/authzx509 based authnoauth
occi_storeOptimizationsIntegrate authnz, pagination (wip)
XMPPEnable pubsub (notifcations)
New storage backendsRiak (wip)ODBC (SQL)…
TestingImprove functional testsImprove unit testing
November 5th, 2014 erocci - Jean Parpaillon 25
Eco-system : OCCIware
(1) consortiumResearch, industry, standardization
(3) pillarsTheory : proven meta-model (OCCI) Design : Eclipse-based tools Runtime : erocci, …
(*) use casesIaaS, PaaS, SaaS, IoT, ...Every RESTful services
November 5th, 2014 erocci - Jean Parpaillon 26
Resources
Website (WIP)http://erocci.ow2.org/
Source codehttp://github.com/erocci/erocci
Continuous integrationhttps://travis-ci.org/jeanparpaillon/erocci
Mailing [email protected] / [email protected]
November 5th, 2014 erocci - Jean Parpaillon 27
Thanks !
Questions ?