SlideShare a Scribd company logo
1 of 19
Your systems. Working as one.




Data-centric Invocable Services



Workshop on Real-Time, Embedded and              Rick Warren
Enterprise-Scale Time-Critical Systems   rick.warren@rti.com
                                                   Rajive Joshi
April 2012; Paris                              rajive@rti.com
Data-Centricity by Example: Calendaring

Imperative Process:
1. Email: “Meet Monday at 10:00.”
2. Email: “Meeting moved to Tuesday.”
3. Email: “Here’s conference call info…”

4. You: “Where do I have to be? When?”
5. You: (sifting through email…)


                     © 2012 RTI            2
Data-Centricity by Example: Calendaring

Data-centric Process:
1. Calendar: (add meeting Monday at 10:00)
2. Calendar: (move meeting to Tuesday)
3. Calendar: (add dial-in info)

4. You: “Where do I have to be? When?”
5. You: (check calendar)


                   © 2012 RTI                3
Data-centric vs. Imperative Styles
• Imperative                                       Functions
                                                   coupled;
  – Tell someone to do something                 State implicit
  – Check whether they did it
• Data-centric                                     Functions
                                                  decoupled;
  Canonical    SQL      HTTP           DDS
                                                 State explicit
    Create    INSERT    POST           write
    Read      SELECT      GET          read
   Update     UPDATE      PUT          write
    Delete    DELETE    DELETE       dispose
   on_event   TRIGGER      —         on_data_
                                     available
                        © 2012 RTI                                4
Conflict?
• Data-centricity benefits system designers
  –   (Eventually) Consistent “truth”
  –   Scalability and elasticity, because of stateless logic
  –   Evolvability, because of functional decoupling
  –   Robustness to communication failures
• Programmers think imperatively
  try {
  doSomethingThatMayFail();
  doSomethingOnSuccess();
  } catch (FailureOccurred) {
  doSomethingElseOnFailure();
  }
                            © 2012 RTI                         5
Conflict?

  Are these models fundamentally
            in conflict?

                 No.




              © 2012 RTI           6
Reconciliation

      “Dude, instructions are just data.”
             — John Von Neumann, 1945


• Desires are also just data
• Objectives are also just data

Best practice: Don’t tell someone to do
something; assert your desired future state

                      © 2012 RTI              7
Reconciliation
Imperative View                Data-centric View
try {               structThingDesired{
doSomething();      string thingWanted;
doOnSuccess();      }
} catch (Failure) {
                    structThingHappened{
doOnFailure();
                    string thingWanted;
}
                               booleansuccess;
                               };

                               …

                  © 2012 RTI                       8
Reconciliation
Imperative View                Data-centric View
try {                          …
                               create(
doSomething();                    thingWanted = “something”)
                               on_event(
doOnSuccess();                    thingWanted == “something”
                                  &&
} catch (Failure) {               success == true) {
doOnFailure();                 update(
                                  thingWanted = “onSuccess”)
}                              }
                               on_event(
                                  thingWanted== “something”
                                  &&
                                  success == false) {
                               update(
                                  thingWanted = “onFailure”)
                               }
                  © 2012 RTI                             9
Reconciliation
Imperative View                      Data-centric View
   This way is easier                    This way is easier
 …to write the first time                  …to scale out
  …to understand top-                       …to extend
  down, sequentially                 …to maintain incrementally
                                      …to understand bottom-
                                              up, causally




                        © 2012 RTI                           10
Reconciliation
Imperative View                                 Data-centric View

Express application                                       Express interop.
code this way                   GOOD                             this way


     This is what we mean by
 “data-centric invocable service”:
 • Request looks like explicit “call” (RMI
   or similar)
 • Interoperability on the basis of
   data, not functional implementation
 • Caller and Callee may use different
   programming models
                                   © 2012 RTI                                11
Reconciliation
Imperative View                     Data-centric View

Express application                             Express interop.
code this way          GOOD                            this way


Make app programmers                            Express interop.
wire that up           HARD                            this way


Express application                       Express interop. based
code this way          BAD                    on one app’s code


                       © 2012 RTI                                  12
Process
Architect            Programmer            Platform
  1. Define data       4. Generate           6. Govern data
     model                code from             flows based
  2. Define and           architect-            on architect-
     group data           defined               defined
     streams using        contract(s)
                          (OPTIONAL)            contract(s)
     those types
  3. Define            5. Produce and
     deployment of        respond to
     producers and        data according
     consumers of         to app algo’s
     those streams




                        © 2012 RTI                              13
Process Example: WSDL
      Architect                                    Programmer

                                             class MyService {
                                                                     Standard WSDL
                                               Result1 doThis(        bindings exist
                                                 Args1) {                  for
                                                 …                   SOAP, REST, and
                                               }                         SMTP.
                                                   Result2 doThat(     Additional
                                                     Args2) {
                                                                     bindings could
                                                     …
                                                   }                 be defined for
                                                   …                  DDS or other
                                             }                       technologies.
Figure courtesy of ICONIX,
                                                      © 2012 RTI                   14
http://www.iconixsw.com/Articles/SOARoadmap.html
Hypothetical DDS IDL Example

structFoo {                  local interface Svc {
  @Key long id;                @InTopic("FooTpc")
long x;                        @OutTopic("BarTpc")
double y;                      Bar doFoo(in Foo f);
};                           };

structBar {
  @Key string who;                Control binding to topics for
                                   easy subscription, filtering,
short baz;                              and QoS control
};

                     © 2012 RTI                                    15
Hypothetical DDS IDL Example

structFoo {                  local interface Svc {
                               @InTopic(
  @Key long id;                   value="T1”,
                                  key="42")
long x;                        @OutTopic(
double y;                         value="T2",
                                  key="me")
};                             Bar doFoo1(in Foo f);

                             @InTopic(
structBar {                       value="T1”,
                                  key="29")
  @Key string who;             @OutTopic(
short baz;                        value="T2",
                                  key="you")
};                             Bar doFoo2(in Foo f);
                             };
                     © 2012 RTI                        16
Hypothetical DDS IDL Counter-Example

local interface Svc {              union Svc_Type
                                   switch (WhichOpEnum){
Foo doFoo(
                                   case Svc_doFoo_CALL:
    out string x,                  Svc_doFoo_InStruct
    inout long y,                      sdfis;
    in double z); Reverse          case Svc_doFoo_RETURN:
  Bar doBar(      Engineer         Svc_doFoo_OutStruct
                                       sdfos;
    in long a,                     case Svc_doBar_CALL:
    out float b,                   Svc_doBar_InStruct
    inout short c);                    sdbis;
};                                 case Svc_doBar_RETURN:
                                   Svc_doBar_OutStruct
                                       sdbos;
                                   };
                      © 2012 RTI                       17
Why is This Gross?
         Insane data type
   to make a DBA cringe in horror            union Svc_Type
                                             switch (WhichOpEnum){
  Segregates data model: human-
                                             case Svc_doFoo_CALL:
  written vs. machine-generated
                                             Svc_doFoo_InStruct
                                                 sdfis;
 (Someone’s) API constraints baked
                                             case Svc_doFoo_RETURN:
    into shared interop. interface
                                             Svc_doFoo_OutStruct
      Heavily influenced by                      sdfos;
     scalability assumptions                 case Svc_doBar_CALL:
  …which may or may not be valid             Svc_doBar_InStruct
Over-reliance on complex filtering on            sdbis;
           subscriber side                   case Svc_doBar_RETURN:
                                             Svc_doBar_OutStruct
Fine-grained QoS governance almost               sdbos;
             impossible                      };
                                © 2012 RTI                       18
Summary
• Data-centricity remains an              • These two sets of benefits
  architectural best practice               are not exclusive
   – Many of its benefits accrue             – Design system interop.
     at the systems level                      interface
• App programmers may be                     – Design programming
  more comfortable with                        interface
  higher-level API                           – Bind them together
                                          • Proven examples exist:
                                             – Architecture
                                             – Workflow
                                             – Data and service
                                               description
                                             – Programming model
                             © 2012 RTI                                  19

More Related Content

Viewers also liked

From the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMSFrom the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMSRick Warren
 
Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)Rick Warren
 
Web-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised SubmissionWeb-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised SubmissionRick Warren
 
Engineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable SystemsEngineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable SystemsRick Warren
 
DDS in a Nutshell
DDS in a NutshellDDS in a Nutshell
DDS in a NutshellRick Warren
 
Introduction to Robotic Technology Components (RTC), Robotics DTF
Introduction to Robotic Technology Components (RTC), Robotics DTFIntroduction to Robotic Technology Components (RTC), Robotics DTF
Introduction to Robotic Technology Components (RTC), Robotics DTFRick Warren
 

Viewers also liked (6)

From the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMSFrom the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMS
 
Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)Extensible and Dynamic Topic Types For DDS (out of date)
Extensible and Dynamic Topic Types For DDS (out of date)
 
Web-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised SubmissionWeb-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised Submission
 
Engineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable SystemsEngineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable Systems
 
DDS in a Nutshell
DDS in a NutshellDDS in a Nutshell
DDS in a Nutshell
 
Introduction to Robotic Technology Components (RTC), Robotics DTF
Introduction to Robotic Technology Components (RTC), Robotics DTFIntroduction to Robotic Technology Components (RTC), Robotics DTF
Introduction to Robotic Technology Components (RTC), Robotics DTF
 

Similar to Data-centric Invocable Services

Dao pattern
Dao patternDao pattern
Dao patternciriako
 
CQRS : Introduction
CQRS : IntroductionCQRS : Introduction
CQRS : IntroductionTopu Newaj
 
Dependency injection Drupal Camp Wrocław 2014
Dependency injection Drupal Camp Wrocław 2014Dependency injection Drupal Camp Wrocław 2014
Dependency injection Drupal Camp Wrocław 2014Greg Szczotka
 
Utilized Code Gen To Save Our Efforts In Sap Integration
Utilized Code Gen To Save Our Efforts In Sap IntegrationUtilized Code Gen To Save Our Efforts In Sap Integration
Utilized Code Gen To Save Our Efforts In Sap IntegrationGuo Albert
 
Clean code bites
Clean code bitesClean code bites
Clean code bitesRoy Nitert
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsAngelo Corsaro
 
Experience This... Counting an Apple iPhone Application
Experience This... Counting an Apple iPhone ApplicationExperience This... Counting an Apple iPhone Application
Experience This... Counting an Apple iPhone ApplicationDCG Software Value
 
ADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and SynchingADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and SynchingSteven Davelaar
 
Enforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureEnforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureFlorin Coros
 
Interoperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric MiddlewareInteroperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric MiddlewareGerardo Pardo-Castellote
 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)Nati Shalom
 
Reactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and RxReactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and RxSumant Tambe
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstEnea Gabriel
 
“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools
“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools
“Lights Out”Configuration using Tivoli Netcool AutoDiscovery ToolsAntonio Rolle
 

Similar to Data-centric Invocable Services (20)

Dao pattern
Dao patternDao pattern
Dao pattern
 
Business Models for Interoperability
Business Models for InteroperabilityBusiness Models for Interoperability
Business Models for Interoperability
 
The Promise of Interoperability
The Promise of InteroperabilityThe Promise of Interoperability
The Promise of Interoperability
 
CQRS : Introduction
CQRS : IntroductionCQRS : Introduction
CQRS : Introduction
 
Dependency injection Drupal Camp Wrocław 2014
Dependency injection Drupal Camp Wrocław 2014Dependency injection Drupal Camp Wrocław 2014
Dependency injection Drupal Camp Wrocław 2014
 
Utilized Code Gen To Save Our Efforts In Sap Integration
Utilized Code Gen To Save Our Efforts In Sap IntegrationUtilized Code Gen To Save Our Efforts In Sap Integration
Utilized Code Gen To Save Our Efforts In Sap Integration
 
Clean code bites
Clean code bitesClean code bites
Clean code bites
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
Experience This... Counting an Apple iPhone Application
Experience This... Counting an Apple iPhone ApplicationExperience This... Counting an Apple iPhone Application
Experience This... Counting an Apple iPhone Application
 
Dancing with the Elephant
Dancing with the ElephantDancing with the Elephant
Dancing with the Elephant
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
ADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and SynchingADF Mobile: Implementing Data Caching and Synching
ADF Mobile: Implementing Data Caching and Synching
 
Enforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureEnforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean Architecture
 
Interoperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric MiddlewareInteroperability for Intelligence Applications using Data-Centric Middleware
Interoperability for Intelligence Applications using Data-Centric Middleware
 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)
 
Reactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and RxReactive Stream Processing Using DDS and Rx
Reactive Stream Processing Using DDS and Rx
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Data binding
Data bindingData binding
Data binding
 
“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools
“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools
“Lights Out”Configuration using Tivoli Netcool AutoDiscovery Tools
 

More from Rick Warren

Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaRick Warren
 
Letters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to ProductionLetters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to ProductionRick Warren
 
Patterns of Data Distribution
Patterns of Data DistributionPatterns of Data Distribution
Patterns of Data DistributionRick Warren
 
Scaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and DevicesScaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and DevicesRick Warren
 
Java 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final SubmissionJava 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final SubmissionRick Warren
 
Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Rick Warren
 
C++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised SubmissionC++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised SubmissionRick Warren
 
Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)Rick Warren
 
Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Rick Warren
 
Mapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelMapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelRick Warren
 
Large-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and FinanceLarge-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and FinanceRick Warren
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureRick Warren
 
Extensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSExtensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSRick Warren
 
Easing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSEasing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSRick Warren
 
Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)Rick Warren
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDSRick Warren
 
Extensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSExtensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSRick Warren
 
Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)Rick Warren
 
Robotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRobotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRick Warren
 

More from Rick Warren (20)

Real-World Git
Real-World GitReal-World Git
Real-World Git
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJava
 
Letters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to ProductionLetters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to Production
 
Patterns of Data Distribution
Patterns of Data DistributionPatterns of Data Distribution
Patterns of Data Distribution
 
Scaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and DevicesScaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and Devices
 
Java 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final SubmissionJava 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final Submission
 
Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)
 
C++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised SubmissionC++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised Submission
 
Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)
 
Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1
 
Mapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelMapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric Model
 
Large-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and FinanceLarge-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and Finance
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System Architecture
 
Extensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSExtensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDS
 
Easing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSEasing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDS
 
Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDS
 
Extensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSExtensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDS
 
Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)
 
Robotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRobotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) Specification
 

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 

Data-centric Invocable Services

  • 1. Your systems. Working as one. Data-centric Invocable Services Workshop on Real-Time, Embedded and Rick Warren Enterprise-Scale Time-Critical Systems rick.warren@rti.com Rajive Joshi April 2012; Paris rajive@rti.com
  • 2. Data-Centricity by Example: Calendaring Imperative Process: 1. Email: “Meet Monday at 10:00.” 2. Email: “Meeting moved to Tuesday.” 3. Email: “Here’s conference call info…” 4. You: “Where do I have to be? When?” 5. You: (sifting through email…) © 2012 RTI 2
  • 3. Data-Centricity by Example: Calendaring Data-centric Process: 1. Calendar: (add meeting Monday at 10:00) 2. Calendar: (move meeting to Tuesday) 3. Calendar: (add dial-in info) 4. You: “Where do I have to be? When?” 5. You: (check calendar) © 2012 RTI 3
  • 4. Data-centric vs. Imperative Styles • Imperative Functions coupled; – Tell someone to do something State implicit – Check whether they did it • Data-centric Functions decoupled; Canonical SQL HTTP DDS State explicit Create INSERT POST write Read SELECT GET read Update UPDATE PUT write Delete DELETE DELETE dispose on_event TRIGGER — on_data_ available © 2012 RTI 4
  • 5. Conflict? • Data-centricity benefits system designers – (Eventually) Consistent “truth” – Scalability and elasticity, because of stateless logic – Evolvability, because of functional decoupling – Robustness to communication failures • Programmers think imperatively try { doSomethingThatMayFail(); doSomethingOnSuccess(); } catch (FailureOccurred) { doSomethingElseOnFailure(); } © 2012 RTI 5
  • 6. Conflict? Are these models fundamentally in conflict? No. © 2012 RTI 6
  • 7. Reconciliation “Dude, instructions are just data.” — John Von Neumann, 1945 • Desires are also just data • Objectives are also just data Best practice: Don’t tell someone to do something; assert your desired future state © 2012 RTI 7
  • 8. Reconciliation Imperative View Data-centric View try { structThingDesired{ doSomething(); string thingWanted; doOnSuccess(); } } catch (Failure) { structThingHappened{ doOnFailure(); string thingWanted; } booleansuccess; }; … © 2012 RTI 8
  • 9. Reconciliation Imperative View Data-centric View try { … create( doSomething(); thingWanted = “something”) on_event( doOnSuccess(); thingWanted == “something” && } catch (Failure) { success == true) { doOnFailure(); update( thingWanted = “onSuccess”) } } on_event( thingWanted== “something” && success == false) { update( thingWanted = “onFailure”) } © 2012 RTI 9
  • 10. Reconciliation Imperative View Data-centric View This way is easier This way is easier …to write the first time …to scale out …to understand top- …to extend down, sequentially …to maintain incrementally …to understand bottom- up, causally © 2012 RTI 10
  • 11. Reconciliation Imperative View Data-centric View Express application Express interop. code this way GOOD this way This is what we mean by “data-centric invocable service”: • Request looks like explicit “call” (RMI or similar) • Interoperability on the basis of data, not functional implementation • Caller and Callee may use different programming models © 2012 RTI 11
  • 12. Reconciliation Imperative View Data-centric View Express application Express interop. code this way GOOD this way Make app programmers Express interop. wire that up HARD this way Express application Express interop. based code this way BAD on one app’s code © 2012 RTI 12
  • 13. Process Architect Programmer Platform 1. Define data 4. Generate 6. Govern data model code from flows based 2. Define and architect- on architect- group data defined defined streams using contract(s) (OPTIONAL) contract(s) those types 3. Define 5. Produce and deployment of respond to producers and data according consumers of to app algo’s those streams © 2012 RTI 13
  • 14. Process Example: WSDL Architect Programmer class MyService { Standard WSDL Result1 doThis( bindings exist Args1) { for … SOAP, REST, and } SMTP. Result2 doThat( Additional Args2) { bindings could … } be defined for … DDS or other } technologies. Figure courtesy of ICONIX, © 2012 RTI 14 http://www.iconixsw.com/Articles/SOARoadmap.html
  • 15. Hypothetical DDS IDL Example structFoo { local interface Svc { @Key long id; @InTopic("FooTpc") long x; @OutTopic("BarTpc") double y; Bar doFoo(in Foo f); }; }; structBar { @Key string who; Control binding to topics for easy subscription, filtering, short baz; and QoS control }; © 2012 RTI 15
  • 16. Hypothetical DDS IDL Example structFoo { local interface Svc { @InTopic( @Key long id; value="T1”, key="42") long x; @OutTopic( double y; value="T2", key="me") }; Bar doFoo1(in Foo f); @InTopic( structBar { value="T1”, key="29") @Key string who; @OutTopic( short baz; value="T2", key="you") }; Bar doFoo2(in Foo f); }; © 2012 RTI 16
  • 17. Hypothetical DDS IDL Counter-Example local interface Svc { union Svc_Type switch (WhichOpEnum){ Foo doFoo( case Svc_doFoo_CALL: out string x, Svc_doFoo_InStruct inout long y, sdfis; in double z); Reverse case Svc_doFoo_RETURN: Bar doBar( Engineer Svc_doFoo_OutStruct sdfos; in long a, case Svc_doBar_CALL: out float b, Svc_doBar_InStruct inout short c); sdbis; }; case Svc_doBar_RETURN: Svc_doBar_OutStruct sdbos; }; © 2012 RTI 17
  • 18. Why is This Gross? Insane data type to make a DBA cringe in horror union Svc_Type switch (WhichOpEnum){ Segregates data model: human- case Svc_doFoo_CALL: written vs. machine-generated Svc_doFoo_InStruct sdfis; (Someone’s) API constraints baked case Svc_doFoo_RETURN: into shared interop. interface Svc_doFoo_OutStruct Heavily influenced by sdfos; scalability assumptions case Svc_doBar_CALL: …which may or may not be valid Svc_doBar_InStruct Over-reliance on complex filtering on sdbis; subscriber side case Svc_doBar_RETURN: Svc_doBar_OutStruct Fine-grained QoS governance almost sdbos; impossible }; © 2012 RTI 18
  • 19. Summary • Data-centricity remains an • These two sets of benefits architectural best practice are not exclusive – Many of its benefits accrue – Design system interop. at the systems level interface • App programmers may be – Design programming more comfortable with interface higher-level API – Bind them together • Proven examples exist: – Architecture – Workflow – Data and service description – Programming model © 2012 RTI 19

Editor's Notes

  1. Pseudo-code!
  2. Since many here are interested in DDS and use IDL…
  3. Since many here are interested in DDS and use IDL…