SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
©	2014	Jean	Parpaillon
1
©	2014	Jean	Parpaillon
LET'S	GO	CLOUD	WATCHING
IS	CLOUD	VIRTUALIZATION	?
IS	CLOUD	STORAGE	?
IS	CLOUD	WEB++	?
2
©	2014	Jean	Parpaillon
CLOUD	IS	REST...
int	create_vm(char*	name,	int	cores,	int	mem);
def	get_bucket(size)
module:erase_stuff/3
GET	http://example.com/bucket?size=12
PUT	http://example.com/vm
	{	"name":	"myvm1",
	"cores":	4,
	"mem":	2.5	}
DELETE	http://example.com/stuff/id1
object	oriented
relational	tables
relational	tables
Resource	oriented
factory	pattern
builder iterator
observer
C(reate)	R(ead)	U(pdate)	D(elete)
3
©	2014	Jean	Parpaillon
...SO	IS	EROCCI
PUT	/myresource/id1
CREATE
POST	/myresource/id1
UPDATE
GET	/myresource/id1
READ
DELETE	/myresource/id1
DELETE
4
©	2014	Jean	Parpaillon
"YET	ANOTHER	REST	FRAMEWORK"	?
REST	APIs	looks	similar,	but	are	not	interoperable
5
©	2014	Jean	Parpaillon
OCCI	IS	TYPED
Kind:	a	named	list	of	attributes	and	actions
e.g.:	http://schemas.ogf.org/occi/infrastructure#compute
Attribute:	name,	type	(string,	numeric,	etc),	mutability,	occurrence,	default	value
Resource:	an	instance	of	a	kind,	identified	with	a	URI
Action:	an	invocable	operation	applicable	to	a	resource
e.g.:	http://schemas.ogf.org/occi/infrastructure/compute/action#start
Kinds	are	inheritable
Inherits	attributes	and	actions
6
©	2014	Jean	Parpaillon
OCCI	IS	EXTENSIBLE
Mixin:	a	named	set	of	additional	attributes	and	actions
e.g.:	http://schemas.ogf.org/occi/infrastructure/networkinterface#ipnetworkinterface
Resource	can	be	associated	with	one	or	several	mixin
User	Mixin:	a	user	can	create	its	own	mixin,	to	tag	resources
e.g.:	http://example.com/occi/mixins#my_group1
7
©	2014	Jean	Parpaillon
OCCI	IS	RELATIONAL
Links	are	resources	with	specific	attributes:
occi.core.source:	resource	URI
occi.core.target:	resource	URI
A	collection	is	a	list	of	resource	URIs	of	the	same	kind/mixin
GET	/collections/compute/
GET	/collections/os_tpl/
8
©	2014	Jean	Parpaillon
OCCI	IS	SELF-DESCRIBED
GET	/-/	(capabilities)
List	of	supported	kinds	+	description
List	of	supported	mixins	+	description
List	of	supported	actions	+	description
Capabilities	show	collection's	URL
http://schemas.ogf.org/occi/infrsatructure#compute	->	/collections/compute
9
©	2014	Jean	Parpaillon
OCCI	IS	META-MODEL	BASED
Category
scheme:	URI
term:	String
title:	String	[0..1]
Kind Mixin
Action
Entity
id:	URI
Resource Link
Attribute
name:	String
type:	String	[0..1]
mutable:	Boolean	[0..1]
required:	Boolean	[0..1]
default:	String	[0..1]
description:	String	[0..1]
0..1 *
actions 1*
actions
*
mixins
*
entities
1
kind
*
entities
1 target
1 source
*
links
0..1
parent
*
*
depends
*
1 *
attributes
* applies
Model	consistency	checking
Rendering	independant
text/plain,	application/json,	etc.
Transport	independant
HTTP,	others...
Automatic	model	implementation
10
©	2014	Jean	Parpaillon
OCCI	IMPLEMENTATIONS
rOCCI
occi4java
Frameworks
DoYouSpeakOCCI	:	test
Tools
CompatibleOne
pyOCNI
OpenStack,	OpenNebula,	etc
Specific	implementations
Models	are	language	extensions/libs
Hard	to	exchange	models:	what
about	interoperability	?
Limits
See	http://occi-wg.org/community/implementations/
11
occi_store
occi_backend
supervisor
occi_backend_riak
backend
occi_backend_mnesia
backend
/
/path/to/resources
mount
create
load
update
delete
occi_hook
supervisor
call
on_save
on_load
on_update
on_delete
on_action
occi_hook_mgr
hook
notify
occi_renderer_json
occi_renderer
occi_renderer_occi
occi_renderer
occi_renderer_xml
occi_renderer
parse
render
parse
render
occi_listener_http
occi_listener
occi_listener_xmpp
occi_listener
based	on	cowboy based	on	exmpp
occi_category_mgr
supervisorcategories
description
<?xml	>
<occi:extension>
<occi:kind>
...
</occi:kind>
</occi:extension>load
APPLICATION
MODEL
STANDARD	OCCI	API
STORAGE
occi_backend_XXX
backend
PROPRIETARY	API
/other/path/to/resources
©	2014	Jean	Parpaillon
EROCCI	ARCHITECTURE
12
©	2014	Jean	Parpaillon
MULTIPLE	REPRESENTATIONS
text/plain
Write	your	own	rendering:
Implements:	render,	parse
text/occi
application/json	(draft)
application/xml	(experimental):	see	XSD:	https://github.com/jeanparpaillon/occi-schemas
13
/
	/store/db1
	/store/db2
	/virt
occi_backend_mnesia
occi_backend_riak
occi_backend_odbc
occi_backend_libvirt
©	2014	Jean	Parpaillon
MULTIPLE	BACKENDS
Backends	attached	to	mountpoints
Backends	declare	a	schema
Storage	backend:	user-defined	schema
API	adapter:	backend	specific	schema
Simple	backend	API
Implements	CRUD	operations
Shared	kinds/mixins
Collection	requests	run	in	parallel
14
©	2014	Jean	Parpaillon
MULTIPLE	TRANSPORTS
HTTP(S)
Natural	REST	transport
cowboy	web	server
100%	erlang	(easy	to	port)
Small,	tested,	scalable
	(distributed)
XMPP
Ideal	for	M2M,	IoT
Based	on	forked	exmpp	(erim)
<iq/>	based
XML	schema	available
Extensible
Simple	APIs	for:
-	dispatching	requests	(occi_store)
-	parsing/rendering
Fault	tolerant:
-	erlang	supervisor'ed
15
©	2014	Jean	Parpaillon
EXTENDING	EROCCI
AS	A	REST	"ORM"
Choose	a	storage	backend
Load	OCCI	schema	as	XML
Choose	a	listener
Start	it	!
AS	API	ADAPTOR
Write	your	own	backend
Implements	CRUD	operations
w/	calls	to	your	favourite	API
NEW	TRANSPORT
Share	your	model
Just	transport	it	differently
->	No	erlang	needed	!
->	Need	to	write	erlang	(no	harm)
->	Enjoy	scalability,	fault	tolerance,
	transports,	etc.
16
©	2014	Jean	Parpaillon
ROADMAP
authn/authz
x509,	HTTP	basic	etc,	XMPP	rosters,	
oauth/openid,	etc.
POSIX	based	with	file-based	backend	?
Contributions	welcome	!
Testing
Functional	tests:	migrate	to	Common	Test
Unit	tests:	use	eunit,	add	tests
POSIX	based	with	file-based	backend	?
Optimize	occi_store
New	storage	backends
Riak	(started...)
ODBC	(SQL)
etc.
XMPP	listener
XMPP	component	(API	proxy)
Implements	rosters,	presence,	etc
17
©	2014	Jean	Parpaillon
RESOURCES
Website:
Source	code:
Continuous	integration:
Mailing	lists:
http://erocci.ow2.org
http://github.com/jeanparpaillon/erocci
https://travis-ci.org/jeanparpaillon/erocci
erocci-dev@ow2.org erocci-info@ow2.org
(ongoing	work)
18
©	2014	Jean	Parpaillon
THANKS
19

Contenu connexe

Tendances

Auto-loading of Drupal CCK Nodes
Auto-loading of Drupal CCK NodesAuto-loading of Drupal CCK Nodes
Auto-loading of Drupal CCK Nodes
nihiliad
 

Tendances (20)

NativeBoost
NativeBoostNativeBoost
NativeBoost
 
Python Coroutines, Present and Future
Python Coroutines, Present and FuturePython Coroutines, Present and Future
Python Coroutines, Present and Future
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 
Sbaw091006
Sbaw091006Sbaw091006
Sbaw091006
 
ZeroMQ Is The Answer: DPC 11 Version
ZeroMQ Is The Answer: DPC 11 VersionZeroMQ Is The Answer: DPC 11 Version
ZeroMQ Is The Answer: DPC 11 Version
 
Créer une base NoSQL en 1 heure
Créer une base NoSQL en 1 heureCréer une base NoSQL en 1 heure
Créer une base NoSQL en 1 heure
 
C99[2]
C99[2]C99[2]
C99[2]
 
Groovy on the Shell
Groovy on the ShellGroovy on the Shell
Groovy on the Shell
 
ZeroMQ: Messaging Made Simple
ZeroMQ: Messaging Made SimpleZeroMQ: Messaging Made Simple
ZeroMQ: Messaging Made Simple
 
How to stand on the shoulders of giants
How to stand on the shoulders of giantsHow to stand on the shoulders of giants
How to stand on the shoulders of giants
 
Cより速いRubyプログラム
Cより速いRubyプログラムCより速いRubyプログラム
Cより速いRubyプログラム
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHP Oxford June Meetup 2...
 
node ffi
node ffinode ffi
node ffi
 
TRunner
TRunnerTRunner
TRunner
 
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPythonByterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
Byterun, a Python bytecode interpreter - Allison Kaptur at NYCPython
 
Don't do this
Don't do thisDon't do this
Don't do this
 
Diving into byte code optimization in python
Diving into byte code optimization in python Diving into byte code optimization in python
Diving into byte code optimization in python
 
The promise of asynchronous php
The promise of asynchronous phpThe promise of asynchronous php
The promise of asynchronous php
 
Auto-loading of Drupal CCK Nodes
Auto-loading of Drupal CCK NodesAuto-loading of Drupal CCK Nodes
Auto-loading of Drupal CCK Nodes
 
Create your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 VeronaCreate your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 Verona
 

En vedette

EGI TF 2013 / Cloud Interoperability Week – Hands-On Tutorial
EGI TF 2013 / Cloud Interoperability Week – Hands-On TutorialEGI TF 2013 / Cloud Interoperability Week – Hands-On Tutorial
EGI TF 2013 / Cloud Interoperability Week – Hands-On Tutorial
OpenNebula Project
 
Configuration management state of the art
Configuration management state of the artConfiguration management state of the art
Configuration management state of the art
Jean Parpaillon
 
OCCIware presentation at Cloud Expo Europe, March 11-12, London
OCCIware presentation at Cloud Expo Europe, March 11-12, LondonOCCIware presentation at Cloud Expo Europe, March 11-12, London
OCCIware presentation at Cloud Expo Europe, March 11-12, London
OCCIware
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware
 
OCCIware Presentation at Cloud Computing World Expo, April 1, 2015, Paris
OCCIware Presentation at Cloud Computing World Expo, April 1, 2015, ParisOCCIware Presentation at Cloud Computing World Expo, April 1, 2015, Paris
OCCIware Presentation at Cloud Computing World Expo, April 1, 2015, Paris
OCCIware
 

En vedette (12)

EGI TF 2013 / Cloud Interoperability Week – Hands-On Tutorial
EGI TF 2013 / Cloud Interoperability Week – Hands-On TutorialEGI TF 2013 / Cloud Interoperability Week – Hands-On Tutorial
EGI TF 2013 / Cloud Interoperability Week – Hands-On Tutorial
 
Cloud computing & logiciels libres JDLL 2009
Cloud computing & logiciels libres JDLL 2009Cloud computing & logiciels libres JDLL 2009
Cloud computing & logiciels libres JDLL 2009
 
Facing the Open Cloud Challenges: the OCCIware approach
Facing the Open Cloud Challenges: the OCCIware approachFacing the Open Cloud Challenges: the OCCIware approach
Facing the Open Cloud Challenges: the OCCIware approach
 
Configuration management state of the art
Configuration management state of the artConfiguration management state of the art
Configuration management state of the art
 
Open Cloud Computing Interface
Open Cloud Computing InterfaceOpen Cloud Computing Interface
Open Cloud Computing Interface
 
OCCIware
OCCIwareOCCIware
OCCIware
 
Cloud Computing Standards and Use Cases (Robert Grossman) 09-v8p
Cloud Computing Standards and Use Cases (Robert Grossman) 09-v8pCloud Computing Standards and Use Cases (Robert Grossman) 09-v8p
Cloud Computing Standards and Use Cases (Robert Grossman) 09-v8p
 
OCCIware presentation at Cloud Expo Europe, March 11-12, London
OCCIware presentation at Cloud Expo Europe, March 11-12, LondonOCCIware presentation at Cloud Expo Europe, March 11-12, London
OCCIware presentation at Cloud Expo Europe, March 11-12, London
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
OCCIware Presentation at Cloud Computing World Expo, April 1, 2015, Paris
OCCIware Presentation at Cloud Computing World Expo, April 1, 2015, ParisOCCIware Presentation at Cloud Computing World Expo, April 1, 2015, Paris
OCCIware Presentation at Cloud Computing World Expo, April 1, 2015, Paris
 
Scalability and fault tolerance
Scalability and fault toleranceScalability and fault tolerance
Scalability and fault tolerance
 
Introduction au Cloud Computing
Introduction au Cloud Computing Introduction au Cloud Computing
Introduction au Cloud Computing
 

Similaire à Ow2 webinar erocci

Webinar - Managing Files with Puppet
Webinar - Managing Files with PuppetWebinar - Managing Files with Puppet
Webinar - Managing Files with Puppet
OlinData
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
Iftekhar Eather
 
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
Oleg Zinchenko
 

Similaire à Ow2 webinar erocci (20)

C++ Core Guidelines
C++ Core GuidelinesC++ Core Guidelines
C++ Core Guidelines
 
CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015
 
Teaching Your WAF New Tricks
Teaching Your WAF New TricksTeaching Your WAF New Tricks
Teaching Your WAF New Tricks
 
Fatc
FatcFatc
Fatc
 
Code with style
Code with styleCode with style
Code with style
 
Introduction to puppet - Hands on Session at HPI Potsdam
Introduction to puppet - Hands on Session at HPI PotsdamIntroduction to puppet - Hands on Session at HPI Potsdam
Introduction to puppet - Hands on Session at HPI Potsdam
 
Code with Style - PyOhio
Code with Style - PyOhioCode with Style - PyOhio
Code with Style - PyOhio
 
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег ЗинченкоWebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег Зинченко
 
The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)
 
Webinar - Managing Files with Puppet
Webinar - Managing Files with PuppetWebinar - Managing Files with Puppet
Webinar - Managing Files with Puppet
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP LimogesPHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges
 
Advanced Python, Part 1
Advanced Python, Part 1Advanced Python, Part 1
Advanced Python, Part 1
 
Android | Busy Java Developers Guide to Android: Persistence | Ted Neward
Android | Busy Java Developers Guide to Android: Persistence | Ted NewardAndroid | Busy Java Developers Guide to Android: Persistence | Ted Neward
Android | Busy Java Developers Guide to Android: Persistence | Ted Neward
 
10 Laravel packages everyone should know
10 Laravel packages everyone should know10 Laravel packages everyone should know
10 Laravel packages everyone should know
 
Getting Started with Puppet by Chad Metcalf Wibi Data
Getting Started with Puppet by Chad Metcalf  Wibi DataGetting Started with Puppet by Chad Metcalf  Wibi Data
Getting Started with Puppet by Chad Metcalf Wibi Data
 
Tame your Infrastructure with Puppet
Tame your Infrastructure with PuppetTame your Infrastructure with Puppet
Tame your Infrastructure with Puppet
 
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
 
Questioning the status quo
Questioning the status quoQuestioning the status quo
Questioning the status quo
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Ow2 webinar erocci