Engineering Interoperable and
                    Reliable Systems
                    Contrasting DDS, JMS, and AMQP


The Global Leader   Rick Warren                      rick.warren@rti.com
in DDS              Director of Technology Solutions
Introductions


      Rick Warren                              rick.warren@rti.com
      !  Director of Technology Solutions
                 –  Aligning product strategy with customer needs
                 –  Coordinating existing product, accelerated product,
                    professional services
      !  OMG principal
                 –  Participated DDS revision task force
                 –  Authored or co-authored Extensible and Dynamic Types
                    (DDS-XTypes), C++ PSM, Java PSM, and other specs
                 –  Chaired several specification finalization task forces
      !  Former Principal Engineer
                 –  With RTI nearly 10 years
                 –  Experience in R&D and Services

© 2011 Real-Time Innovations, Inc.                                           2
Most Important Points in this Presentation

     Themes: Interoperability,
             Reliability
     !  Flow first from architecture                              Agenda
                –  What is the information you’re                 1.  Architecture
                   modeling?
                –  How does it change over time?                     –  Levels of
                                                                        interoperability
                –  How to address dynamic                            –  Levels of
                   systems?                                             reliability
                –  How to address system                             –  Data-centricity
                   evolution, integration?
     !  Pick the right tool for the job                           2.  Technology
                –  Different technologies provide
                                                                     Implications
                          •  Different degrees of architectural      –  DDS
                             support                                 –  JMS
                          •  Different levels of portability,        –  AMQP
                             interoperability
                –  Biggest mistake: “It’s all just
                   ‘messaging’.”
© 2011 Real-Time Innovations, Inc.                                                         3
(Technology Refresher)

  !  Java Message Service (JMS)
      –  Messaging at syntactic level:
         no assumed semantics
      –  Portable API for messaging
         in Java                                !  Data Distribution Service (DDS)
      –  Specification from Java                    –  Application of messaging to
         Community Process (JCP)                       distributed state model
                                                    –  Portable API for data distribution
  !  Advanced Message Queuing
                                                       in multiple languages (DDS)
           Protocol (AMQP)
                                                    –  Interoperable protocol for data
             –  Messaging at syntactic level:          distribution (DDS-RTPS)
                no assumed semantics
                                                    –  Specifications from Object
             –  Interoperable protocol for             Management Group (OMG)
                messaging
             –  Specification from AMQP
                Working Group, industry
                consortium

© 2011 Real-Time Innovations, Inc.                                                          4
Levels of Interoperability and Reliability



                                     Interpretation of
                Semantic                messages         e.g. DDS
   Cumulative




                                     Communication       e.g. JMS,
                Syntactic             fragments—
                                      “messages”          AMQP



                Technical            Bits and bytes      e.g. TCP

© 2011 Real-Time Innovations, Inc.                                   5
Levels of Interoperability and Reliability

Interoperability Means:

               Data Level            Agree on what information
                      Semantic        refers to, how it’s related

                   Message            Distinguish one piece of
                    Level            information from another
                      Syntactic

               Byte Level            Exchange raw information,
                      Technical        regardless of structure
© 2011 Real-Time Innovations, Inc.                                  6
Levels of Interoperability and Reliability

Reliability Means:
                                      Order across      “Summarize”
               Data Level               streams,      data changes for
                                       eliminating    slow / late-joining
                      Semantic         duplicates        consumers


                   Message            Route across
                                                       Store for later
                    Level               multiple
                                      connections
                                                          delivery
                      Syntactic

                                     Repair dropped
               Byte Level              bytes over
                                         reliable
                      Technical        connection

© 2011 Real-Time Innovations, Inc.                                          7
Levels of Interoperability and Reliability



               Data Level             We call these technologies
                      Semantic             “data-centric.”

                   Message            We call these technologies
                    Level               “message-centric.”
                      Syntactic
                                     Higher levels implemented on top of lower
                                     based on chosen conventions
               Byte Level               •  Conventions not standardized => no
                                           interoperability
                      Technical         •  Implementations of lower layers
                                           constrain behavior, performance of upper
© 2011 Real-Time Innovations, Inc.                                                8
Data-Centricity by Example: Calendaring


      Alternative Process #1:
      1.  Email: “Meeting Monday at 10:00.”
      2.  Email: “Meeting moved to Tuesday.”
      3.  Email: “Here’s dial-in info for meeting…”


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




© 2011 Real-Time Innovations, Inc.                    9
Data-Centricity by Example: Calendaring


      Alternative Process #2:
      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)




© 2011 Real-Time Innovations, Inc.                  10
Data-Centricity by Example: FaceBook


      Alternative Process #1:
      !  Use the FaceBook web site.


      Alternative Process #2:
      !  The web site doesn’t exist.
      !  Deduce your friends’ information based on the
                 notifications FaceBook sends you.




© 2011 Real-Time Innovations, Inc.                       11
What’s the Difference? State.

     !  Things have attributes and
              characteristics                         “State” (“data”) is a
                –  The meeting will run 1:00–2:00     snapshot of those
                   in the conference room.
                –  My friend’s phone number is        attributes and
                   555-1234 and he’s currently        characteristics.
                   grooming his cat.
                –  The car is blue and is traveling
                   north from Sunnyvale at 65
                   mph.
     !  …whether they exist in the                    Best Practice:
              real world, in the computer,
              or both                                 operate on state
     !  …whether or not we observe                    directly, not dialogs
              or acknowledge them                     about state.


© 2011 Real-Time Innovations, Inc.                                            12
Data-Centric =



                                           the part of            you care about

                         Describing the world
                                                as it is
                                     at a certain point in time

      Implication: State of the world can be maintained by
      infrastructure, not each app


© 2011 Real-Time Innovations, Inc.                                                 13
Not Data-Centric =




                  Saying anything else
     !  “Hey you: go do this.”
     !  “The thing changed in this way.”

     Implication: State must be inferred, reconstructed,
     managed by each app

     (“Message-centricity”: focus on what’s said vs. what is)

© 2011 Real-Time Innovations, Inc.                              14
Why is it better to just describe the world?


      !  Reconstructing the state of the world is hard.
                 –  Must infer based on all previous messages             Reduce
                 –  Maintaining all these messages is expensive            Effort
                 –  Each app makes these inferences => duplicate effort
      !  People make mistakes, and systems fail.
                 –  Many copies of state => may be different => bugs
                    vs.                                                   Improve
                                                                           Quality
                 –  Uniform operations on state => fewer bugs
      !  The world changes.
                 –  Learning current state must not require replaying
                    everything ever said to you                           Future-
                 –  Adding a function to a system must not require         Proof
                    modifying every other function                        Design


© 2011 Real-Time Innovations, Inc.                                               15
Before We Forget: the Definition                     For example, data
                                                           structures in XSD
  A data-centric architecture:                                 or IDL file.

  1.  …is based on a data model that is:                   Calendar Event =
                                                             •  Start Time
             –  Appropriately documented—
                                                              •  Duration
                i.e. understandable by humans                 •  Location
             –  Formally defined—                            •  Organizer
                i.e. understandable by machines
             –  Discoverable—i.e. can be found during execution

  2.  The data model is independent of any domain-specific
            functionality / application.
             –  i.e. made of nouns, not verbs
             –  Actions are uniform; typically: Create, Read, Update, Delete (CRUD)

  3.  The (instantiated) data model is the only authoritative source
            of state in the system.
© 2011 Real-Time Innovations, Inc.                                              16
DDS is not messaging.


      DDS is data-centric messaging.
      That is,
      !  Messaging as a technique
      !  …for distributing, accessing, and modifying stateful data

            App                      App   App                 App    App      App


                                                                      Data
                     Data in Motion                                  at Rest

                             e.g. DDS            complements     e.g. database

© 2011 Real-Time Innovations, Inc.                                                   17
Example: Data-Centric Radar Data
          as in DDS

                     Data Schema                               Map this into XML; rows + cols
                   id : string (key)                           Express content-based filters
                   x : float
                                                               Propagate data efficiently
                   y : float

                  Delete                              Create        Update       Create




                                                                                            Subscribe
Publish




              “AA123”                             “DL987”          “AA123”      “AA123”
                                                  65.4             56.7         45.6
                       X                          32.1             89.0         78.9



   © 2011 Real-Time Innovations, Inc. COMPANY CONFIDENTIAL                                          18
Example: Data-Centric Radar Data
          as in DDS

                     Data Schema                             Quality of Service
                   id : string (key)                         History
                   x : float                                 Deadline
                   y : float                                 Time-Based Filter
             !  Once infrastructure understands objects, can attach
                     QoS contracts to them




                                                                                    Subscribe
Publish




             !  “Keep only the latest value” or “I need updates at
                     this rate” make no sense unless per-object
                       –  Flight AA123 updates shouldn’t overwrite DL987, even if
                          AA123 is updated more frequently
                       –  Update rate for one track shouldn’t change just because
                          another track appeared

   © 2011 Real-Time Innovations, Inc. COMPANY CONFIDENTIAL                                  19
Example: Message-Centric Radar Data
          as in JMS or AMQP

                                                                Nothing to base filters, xforms on
                        (No Data                                Error checking dev " integration
                        Schema,
                      Limited QoS)                              Self-describing data is verbose




                                                                                             Subscribe
                  “My app                                    0x00000006      id=“AA123”
Publish




                  knows this                                 4141010203      x=float(45.6)
                  means                                      0042366666
                  delete.”                                   429DCCCD        y=float(78.9)




   © 2011 Real-Time Innovations, Inc. COMPANY CONFIDENTIAL                                           20
Data Level
                                                                Message Level
      Message-Level Interoperability                              Byte Level



     !  JMS, AMQP cover syntax
              of message exchange
                –  If we agree on an abstract
                   destination, I can send you
                   messages
                –  Not addressed:                           Needed for
                          •  What these messages
                             represent                      interoperability!
                          •  What they will contain           –  Especially when integrating
                          •  How the data in the business        independently developed
                             domain changes over time            components

     !  (Interoperability                                   Mitigation: implement
              limitations within                            yourself, idiomatically
              syntactic level):
                                                              –  More work
                –  JMS does not specify
                   network interoperability                   –  Difficult to govern
                –  AMQP does not specify API                  –  Non-standard

© 2011 Real-Time Innovations, Inc.                                                             21
Data Level
                                                               Message Level
      Data-Level Interoperability                               Byte Level


     !  DDS applies semantics to                        !  DDS governs data
              “messages”
                –  Topic = group of similar               structure
                   objects / records
                –  Instance = particular object,
                                                           –  At design time and run
                   identified by key                          time
                –  Sample = state of particular            –  Based on discoverable
                   object at particular point in time
                –  Like relational DB that changes            schemas
                   over time
                                                        !  DDS governs data
                                                          changes
                                                           –  Among pubs, subs
                                     Topic                 –  Based on discoverable
                                                              QoS
            Key 1               Value        Value
            Key 2               Value        Value      #  Machine-readable
                                                          definitions amenable
            Key 3               Value        Value
                                                          to automation
© 2011 Real-Time Innovations, Inc.                                                     22
Data Level
                                                     Message Level
      Message-Level Reliability                        Byte Level


     JMS, AMQP provide                      This model is limited:
     syntactic reliability, 1-to-1.
                                            #  When communication is
     !  You send a message,                   many-to-many
        I receive it                           –  How to order messages
                                                  across multiple
     !  Messages have no                          producers?
              particular relationships to      –  How to eliminate
              each other, outside world           duplicates?
                                            #  When networks are
        Pub                          Sub      dynamic / disconnected
                                               –  How to sync late joiners to
                                                  current state?
        Pub                          Sub    #  When consumers can’t
                                              keep up
                                               –  How to summarize / sub-
        Pub                          Sub          sample message stream?

© 2011 Real-Time Innovations, Inc.                                              23
Data Level
                                                          Message Level
      Data-Level Reliability                                Byte Level


     DDS provides semantic                     #  Addresses many-to-many:
     reliability, many-to-many.                   –  Choose: Should updates come
     !  Some number of sources                       from all sources at once, or one
                                                     at a time?
              publish the changing states
              of some objects                     –  Choose: If all at once, order by
                                                     source time or reception time?
     !  Samples represent                         –  Duplicates detected and
              snapshots of object state              eliminated automatically
              over time
                                               #  Addresses dynamic /
                                                  disconnected networks:
        Pub                      Topic   Sub      –  Identify number of relevant
                                                     previous states; late joiners get
                                                     just these
                              Instance
        Pub                              Sub   #  Addresses slow consumers:
                              Instance            –  Doesn’t (re)deliver obsolete
                                                     previous states
        Pub                   Instance   Sub      –  Sub-sample rapid updates based
                                                     on configuration

© 2011 Real-Time Innovations, Inc.                                                       24
Summary

     1.       Architect for interoperability and                        Technology Score Card
              reliability
                –       Start with common data model of business        !  DDS
                        domain                                            –  Interoperability, reliability
                          •  …Including static and dynamic elements          founded on system-defined
                                                                             data model
                –       Design interactions based on applying uniform         •  Discoverable
                        operations (CRUD) on this model
                                                                              •  Machine-readable
                –       Account for enforcement / governance                  •  Automatically enforced
     2.       Select technology based on                                  –  Portable API in multiple
              conformance to architecture wherever                           languages
              possible                                                    –  Interoperable protocol
                –       Supports and enforces data model?               !  JMS
                –       Provides standards-based code portability?        –  Interoperability, reliability
                –       Provides standards-based component                   defined at message level
                        interoperability?                                    only: no pre-defined
                                                                             semantics
     3.       Mitigate lack of architectural support                      –  Portable API in Java
              wherever necessary
                –       Document and implement data model               !  AMQP
                        governance                                        –  Interoperability, reliability
                –       Create portable API wrappers where lacking           defined at message level
                –       Define protocol usage idioms to increase             only: no pre-defined
                        interop, reliability levels                          semantics
                                                                          –  Interoperable protocol

© 2011 Real-Time Innovations, Inc.                                                                           25

Engineering Interoperable and Reliable Systems

  • 1.
    Engineering Interoperable and Reliable Systems Contrasting DDS, JMS, and AMQP The Global Leader Rick Warren rick.warren@rti.com in DDS Director of Technology Solutions
  • 2.
    Introductions Rick Warren rick.warren@rti.com !  Director of Technology Solutions –  Aligning product strategy with customer needs –  Coordinating existing product, accelerated product, professional services !  OMG principal –  Participated DDS revision task force –  Authored or co-authored Extensible and Dynamic Types (DDS-XTypes), C++ PSM, Java PSM, and other specs –  Chaired several specification finalization task forces !  Former Principal Engineer –  With RTI nearly 10 years –  Experience in R&D and Services © 2011 Real-Time Innovations, Inc. 2
  • 3.
    Most Important Pointsin this Presentation Themes: Interoperability, Reliability !  Flow first from architecture Agenda –  What is the information you’re 1.  Architecture modeling? –  How does it change over time? –  Levels of interoperability –  How to address dynamic –  Levels of systems? reliability –  How to address system –  Data-centricity evolution, integration? !  Pick the right tool for the job 2.  Technology –  Different technologies provide Implications •  Different degrees of architectural –  DDS support –  JMS •  Different levels of portability, –  AMQP interoperability –  Biggest mistake: “It’s all just ‘messaging’.” © 2011 Real-Time Innovations, Inc. 3
  • 4.
    (Technology Refresher) !  Java Message Service (JMS) –  Messaging at syntactic level: no assumed semantics –  Portable API for messaging in Java !  Data Distribution Service (DDS) –  Specification from Java –  Application of messaging to Community Process (JCP) distributed state model –  Portable API for data distribution !  Advanced Message Queuing in multiple languages (DDS) Protocol (AMQP) –  Interoperable protocol for data –  Messaging at syntactic level: distribution (DDS-RTPS) no assumed semantics –  Specifications from Object –  Interoperable protocol for Management Group (OMG) messaging –  Specification from AMQP Working Group, industry consortium © 2011 Real-Time Innovations, Inc. 4
  • 5.
    Levels of Interoperabilityand Reliability Interpretation of Semantic messages e.g. DDS Cumulative Communication e.g. JMS, Syntactic fragments— “messages” AMQP Technical Bits and bytes e.g. TCP © 2011 Real-Time Innovations, Inc. 5
  • 6.
    Levels of Interoperabilityand Reliability Interoperability Means: Data Level Agree on what information Semantic refers to, how it’s related Message Distinguish one piece of Level information from another Syntactic Byte Level Exchange raw information, Technical regardless of structure © 2011 Real-Time Innovations, Inc. 6
  • 7.
    Levels of Interoperabilityand Reliability Reliability Means: Order across “Summarize” Data Level streams, data changes for eliminating slow / late-joining Semantic duplicates consumers Message Route across Store for later Level multiple connections delivery Syntactic Repair dropped Byte Level bytes over reliable Technical connection © 2011 Real-Time Innovations, Inc. 7
  • 8.
    Levels of Interoperabilityand Reliability Data Level We call these technologies Semantic “data-centric.” Message We call these technologies Level “message-centric.” Syntactic Higher levels implemented on top of lower based on chosen conventions Byte Level •  Conventions not standardized => no interoperability Technical •  Implementations of lower layers constrain behavior, performance of upper © 2011 Real-Time Innovations, Inc. 8
  • 9.
    Data-Centricity by Example:Calendaring Alternative Process #1: 1.  Email: “Meeting Monday at 10:00.” 2.  Email: “Meeting moved to Tuesday.” 3.  Email: “Here’s dial-in info for meeting…” 4.  You: “Where do I have to be? When?” 5.  You: (sifting through email…) © 2011 Real-Time Innovations, Inc. 9
  • 10.
    Data-Centricity by Example:Calendaring Alternative Process #2: 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) © 2011 Real-Time Innovations, Inc. 10
  • 11.
    Data-Centricity by Example:FaceBook Alternative Process #1: !  Use the FaceBook web site. Alternative Process #2: !  The web site doesn’t exist. !  Deduce your friends’ information based on the notifications FaceBook sends you. © 2011 Real-Time Innovations, Inc. 11
  • 12.
    What’s the Difference?State. !  Things have attributes and characteristics “State” (“data”) is a –  The meeting will run 1:00–2:00 snapshot of those in the conference room. –  My friend’s phone number is attributes and 555-1234 and he’s currently characteristics. grooming his cat. –  The car is blue and is traveling north from Sunnyvale at 65 mph. !  …whether they exist in the Best Practice: real world, in the computer, or both operate on state !  …whether or not we observe directly, not dialogs or acknowledge them about state. © 2011 Real-Time Innovations, Inc. 12
  • 13.
    Data-Centric = the part of you care about Describing the world as it is at a certain point in time Implication: State of the world can be maintained by infrastructure, not each app © 2011 Real-Time Innovations, Inc. 13
  • 14.
    Not Data-Centric = Saying anything else !  “Hey you: go do this.” !  “The thing changed in this way.” Implication: State must be inferred, reconstructed, managed by each app (“Message-centricity”: focus on what’s said vs. what is) © 2011 Real-Time Innovations, Inc. 14
  • 15.
    Why is itbetter to just describe the world? !  Reconstructing the state of the world is hard. –  Must infer based on all previous messages Reduce –  Maintaining all these messages is expensive Effort –  Each app makes these inferences => duplicate effort !  People make mistakes, and systems fail. –  Many copies of state => may be different => bugs vs. Improve Quality –  Uniform operations on state => fewer bugs !  The world changes. –  Learning current state must not require replaying everything ever said to you Future- –  Adding a function to a system must not require Proof modifying every other function Design © 2011 Real-Time Innovations, Inc. 15
  • 16.
    Before We Forget:the Definition For example, data structures in XSD A data-centric architecture: or IDL file. 1.  …is based on a data model that is: Calendar Event = •  Start Time –  Appropriately documented— •  Duration i.e. understandable by humans •  Location –  Formally defined— •  Organizer i.e. understandable by machines –  Discoverable—i.e. can be found during execution 2.  The data model is independent of any domain-specific functionality / application. –  i.e. made of nouns, not verbs –  Actions are uniform; typically: Create, Read, Update, Delete (CRUD) 3.  The (instantiated) data model is the only authoritative source of state in the system. © 2011 Real-Time Innovations, Inc. 16
  • 17.
    DDS is notmessaging. DDS is data-centric messaging. That is, !  Messaging as a technique !  …for distributing, accessing, and modifying stateful data App App App App App App Data Data in Motion at Rest e.g. DDS complements e.g. database © 2011 Real-Time Innovations, Inc. 17
  • 18.
    Example: Data-Centric RadarData as in DDS Data Schema Map this into XML; rows + cols id : string (key) Express content-based filters x : float Propagate data efficiently y : float Delete Create Update Create Subscribe Publish “AA123” “DL987” “AA123” “AA123” 65.4 56.7 45.6 X 32.1 89.0 78.9 © 2011 Real-Time Innovations, Inc. COMPANY CONFIDENTIAL 18
  • 19.
    Example: Data-Centric RadarData as in DDS Data Schema Quality of Service id : string (key) History x : float Deadline y : float Time-Based Filter !  Once infrastructure understands objects, can attach QoS contracts to them Subscribe Publish !  “Keep only the latest value” or “I need updates at this rate” make no sense unless per-object –  Flight AA123 updates shouldn’t overwrite DL987, even if AA123 is updated more frequently –  Update rate for one track shouldn’t change just because another track appeared © 2011 Real-Time Innovations, Inc. COMPANY CONFIDENTIAL 19
  • 20.
    Example: Message-Centric RadarData as in JMS or AMQP Nothing to base filters, xforms on (No Data Error checking dev " integration Schema, Limited QoS) Self-describing data is verbose Subscribe “My app 0x00000006 id=“AA123” Publish knows this 4141010203 x=float(45.6) means 0042366666 delete.” 429DCCCD y=float(78.9) © 2011 Real-Time Innovations, Inc. COMPANY CONFIDENTIAL 20
  • 21.
    Data Level Message Level Message-Level Interoperability Byte Level !  JMS, AMQP cover syntax of message exchange –  If we agree on an abstract destination, I can send you messages –  Not addressed: Needed for •  What these messages represent interoperability! •  What they will contain –  Especially when integrating •  How the data in the business independently developed domain changes over time components !  (Interoperability Mitigation: implement limitations within yourself, idiomatically syntactic level): –  More work –  JMS does not specify network interoperability –  Difficult to govern –  AMQP does not specify API –  Non-standard © 2011 Real-Time Innovations, Inc. 21
  • 22.
    Data Level Message Level Data-Level Interoperability Byte Level !  DDS applies semantics to !  DDS governs data “messages” –  Topic = group of similar structure objects / records –  Instance = particular object, –  At design time and run identified by key time –  Sample = state of particular –  Based on discoverable object at particular point in time –  Like relational DB that changes schemas over time !  DDS governs data changes –  Among pubs, subs Topic –  Based on discoverable QoS Key 1 Value Value Key 2 Value Value #  Machine-readable definitions amenable Key 3 Value Value to automation © 2011 Real-Time Innovations, Inc. 22
  • 23.
    Data Level Message Level Message-Level Reliability Byte Level JMS, AMQP provide This model is limited: syntactic reliability, 1-to-1. #  When communication is !  You send a message, many-to-many I receive it –  How to order messages across multiple !  Messages have no producers? particular relationships to –  How to eliminate each other, outside world duplicates? #  When networks are Pub Sub dynamic / disconnected –  How to sync late joiners to current state? Pub Sub #  When consumers can’t keep up –  How to summarize / sub- Pub Sub sample message stream? © 2011 Real-Time Innovations, Inc. 23
  • 24.
    Data Level Message Level Data-Level Reliability Byte Level DDS provides semantic #  Addresses many-to-many: reliability, many-to-many. –  Choose: Should updates come !  Some number of sources from all sources at once, or one at a time? publish the changing states of some objects –  Choose: If all at once, order by source time or reception time? !  Samples represent –  Duplicates detected and snapshots of object state eliminated automatically over time #  Addresses dynamic / disconnected networks: Pub Topic Sub –  Identify number of relevant previous states; late joiners get just these Instance Pub Sub #  Addresses slow consumers: Instance –  Doesn’t (re)deliver obsolete previous states Pub Instance Sub –  Sub-sample rapid updates based on configuration © 2011 Real-Time Innovations, Inc. 24
  • 25.
    Summary 1.  Architect for interoperability and Technology Score Card reliability –  Start with common data model of business !  DDS domain –  Interoperability, reliability •  …Including static and dynamic elements founded on system-defined data model –  Design interactions based on applying uniform •  Discoverable operations (CRUD) on this model •  Machine-readable –  Account for enforcement / governance •  Automatically enforced 2.  Select technology based on –  Portable API in multiple conformance to architecture wherever languages possible –  Interoperable protocol –  Supports and enforces data model? !  JMS –  Provides standards-based code portability? –  Interoperability, reliability –  Provides standards-based component defined at message level interoperability? only: no pre-defined semantics 3.  Mitigate lack of architectural support –  Portable API in Java wherever necessary –  Document and implement data model !  AMQP governance –  Interoperability, reliability –  Create portable API wrappers where lacking defined at message level –  Define protocol usage idioms to increase only: no pre-defined interop, reliability levels semantics –  Interoperable protocol © 2011 Real-Time Innovations, Inc. 25