SlideShare a Scribd company logo
1 of 29
Download to read offline
Voyage
                         The adventure of persisting object-models




Wednesday, June 27, 12
A glimpse of Seaside

                   • Stateful
                   • Component model
                   • Maybe aged, but still the best :)


Wednesday, June 27, 12
Continuations
             I still prefer:




Wednesday, June 27, 12
Continuations
            Over:




Wednesday, June 27, 12
A glimpse of Pier

                   • A CMS
                   • Component based
                   • You can embed almost anything
                   • You can decorate almost anything

Wednesday, June 27, 12
A perfect world




Wednesday, June 27, 12
A perfect world

                   • Objects collaborate inside your image,
                         creating a perfect choreography of
                         interacting elements...




Wednesday, June 27, 12
A perfect world

                   • Objects collaborate inside your image,
                         creating a perfect choreography of
                         interacting elements...
                   • INSIDE your image


Wednesday, June 27, 12
Why to persist?

                   • Space
                   • Reliability
                   • Scalability


Wednesday, June 27, 12
Persisting Pier
                   • A complex* object model
                   • Looking for
                    • Scalability
                    • Update capabilities
                    • Backup
            *And I mean really complex: take a look to all those commands,
            decorations and dictionaries :)

Wednesday, June 27, 12
Show time!



Wednesday, June 27, 12
Voyage


                   • A “non-abstract” persistence layer
                   • An “implementation pattern” which
                         provides some services as well




Wednesday, June 27, 12
A simple layered approach
                                      Voyage




                         Memory       Mongo                ...




                                               Magritte-
                              MongoTalk
                                                Mongo




Wednesday, June 27, 12
Use cases
              Singleton mode:



              Regular mode:




Wednesday, June 27, 12
A simple API
                   • #save:
                   • #remove:
                   • #removeAll:
                   • #selectAll:
                   • #selectMany:where:
                   • #selectOne:where:
Wednesday, June 27, 12
A simple API
                   • #save:
                                                 Where
                                            clauses are what
                                          the back-end needs,

                   • #remove:                 no something
                                              intermediate

                   • #removeAll:
                   • #selectAll:
                   • #selectMany:where:
                   • #selectOne:where:
Wednesday, June 27, 12
A simple API
                   • #save:
                                                 Where
                                            clauses are what
                                          the back-end needs,

                   • #remove:                 no something
                                              intermediate

                   • #removeAll:
                   • #selectAll:                            Memory:
                                                    [ :each | each key = 42 ]


                   • #selectMany:where:
                   • #selectOne:where:
Wednesday, June 27, 12
A simple API
                   • #save:
                                                 Where
                                            clauses are what
                                          the back-end needs,

                   • #remove:                 no something
                                              intermediate

                   • #removeAll:
                   • #selectAll:                            Memory:
                                                    [ :each | each key = 42 ]


                   • #selectMany:where:
                   • #selectOne:where:                       Mongo:
                                                    { #key->42 } asDictionary




Wednesday, June 27, 12
What Voyage provides
                   • Common API
                   • Centralized management
                    - Preserve identity (caching live objects)
                    - Error handling
                    - Reconnection
                    - Pluggable connection pool
Wednesday, June 27, 12
Voyage-Memory
                   • Is just a centralized dictionary of
                         collections.
                   • Used for prototyping and early stages of
                         development (no need to choose a
                         persistent repository at first instance)
                   • Works for “stateless” applications which
                         need readonly data (I made one once, yes)


Wednesday, June 27, 12
Voyage-Mongo

                   • Uses MongoTalk
                   • Adds
                    - Object cache
                    - Error handling/reconnection
                    - Transparent mapping (magritte guided)

Wednesday, June 27, 12
Magritte-Mongo
                   •     “Object-Document mapper”
                   •     Magritte base implementation is intended to UI
                         and there is some difference with mongo needs.
                         -   Explicit (static) declaration vs. dynamic type
                             inference. (i.e. Pier persistence is nearly
                             impossible with an explicit declaration
                             approach)
                   •     I changed it a lot since Norbert saw him (more
                         and more inference... and still needs more)


Wednesday, June 27, 12
Serializer




Wednesday, June 27, 12
Serializer




Wednesday, June 27, 12
Serializer




Wednesday, June 27, 12
Serializer

                   • Uses become, so yes, it is slow
                    • So far, no need more speed.
                   • Other possible approaches: Two phases
                         (mark and persist)




Wednesday, June 27, 12
Status


                   ✓First version working (make it work)
                   • Need cleanup (make it right)
                   • Need some optimization (make it fast)


Wednesday, June 27, 12
Future
                   • Finish it (collaborators would be fine :)
                   • Add/Update some backends (Just if/when
                         needed)
                         -   Fuel
                         -   Phriak
                         -   Glorp?


Wednesday, June 27, 12
Thanks!

                             Voyage and PierVoyage are available at:
                         http://smalltalkhub.com/#!/~estebanlm/Voyage

                            Already a tester who is blogging about!
                               http://articles.tulipemoutarde.be/




Wednesday, June 27, 12

More Related Content

Viewers also liked

Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?倉博 胡
 
Masin De Epoca La Monaco Pt Blog
Masin De Epoca La Monaco  Pt BlogMasin De Epoca La Monaco  Pt Blog
Masin De Epoca La Monaco Pt Blogserbionel
 
Compliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment SolutionCompliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment Solutionairsch
 
Quadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngelsQuadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngelsjoanmolar
 
110322 Social media för företag
110322 Social media för företag110322 Social media för företag
110322 Social media för företagPetter Kolseth
 
Impact eats sustainability for lunch!
Impact eats sustainability for lunch!Impact eats sustainability for lunch!
Impact eats sustainability for lunch!Europeana
 
Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08Mercè Puig
 
How to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.orgHow to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.orgPeter Thayer
 
2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiences2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiencesEuropeana
 
MeeboMe Widget Instructions
MeeboMe Widget InstructionsMeeboMe Widget Instructions
MeeboMe Widget InstructionsPeter Thayer
 
Unlocking value: museums and the web 09
Unlocking value: museums and the web 09Unlocking value: museums and the web 09
Unlocking value: museums and the web 09Europeana
 
2012 oct 22 shaping access presentation_alt
2012 oct 22  shaping access presentation_alt2012 oct 22  shaping access presentation_alt
2012 oct 22 shaping access presentation_altEuropeana
 
Prehistoria 2
Prehistoria 2Prehistoria 2
Prehistoria 2joanmolar
 
Europeana and the Commons
Europeana and the CommonsEuropeana and the Commons
Europeana and the CommonsEuropeana
 
Archives in the Hadron Collider
Archives in the Hadron ColliderArchives in the Hadron Collider
Archives in the Hadron ColliderEuropeana
 
Vår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärldVår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärldPetter Kolseth
 

Viewers also liked (20)

Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?Meet Charlie - What is Enterprise 2.0?
Meet Charlie - What is Enterprise 2.0?
 
Vida jaufre
Vida jaufreVida jaufre
Vida jaufre
 
Connect2 Books2
Connect2 Books2Connect2 Books2
Connect2 Books2
 
Endometrioziz
EndometriozizEndometrioziz
Endometrioziz
 
Masin De Epoca La Monaco Pt Blog
Masin De Epoca La Monaco  Pt BlogMasin De Epoca La Monaco  Pt Blog
Masin De Epoca La Monaco Pt Blog
 
Compliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment SolutionCompliance In A Box Documentum Deployment Solution
Compliance In A Box Documentum Deployment Solution
 
Reef - ESUG2011
Reef  - ESUG2011Reef  - ESUG2011
Reef - ESUG2011
 
Quadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngelsQuadern d'aram (1997) de maria àngels
Quadern d'aram (1997) de maria àngels
 
110322 Social media för företag
110322 Social media för företag110322 Social media för företag
110322 Social media för företag
 
Impact eats sustainability for lunch!
Impact eats sustainability for lunch!Impact eats sustainability for lunch!
Impact eats sustainability for lunch!
 
Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08Revista Segon Trimestre 07 08
Revista Segon Trimestre 07 08
 
How to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.orgHow to incorporate RSS feeds into your web site using feed2js.org
How to incorporate RSS feeds into your web site using feed2js.org
 
2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiences2015 july 9 europeana labs market & audiences
2015 july 9 europeana labs market & audiences
 
MeeboMe Widget Instructions
MeeboMe Widget InstructionsMeeboMe Widget Instructions
MeeboMe Widget Instructions
 
Unlocking value: museums and the web 09
Unlocking value: museums and the web 09Unlocking value: museums and the web 09
Unlocking value: museums and the web 09
 
2012 oct 22 shaping access presentation_alt
2012 oct 22  shaping access presentation_alt2012 oct 22  shaping access presentation_alt
2012 oct 22 shaping access presentation_alt
 
Prehistoria 2
Prehistoria 2Prehistoria 2
Prehistoria 2
 
Europeana and the Commons
Europeana and the CommonsEuropeana and the Commons
Europeana and the Commons
 
Archives in the Hadron Collider
Archives in the Hadron ColliderArchives in the Hadron Collider
Archives in the Hadron Collider
 
Vår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärldVår sköna nya (digitala) omvärld
Vår sköna nya (digitala) omvärld
 

Similar to Voyage - PharoConf 2012

Thucydides - a brief review
Thucydides - a brief reviewThucydides - a brief review
Thucydides - a brief reviewCristian COȚOI
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1Troy Miles
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)Martijn Verburg
 
Node.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago MeetupNode.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago Meetuphugs
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011Charles Nutter
 
Django Bootstrapping with Ease
Django Bootstrapping with EaseDjango Bootstrapping with Ease
Django Bootstrapping with EaseConcentric Sky
 
Getting started with MySQL
Getting started with MySQLGetting started with MySQL
Getting started with MySQLJohn Ashmead
 
Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Benoit Perroud
 

Similar to Voyage - PharoConf 2012 (12)

Rubyconf2012 recap
Rubyconf2012 recapRubyconf2012 recap
Rubyconf2012 recap
 
Thucydides - a brief review
Thucydides - a brief reviewThucydides - a brief review
Thucydides - a brief review
 
Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1
 
Scala profiling
Scala profilingScala profiling
Scala profiling
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)Introduction to Java 7 (Devoxx Nov/2011)
Introduction to Java 7 (Devoxx Nov/2011)
 
Node.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago MeetupNode.js - JavaScript Chicago Meetup
Node.js - JavaScript Chicago Meetup
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011
 
Django Bootstrapping with Ease
Django Bootstrapping with EaseDjango Bootstrapping with Ease
Django Bootstrapping with Ease
 
Team work
Team workTeam work
Team work
 
Getting started with MySQL
Getting started with MySQLGetting started with MySQL
Getting started with MySQL
 
Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08Direct memory jugl-2012.03.08
Direct memory jugl-2012.03.08
 

More from Esteban Lorenzano

Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.Esteban Lorenzano
 
Tide - The missing web framework
Tide - The missing web frameworkTide - The missing web framework
Tide - The missing web frameworkEsteban Lorenzano
 
Smalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhoneSmalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhoneEsteban Lorenzano
 
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...Esteban Lorenzano
 
Seaside, El framework hereje
Seaside, El framework herejeSeaside, El framework hereje
Seaside, El framework herejeEsteban Lorenzano
 

More from Esteban Lorenzano (8)

Spec 2.0
Spec 2.0Spec 2.0
Spec 2.0
 
Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.Pharo: A roadmap to solid evolution.
Pharo: A roadmap to solid evolution.
 
Voyage by example
Voyage by exampleVoyage by example
Voyage by example
 
Tide - The missing web framework
Tide - The missing web frameworkTide - The missing web framework
Tide - The missing web framework
 
Reef - ESUG 2010
Reef - ESUG 2010Reef - ESUG 2010
Reef - ESUG 2010
 
Smalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhoneSmalltalk in the pocket - Building applications for the iPhone
Smalltalk in the pocket - Building applications for the iPhone
 
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
Cruzando Fronteras - Respuestas revolucionarias a la crisis de las web-applic...
 
Seaside, El framework hereje
Seaside, El framework herejeSeaside, El framework hereje
Seaside, El framework hereje
 

Recently uploaded

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
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 TerraformAndrey Devyatkin
 
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 FMESafe Software
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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.pdfsudhanshuwaghmare1
 
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 Takeoffsammart93
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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, ...apidays
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
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
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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, ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Voyage - PharoConf 2012

  • 1. Voyage The adventure of persisting object-models Wednesday, June 27, 12
  • 2. A glimpse of Seaside • Stateful • Component model • Maybe aged, but still the best :) Wednesday, June 27, 12
  • 3. Continuations I still prefer: Wednesday, June 27, 12
  • 4. Continuations Over: Wednesday, June 27, 12
  • 5. A glimpse of Pier • A CMS • Component based • You can embed almost anything • You can decorate almost anything Wednesday, June 27, 12
  • 7. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... Wednesday, June 27, 12
  • 8. A perfect world • Objects collaborate inside your image, creating a perfect choreography of interacting elements... • INSIDE your image Wednesday, June 27, 12
  • 9. Why to persist? • Space • Reliability • Scalability Wednesday, June 27, 12
  • 10. Persisting Pier • A complex* object model • Looking for • Scalability • Update capabilities • Backup *And I mean really complex: take a look to all those commands, decorations and dictionaries :) Wednesday, June 27, 12
  • 12. Voyage • A “non-abstract” persistence layer • An “implementation pattern” which provides some services as well Wednesday, June 27, 12
  • 13. A simple layered approach Voyage Memory Mongo ... Magritte- MongoTalk Mongo Wednesday, June 27, 12
  • 14. Use cases Singleton mode: Regular mode: Wednesday, June 27, 12
  • 15. A simple API • #save: • #remove: • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where: Wednesday, June 27, 12
  • 16. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: • #selectMany:where: • #selectOne:where: Wednesday, June 27, 12
  • 17. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: Memory: [ :each | each key = 42 ] • #selectMany:where: • #selectOne:where: Wednesday, June 27, 12
  • 18. A simple API • #save: Where clauses are what the back-end needs, • #remove: no something intermediate • #removeAll: • #selectAll: Memory: [ :each | each key = 42 ] • #selectMany:where: • #selectOne:where: Mongo: { #key->42 } asDictionary Wednesday, June 27, 12
  • 19. What Voyage provides • Common API • Centralized management - Preserve identity (caching live objects) - Error handling - Reconnection - Pluggable connection pool Wednesday, June 27, 12
  • 20. Voyage-Memory • Is just a centralized dictionary of collections. • Used for prototyping and early stages of development (no need to choose a persistent repository at first instance) • Works for “stateless” applications which need readonly data (I made one once, yes) Wednesday, June 27, 12
  • 21. Voyage-Mongo • Uses MongoTalk • Adds - Object cache - Error handling/reconnection - Transparent mapping (magritte guided) Wednesday, June 27, 12
  • 22. Magritte-Mongo • “Object-Document mapper” • Magritte base implementation is intended to UI and there is some difference with mongo needs. - Explicit (static) declaration vs. dynamic type inference. (i.e. Pier persistence is nearly impossible with an explicit declaration approach) • I changed it a lot since Norbert saw him (more and more inference... and still needs more) Wednesday, June 27, 12
  • 26. Serializer • Uses become, so yes, it is slow • So far, no need more speed. • Other possible approaches: Two phases (mark and persist) Wednesday, June 27, 12
  • 27. Status ✓First version working (make it work) • Need cleanup (make it right) • Need some optimization (make it fast) Wednesday, June 27, 12
  • 28. Future • Finish it (collaborators would be fine :) • Add/Update some backends (Just if/when needed) - Fuel - Phriak - Glorp? Wednesday, June 27, 12
  • 29. Thanks! Voyage and PierVoyage are available at: http://smalltalkhub.com/#!/~estebanlm/Voyage Already a tester who is blogging about! http://articles.tulipemoutarde.be/ Wednesday, June 27, 12