uncoupling
play

Uncoupling Michael T. Nygard @mtnygard About the Speaker Blog: - PowerPoint PPT Presentation

Uncoupling Michael T. Nygard @mtnygard About the Speaker Blog: http://www.michaelnygard.com/ Developer Twitter: http://twitter.com/mtnygard Architect Operations About the Speaker Stewards of Clojure & ClojureScript Creators of


  1. Uncoupling Michael T. Nygard @mtnygard

  2. About the Speaker Blog: http://www.michaelnygard.com/ Developer Twitter: http://twitter.com/mtnygard Architect Operations

  3. About the Speaker • Stewards of Clojure & ClojureScript • Creators of Datomic • Open source contributions • Pedestal • Vase • Onto • Simulant

  4. Tensegrity This Photo by Unknown Author is licensed under CC BY

  5. No-tegrity This Photo by Unknown Author is licensed under CC BY-NC-SA

  6. Coupling

  7. Scharfenberg Coupler

  8. Watt’s Linkage

  9. Chebyshev Linkage

  10. Standard Model Particle Interactions

  11. Coupling

  12. Coupling • Determines degrees of freedom.

  13. Coupling • Determines degrees of freedom. • Enables some movements.

  14. Coupling • Determines degrees of freedom. • Enables some movements. • Inhibits other movements.

  15. Coupling • Determines degrees of freedom. • Enables some movements. • Inhibits other movements. • Connects effects.

  16. Everything is coupled to everything • Ambient temperature • Ambient atmosphere • Acoustic vibrations • Electromagnetic field • Gravity • Higgs field

  17. We cannot attend to all things all the time

  18. Kinds of Coupling Type Effect Operational Consumer cannot run without the provider Development Changes in producer and consumer must be coordinated Semantic Change together because of shared concepts Functional Change together because of shared responsibility Incidental Change together for no good reason. (E.g., breaking API changes.)

  19. Analyzing Coupling I E-mail system Email Component [Software System] [Component: C#] Sends a notification that a report is ready to Microsoft Exchange Sends emails

  20. Analyzing Coupling I E-mail system Email Component [Software System] [Component: C#] Sends a notification that a report is ready to Microsoft Exchange Sends emails Operational: Strong. SMTP is synchronous, connection-oriented, conversational

  21. Analyzing Coupling I E-mail system Email Component [Software System] [Component: C#] Sends a notification that a report is ready to Microsoft Exchange Sends emails Operational: Strong. SMTP is synchronous, connection-oriented, conversational Development: Weak. SMTP is well-defined standard with history of interoperability

  22. Analyzing Coupling I E-mail system Email Component [Software System] [Component: C#] Sends a notification that a report is ready to Microsoft Exchange Sends emails Operational: Strong. SMTP is synchronous, connection-oriented, conversational Development: Weak. SMTP is well-defined standard with history of interoperability Semantic: Very strong. SMTP defines entities, attributes, and allowed values.

  23. Analyzing Coupling I E-mail system Email Component [Software System] [Component: C#] Sends a notification that a report is ready to Microsoft Exchange Sends emails Operational: Strong. SMTP is synchronous, connection-oriented, conversational Development: Weak. SMTP is well-defined standard with history of interoperability Semantic: Very strong. SMTP defines entities, attributes, and allowed values. Functional: Very weak. Sender and MTA both use network connections.

  24. Analyzing Coupling II-A SQL connection Reference Data System to RDBMS Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with

  25. Analyzing Coupling II-A SQL connection Reference Data System to RDBMS Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Very strong. Dependent on availability of server. Must be aware of topology and failover strategy

  26. Analyzing Coupling II-A SQL connection Reference Data System to RDBMS Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Very strong. Dependent on availability of server. Must be aware of topology and failover strategy Development: Very strong. Dependent on schema, server version, protocol version.

  27. Analyzing Coupling II-A SQL connection Reference Data System to RDBMS Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Very strong. Dependent on availability of server. Must be aware of topology and failover strategy Development: Very strong. Dependent on schema, server version, protocol version. Semantic: Very strong. Tables, columns, and joins must be known to both parties.

  28. Analyzing Coupling II-A SQL connection Reference Data System to RDBMS Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Very strong. Dependent on availability of server. Must be aware of topology and failover strategy Development: Very strong. Dependent on schema, server version, protocol version. Semantic: Very strong. Tables, columns, and joins must be known to both parties. Functional: Weak. Functions of data maintenance don’t overlap with retrieval into objects.

  29. Suppose we use REST instead of SQL?

  30. Analyzing Coupling II-B HTTPS request Reference Data System to REST API Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with

  31. Analyzing Coupling II-B HTTPS request Reference Data System to REST API Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Strong, but less than before. Dependent on availability of server.

  32. Analyzing Coupling II-B HTTPS request Reference Data System to REST API Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Strong, but less than before. Dependent on availability of server. Development: Strong, but less. Insulated from data format changes. Open encoding can further reduce coupling

  33. Analyzing Coupling II-B HTTPS request Reference Data System to REST API Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Strong, but less than before. Dependent on availability of server. Development: Strong, but less. Insulated from data format changes. Open encoding can further reduce coupling Semantic: Still very strong. REST resources and C# entities must align. Concepts will still map 1:1

  34. Analyzing Coupling II-B HTTPS request Reference Data System to REST API Reference Data Importer [Software System] [Component: C#] Gets counterparty Manages reference data for all data from Imports data from the reference counterparties the bank interacts data system with Operational: Strong, but less than before. Dependent on availability of server. Development: Strong, but less. Insulated from data format changes. Open encoding can further reduce coupling Semantic: Still very strong. REST resources and C# entities must align. Concepts will still map 1:1 Functional: Still weak. Different languages, techniques, design patterns apply.

  35. What if we invert the flow of control?

  36. Analyzing Coupling II-C Reference Data System Reference Data Receiver [Software System] Message Broker [Component: C#] [Software System] Broadcasts Broadcasts Manages reference data for all Accepts and caches data from the counterparties the bank interacts Pub/sub hub, bub reference data system with

  37. Analyzing Coupling II-C Reference Data System Reference Data Receiver [Software System] Message Broker [Component: C#] [Software System] Broadcasts Broadcasts Manages reference data for all Accepts and caches data from the counterparties the bank interacts Pub/sub hub, bub reference data system with Operational: Very weak. Receiver can run with stale data when either broker or upstream are broken.

  38. Analyzing Coupling II-C Reference Data System Reference Data Receiver [Software System] Message Broker [Component: C#] [Software System] Broadcasts Broadcasts Manages reference data for all Accepts and caches data from the counterparties the bank interacts Pub/sub hub, bub reference data system with Operational: Very weak. Receiver can run with stale data when either broker or upstream are broken. Development: Weak. Insulated from schema changes.

More recommend