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

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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 Processorsdebabhi2
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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...apidays
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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 DevelopmentsTrustArc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

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…