Lesson189 - Architectural Quantum Tradeoffs

Mark Richards
16 Jun 202413:04

Summary

TLDRIn this episode of 'Software Architecture Monday,' Mark Richards explores the concept of architectural quantum, a term that describes independently deployable artifacts with high functional cohesion and synchronous dynamic coupling. He revisits the idea of dynamic quantum entanglement and its implications for system dependencies. Using the 'sisp squad' as a case study, Richards illustrates the trade-offs involved in creating or separating architectural quanta, emphasizing the importance of balancing user experience with the benefits of modular, independently deployable system components.

Takeaways

  • 👋 Introduction: Mark Richards starts the lesson on 'Software Architecture Monday' discussing the architectural quantum concept and trade-offs involved.
  • 🧑‍🎨 Theme: The lesson focuses on the architectural quantum, a concept that Mark has previously touched upon in lesson 138, and its implications in system design.
  • 🔍 Definition: An architectural quantum is an independently deployable artifact with high functional cohesion and synchronous dynamic coupling.
  • 📚 Source: The concept is identified in 'Building Evolutionary Architectures' by Neil Ford, Rebecca Parsons, and Patrick Qua and further refined in 'Software Architecture: The Hard Parts'.
  • 🛠️ Example: The SISP Squad, a trouble ticket system for electronics support plans, is used to illustrate the architectural quantum and its trade-offs.
  • 🔄 Dynamic Quantum Entanglement: Systems can become unknowingly entangled, creating dependencies between them through both synchronous and asynchronous communication.
  • 🔑 Key Insight: Architectural characteristics live at the quantum level, and understanding these can help in the partitioning of complex systems.
  • ⚙️ Trade-offs: There are trade-offs between creating separate, independently deployable units of architecture and maintaining a cohesive user experience.
  • 🔄 Dependency: Synchronous dynamic coupling can bind architectural quanta together, even if they are designed to be separate, due to shared resources like databases.
  • 🛑 Solutions: One solution to entanglement is to create separate user interfaces and databases for different functionalities to ensure independence.
  • 🤔 Consideration: The decision to separate or entangle architectural quanta depends on the importance of user experience versus the benefits of independent deployment and system characteristics.
  • 📈 Conclusion: Mark emphasizes the importance of understanding the architectural quantum concept and its trade-offs in software architecture, as everything involves a trade-off.

Q & A

  • What is the main topic of the 189th lesson by Mark Richards in 'Software Architecture Monday'?

    -The main topic of the lesson is the architectural quantum concept and the trade-offs involved in using or forming architectural quanta.

  • What does Mark Richards wear when he discusses trade-offs as a core piece of the lesson?

    -Mark Richards wears his architecture shirt that says 'It Depends' when discussing trade-offs.

  • What is the concept of an 'architectural quantum' as defined in the script?

    -An architectural quantum is an independently deployable artifact with high functional cohesion and synchronous dynamic coupling, including all necessary components for the functionality to work.

  • What book is mentioned in the script that identified the concept of an architectural quantum?

    -The book mentioned is 'Building Evolutionary Architectures' by Neal Ford, Rebecca Parsons, and Patrick Kua.

  • Can you describe the 'SISP Squad' system mentioned in the script?

    -The SISP Squad is a trouble ticket system for customers who buy electronics and purchase a support plan. It allows customers to register, submit problem tickets, and have customer-facing experts fix their issues at their location.

  • How does the 'SISP Squad' system illustrate the concept of architectural quanta?

    -The SISP Squad system shows how different parts of the architecture, such as customer login/profile, ticket creation, and operations reporting, can be independently deployable and share the same database, forming separate architectural quanta.

  • What is the issue with the original 'SISP Squad' system architecture in terms of architectural quanta?

    -The issue is that while the system appears to have separate parts, the shared database creates a synchronous dynamic coupling that binds them together into a single architectural quantum, which can lead to entanglement and dependency issues.

  • What is one way to address the problem of architectural entanglement in the 'SISP Squad' system?

    -One way to address the problem is to create a new user interface for ticket creation, making it a separate architectural quantum independent of the customer profile and login functionalities.

  • What trade-offs are involved in creating separate architectural quanta for ticket creation and customer profile management?

    -The trade-offs include potentially disrupting the user experience with separate user interfaces and the complexity of synchronizing session state between the separate deployment units, versus the benefits of having independent, deployable units of architecture.

  • What alternative solution is presented to avoid disrupting the user experience while addressing architectural entanglement?

    -An alternative solution is to create a separate ticket creation database, allowing ticket creation to be a separate quantum, while maintaining a good customer experience with a single front end and ensuring data consistency and integrity.

  • What is the key takeaway from the lesson regarding architectural quanta and trade-offs?

    -The key takeaway is to understand the importance of the architectural quantum concept for partitioning systems and recognizing dependencies, while also being pragmatic and considering the trade-offs involved in system design decisions.

Outlines

00:00

📚 Introduction to Architectural Quantum Concepts

In this video script, the presenter, Mark Richards, introduces the concept of architectural quantum, a term that refers to an independently deployable artifact with high functional cohesion and synchronous dynamic coupling. He discusses the trade-offs involved in using architectural quanta and references a previous lesson (lesson 138) where he first introduced this concept alongside the idea of dynamic quantum entanglement. The script mentions a book titled 'Building Evolutionary Architectures' by authors Neil Ford, Rebecca Parsons, and Patrick Qua, who first identified the concept of architectural quantum. The presenter uses a case study of a support ticket system to illustrate the concept and the trade-offs involved in forming architectural quanta.

05:01

🔍 Analyzing Architectural Quanta and Trade-offs

The second paragraph delves into a detailed analysis of the architectural quantum in the context of a distributed system. The presenter identifies different parts of the system that could potentially be separate architectural quanta, such as the operations reporting and customer-facing areas. He discusses the concept of synchronous dynamic coupling and how it can entangle what might otherwise be separate quanta. The presenter then explores the idea of creating separate user interfaces for ticket creation and customer profile management to avoid entanglement, but also acknowledges the trade-offs of potentially disrupting the user experience and the complexities of synchronizing session states between separate deployment units.

10:01

🛠 Addressing Architectural Quantum Challenges

In the final paragraph, the presenter addresses the challenges of maintaining a good customer experience while ensuring the system's backend is scalable, responsive, and fault-tolerant. He suggests creating a separate database for ticket creation to make it a distinct architectural quantum, which would necessitate a synchronization process between the ticket creation and the ticketing backend functionality. The presenter emphasizes the importance of understanding the trade-offs associated with architectural quantum, such as data consistency and integrity, and the impact of dependencies on system characteristics. The lesson concludes with a reminder of the importance of being pragmatic in software architecture and considering all trade-offs.

Mindmap

Keywords

💡Architectural Quantum

The term 'Architectural Quantum' refers to an independently deployable artifact with high functional cohesion and synchronous dynamic coupling within a system. It is a concept that helps in understanding the partitioning of systems and the dependencies between different components. In the video, it is used to discuss the trade-offs involved in forming these quanta, such as the example of a trouble ticket system where different parts like customer login, ticket creation, and operations reporting are considered in terms of their deployability and coupling.

💡Trade-offs

Trade-offs are decisions made between two or more alternatives, each with its own advantages and disadvantages. In the context of the video, trade-offs are discussed in relation to the architectural quantum concept, where creating separate deployable units may improve system modularity but could affect user experience or data consistency. The script uses the phrase 'it depends' to emphasize that the decision to create separate architectural quanta should be based on weighing these trade-offs.

💡Dynamic Quantum Entanglement

Dynamic Quantum Entanglement is a concept that describes how systems can become unknowingly interdependent, creating a relationship between them. It is mentioned in the script as a previous topic that the presenter discussed in lesson 138 and is related to the use of asynchronous and synchronous communication in forming architectural quanta. The example of ticket creation and routing in the script illustrates how entanglement can occur due to shared databases and synchronous calls.

💡SISP Squad

SISP Squad is an architectural kata used in the video as a concrete example to illustrate the concept of architectural quantum. It represents a trouble ticket system for customers who purchase electronics and a support plan. The script describes how different functionalities like customer login, ticket creation, and operations reporting could be part of separate or entangled architectural quanta within this system.

💡Distributed Architecture

Distributed Architecture refers to a system whose components are located on different networks but still work together as a unified whole. In the video, the SISP Squad system is described as having a distributed architecture, with separate services for customer interaction, ticket routing, and operations reporting, which are all interconnected through their shared database and asynchronous communication.

💡User Interface

A User Interface (UI) is the point of interaction between a user and a system, allowing users to input data and commands and receive output. In the context of the video, the UI is mentioned in relation to the customer-facing aspects of the SISP Squad system, such as logging in and updating customer profiles, which are considered in terms of their architectural quantum.

💡Synchronous Dynamic Coupling

Synchronous Dynamic Coupling is a term used to describe the way components within an architectural quantum interact with each other in real-time. The video script explains that this coupling binds different parts of a system together, as seen in the ticket creation process, which relies on synchronous calls to the ticket router.

💡Asynchronous Communication

Asynchronous Communication refers to a communication method where the sender and receiver do not need to be active at the same time. In the video, asynchronous communication is used to separate architectural quanta, such as the ticket router receiving tickets independently of the ticket creation process.

💡Database Dependency

Database Dependency occurs when different parts of a system rely on the same database, which can create a single point of failure or coupling between those parts. The script discusses how ticket creation, customer login, and profile updates share the same database, forming a single architectural quantum due to this dependency.

💡Fault Tolerance

Fault Tolerance is the ability of a system to continue operating, even when some of its components fail. In the video, fault tolerance is considered as a requirement for the customer-facing parts of the SISP Squad system, which need to be highly available and responsive, contrasting with the backend parts that may not require the same level of fault tolerance.

💡Data Consistency

Data Consistency refers to the accuracy and reliability of data across a system. The video script discusses the trade-off between creating separate architectural quanta, which can improve system modularity, and maintaining data consistency, which can be challenging when different parts of the system operate independently.

Highlights

Introduction to the concept of architectural quantum and its importance in software architecture.

The speaker's unique approach to wearing an architecture shirt to symbolize the concept of trade-offs in architecture.

A quick review of architectural quantum from a previous lesson, highlighting the concept's evolution.

Definition of an architectural quantum as an independently deployable artifact with high functional cohesion and synchronous dynamic coupling.

The identification of architectural characteristics living at the quantum level, as discussed in 'Building Evolutionary Architectures'.

Illustration of the architectural quantum concept using the SISP squad example, a trouble ticket system.

Analysis of the trade-offs involved in using or forming architectural quanta through the SISP squad example.

Explanation of dynamic quantum entanglement and its impact on system dependencies.

The dilemma of whether to separate ticket creation into its own architectural quantum to reduce dependencies.

The impact of synchronous dynamic coupling on the formation of a single architectural quantum despite distributed architecture.

Proposing a solution to create a separate user interface for ticket creation to form an independent architectural quantum.

Discussion on the trade-offs between user experience and system architecture separation.

Alternative solution of creating a separate ticket creation database to achieve architectural quantum separation.

The importance of balancing system scalability, availability, and fault tolerance with customer-facing functionalities.

The trade-off between data consistency and integrity against the benefits of separate front-end and back-end systems.

Emphasizing the significance of understanding and considering trade-offs in software architecture decisions.

Conclusion highlighting the importance of the architectural quantum concept and its impact on system partitioning and dependency management.

Transcripts

play00:00

hello everyone and welcome to software

play00:02

architecture Monday my name is Mark

play00:05

Richards and in this lesson number 189

play00:08

I'm going to talk a little bit about the

play00:10

architectural quantum concept but also

play00:13

some of the trade-offs involved uh you

play00:16

may be noticing my shirt I decided

play00:19

anytime I need to talk about tradeoffs

play00:21

as a core piece of it I'm actually going

play00:24

to wear my architecture shirt which says

play00:26

of course it depends

play00:30

you can get a listing of all the lessons

play00:31

I do in software architecture Monday at

play00:34

my website at developer to architect.com

play00:39

lessons speaking of lessons if we go on

play00:42

the Wayback machine all the way back to

play00:44

lesson

play00:45

138 I talked about the architectural

play00:49

quantum concept and also something

play00:52

called Dynamic quantum entanglement how

play00:55

we tend to entangle systems unknowingly

play00:58

uh creating dependenc between them well

play01:02

in this lesson I'm going to offer up a

play01:05

very quick review of that architectural

play01:07

Quantum but show you some of the

play01:09

trade-offs

play01:10

involved with using or forming

play01:14

architectural

play01:16

quanta so in the building evolutionary

play01:19

architectures book by Neil Ford Rebecca

play01:21

Parsons and Patrick qua uh they

play01:24

identified this concept of an

play01:26

architectural Quantum which we later

play01:28

refined in our books software

play01:30

architecture the hard

play01:32

Parts uh basically it's an independently

play01:35

Deployable artifact with high functional

play01:37

cohesion and

play01:39

synchronous Dynamic coupling but this

play01:42

doesn't mean a service an independently

play01:45

Deployable artifact means an

play01:48

independently Deployable portion of the

play01:52

system including all of the things

play01:55

needed for that functionality to work

play01:59

that includes the user interfaces

play02:01

Services gateways the database uh

play02:04

Brokers all of that

play02:06

stuff that has high functional cohesion

play02:11

and all of it is coupled

play02:14

synchronously uh inside that

play02:17

architectural

play02:18

Quantum now the Revolutionary aspect of

play02:22

this uh that uh Neil Rebecca and Patrick

play02:25

had identified and discovered is that

play02:28

architectural characterist ICS those

play02:30

things we've been looking at at the past

play02:33

couple of lessons live at an

play02:35

architectural Quantum level and I want

play02:38

to show you an example of this and also

play02:42

the tradeoffs of

play02:44

this so in order to illustrate a solid

play02:49

concrete example uh we're going to use

play02:52

uh something called the sisp squad this

play02:55

was the architectural qu architectural

play02:58

Kata uh that we had identified in our

play03:01

book software architecture the hard

play03:03

Parts uh this is a trouble ticket system

play03:06

where if customers Buy electronics uh

play03:09

they can also purchase a support plan if

play03:12

they have an issue uh the customer can

play03:14

register with this site uh submit a

play03:17

problem ticket and our customer facing

play03:20

experts those of the ssop squad will

play03:23

come to your home or office and fix your

play03:26

problem let me show you the arch ecture

play03:30

for this and then we'll analyze the

play03:32

architectural Quantum and the tradeoffs

play03:35

with that so let's say we have a

play03:37

customer

play03:39

myself I interact with a web-based user

play03:43

interface to be able to log in to be

play03:46

able to also uh update my customer

play03:49

profile and my support plans and my

play03:52

address and all that kind of stuff and

play03:55

both of these separately deployed

play03:56

Services share the same data base

play04:00

but I can also create tickets through

play04:03

this website so I create a ticket and

play04:07

now we have the sisap squad so what

play04:11

happens that ticket creation when a

play04:13

ticket gets created

play04:15

asynchronously is sent to a ticket

play04:17

router that ticket router basically

play04:20

finds an expert and routes that ticket

play04:22

to their mobile device on their

play04:26

iPhone now that expert will go out to

play04:28

the field fix fix the problem and then

play04:31

Mark the ticket as complete which kind

play04:33

of ends the whole process and all three

play04:36

of these separately deployed Services

play04:38

all share the same

play04:41

database now behind the scenes we've got

play04:43

our manager that would be Neil over

play04:45

there which uses a separate user

play04:47

interface to do operations reporting of

play04:50

all the various Financial reports expert

play04:53

reports forecasting and so

play04:56

on when we take a look at this system

play05:00

it is a distributed architecture but how

play05:03

many separate parts are there to it in

play05:06

other words if we think about that

play05:08

definition of an architectural Quantum

play05:11

independently Deployable part of the

play05:14

system held together with synchronous

play05:18

Dynamic

play05:19

coupling now in in lesson 138 I showed

play05:23

you that Dynamic quantum entanglement

play05:26

with the use of async and synchronous

play05:28

communication

play05:30

so looking at this what architectural

play05:33

quanta which is plural for Quantum do we

play05:36

have here totally separate independent

play05:39

parts of the system well certainly the

play05:42

easy one here is of course the

play05:43

operations reporting we see that the

play05:47

interface the service and the database

play05:50

are completely independent from all

play05:53

other parts it doesn't depend on

play05:56

anything else in the system we might

play05:58

also take a look here at our customer

play06:00

facing area here uh the customer login

play06:03

and profile with that corresponding user

play06:05

interface um this looks like that might

play06:07

be part a separate part of the system as

play06:11

a matter of fact we'd like the whole

play06:13

backend piece the routing and completion

play06:15

to all be a separate part of the system

play06:18

separately Deployable no synchronous

play06:22

coupling or dependency with any other

play06:25

parts and that kind of leaves ticket

play06:27

creation to kind of be also another

play06:29

custom customer facing piece so we might

play06:32

say oh there's four architectural Quant

play06:35

here but if we look at the

play06:38

definition we have synchronous Dynamic

play06:41

coupling which binds those architectural

play06:44

Quant together in other words ticket

play06:47

Creations needed for that interface and

play06:50

that customer which means that I showed

play06:53

in lesson 138 that synchronous call

play06:57

entangles those two quanta into a single

play07:00

architectural

play07:01

Quantum but we also notice ticket

play07:04

creation has a dependency on a database

play07:07

used by these other services even though

play07:10

there's an asynchronous call right here

play07:13

between ticket creation and router which

play07:16

does separate architectural quanta

play07:19

because they're not dependent on each

play07:21

other that's

play07:22

async but because of the database

play07:25

dependency that now forms a single

play07:29

architectural Quantum which means that

play07:32

even though we have a distributed

play07:33

architecture ultimately everything is

play07:36

entangled and this becomes a single unit

play07:39

of

play07:41

architecture hence this is where the

play07:43

characteristics live they need to be

play07:45

shared between these because of those

play07:49

dependencies how do we fix this problem

play07:53

well one way to address this would say h

play07:56

well this this line right here of course

play08:00

sort of bothers me so in order to form a

play08:03

separate architectural

play08:05

Quantum what if I created a new user

play08:08

interface for Ticket

play08:10

creation and now had a separately

play08:13

deployed user interface to create

play08:15

tickets versus maintain my customer

play08:17

profile and

play08:19

login well if I do that

play08:23

now customer functionality is completely

play08:27

independent of everything else that is

play08:30

its own architectural

play08:32

Quantum separate from all of this so

play08:36

that is one way we can do this and now

play08:39

we now have two architectural

play08:43

quanta well this is an interesting

play08:45

exercise because now we get to the Crux

play08:48

of this whole Topic in this lesson and

play08:52

that

play08:52

is should we do this and the answer on

play08:56

my shirt says it depends

play08:59

because now we have to analyze the

play09:01

tradeoffs of doing so in other

play09:04

words is it worthwhile having two

play09:08

separate architectural quanta each

play09:10

owning its own set of architectural

play09:14

characteristics versus disrupting the

play09:17

user experience by having the

play09:20

complexities of two separate user

play09:24

interfaces and maybe even the

play09:26

complexities of synchronizing the

play09:28

session state between those two separate

play09:31

deployment units on the interface and

play09:34

this this is it depends should we do

play09:37

this it depends on which is more

play09:41

important the user experience or the

play09:43

reasons for actually creating those two

play09:46

separate Deployable units of

play09:50

architecture well there's another way we

play09:53

could have solved this problem so let's

play09:55

go back and say no we we don't we don't

play09:58

want to disrupt the user experience um

play10:01

so one other way to maybe do this is to

play10:03

say wait a minute ticket creation

play10:06

they're in the middle really is customer

play10:09

facing although it's ticketing it really

play10:12

involves the customer so how can I make

play10:15

that a separate

play10:17

Quantum well what we can do is create a

play10:20

ticket creation

play10:22

database and now ticket creation talks

play10:26

only to that data which means

play10:30

that now unfortunately we'd have to have

play10:31

some sort of synchronization process

play10:35

behind the scenes a synchronous between

play10:38

creation and all the other ticketing

play10:40

backend

play10:41

functionality so this would in fact

play10:44

create two separate architectural Quan

play10:47

it would actually break those

play10:49

apart so now ticket creation customer

play10:53

profile and login are all of our

play10:55

customer facing operations those need to

play10:59

be highly available scalable responsive

play11:01

fault

play11:02

tolerant whereas our second quantum here

play11:06

is more backend we have only a few

play11:08

experts so we don't need the scalability

play11:11

the fault tolerance the reliability that

play11:13

we need for our external

play11:16

customers that makes sense but let's

play11:19

take a look at my

play11:20

shirt it depends because what are the

play11:24

tradeoffs associated with this now what

play11:28

we're talking about is a good customer

play11:31

experience separate front end backend

play11:35

parts of the system because of this

play11:37

async which are completely separate one

play11:40

can go down and the other one still

play11:42

lives but the tradeoff is data

play11:47

consistency and data

play11:50

Integrity so these are some of the

play11:52

tradeoffs that we face when we look at

play11:54

an architectural Quantum uh this concept

play11:57

everyone is incredibly important for the

play12:00

partitioning of our systems and

play12:02

understanding the

play12:04

dependencies between complex systems and

play12:07

when some problem happens way down the

play12:10

line it ends up impacting us over here

play12:14

because of those dependencies because of

play12:17

those

play12:18

Quantum so this is an important concept

play12:22

what I'm trying to drive in this

play12:24

particular lesson is take this concept

play12:27

to Heart

play12:29

but understand the corresponding

play12:32

tradeoffs to make that

play12:34

happen so this has been lesson 189 the

play12:37

architectural Quantum and the

play12:39

corresponding tradeoffs associated with

play12:41

those I know fairly complex sort of deep

play12:44

architectural topic but one that is

play12:46

important because try to be pragmatic

play12:49

about everything because everything in

play12:52

software architecture is a tradeoff so

play12:55

thank you so much for listening and stay

play12:57

tuned in two more months days uh for the

play13:00

next lesson in software architecture

play13:03

Monday

Rate This

5.0 / 5 (0 votes)

Ähnliche Tags
Software ArchitectureArchitectural QuantumTrade-offsMark RichardsLesson 189Dynamic CouplingEvolutionary ArchitecturesDistributed SystemsSystem DependenciesCustomer Experience
Benötigen Sie eine Zusammenfassung auf Englisch?