Errata

Software Architecture: The Hard Parts

Errata for Software Architecture: The Hard Parts

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed Page 57
First sentence of last paragraph

"...the more services communicate with one other to complete..." should probably be either "with each other" or "with one another"

Andrew Ingraham  Sep 13, 2022 
Printed Page 57
2nd paragraph

Missing closing brace:

"...illustrated in Figure 3-9 (the details of these..."

Michael Cook  Mar 13, 2023 
Printed Page 117
Example-5.8

To count the number of dependencies for a single domain,

total_count = incoming_count + outgoing_count

should be changed as

total_count += incoming_count + outgoing_count

since there can be multiple files per domain and the first formula will always use the total_count for the last file.

Orhan Ozalp  Jan 04, 2024 
Printed Page 126
Table 5-18

Target namespace column has
aa.shared.login
which should be
ss.shared.login

Christian Salway  Apr 18, 2023 
Printed Page 147
Figure 6-13

If the arrows in Fig 6-13 represent dependencies, then the arrows should go from 'view' to the two tables (reverse the direction), as the view references the table.

chrisH  Aug 24, 2022 
Printed Page 161
para 3


I think it would read better without these 3 haves.
Remove words surrounded by --
"Beginning around 2005, a revolution --has-- occurred in database technologies. Unfortunately, the number of products that --have-- emerged during this time have created a problem known as The Paradox of Choice. --Having-- such a large number of products and choices means having more trade-off decisions to make."

Result
"Beginning around 2005, a revolution occurred in database technologies. Unfortunately, the number of products that emerged during this time have created a problem known as The Paradox of Choice. Such a large number of products and choices means having more trade-off decisions to make."

chrisH  Sep 14, 2022 
Printed Page 183
fig 6-37

The arrows from box Aggregate identifier are almost invisible in the printed copy and should be darker like the other dashed arrows.

chrisH  Sep 14, 2022 
Printed Page 188
Figure 7-1

I think that Figure 7-1 is confusing and would be better if the top arrow went from right to left (rather then top down)
and the bottom arrow went from left to right (rather than bottom up)

chrisH  Aug 24, 2022 
Other Digital Version 257
Second paragraph

Thank you for the excellent book, it has been extremely insightful and useful.

I had a question regarding the sidecars. Based on your statement

"Must implement a sidecar per platform"

I think you imply that sidecars is a library which is used for in-process communication. However, reading other articles seems like sidecar is service running on the same machine as the micro-service. Hence, there is inter-process communication.

If you can clarify. I would deeply appreciate it.

Darren Mark  Apr 15, 2024 
Printed Page 260
para 1

"However, one major problem with the diagram illustrated in Figure 9-8 is that of domain management responsibility. "
would read better as
However, one major problem with the OPTION illustrated in Figure 9-8 is that of domain management responsibility.

chrisH  Sep 14, 2022 
Printed Page 273
Figure 9-17

The arrow from the text "Customer Profile Service ..." points to the table Profile, not the Customer Profile Service

chrisH  Aug 24, 2022 
Printed Page 280
paras 2 and 3

Services own tables not the other way around. "that table will be assigned ownership to that service" and "only one service is ever assigned an owner"
The text contains confusing repetition that should be removed too.

Replace
"When only one service writes to a table, that table will be assigned ownership to that service. Furthermore, services requiring read-only access to a table in another bounded context cannot directly access the database or schema containing that table.
Per the database team, table ownership is defined as the service that performs write operations on a table. Therefore, for single table ownership scenarios, regardless of how many other services need to access the table, only one service is ever assigned an owner, and that owner is the service that maintains the data."

with
"When only one service writes to a table, the service is assigned as the owner of that table, regardless of how many other services need to read from that table.
Services requiring read-only access to a table in another bounded context cannot directly access the database or schema containing that table."

chrisH  Sep 14, 2022 
Printed Page 283
para 4

Addison and Sydney met with Taylen to discuss the data access issue and to see if Taylen could modify the expert assignment algorithms to reduce the >>nimber<< of database calls...
nimber should be number

chrisH  Aug 24, 2022 
Printed Page 283
1

I appreciate your work. It's amazing.
I encounter some problem regarding Distributed Data Access chapter.

Why is not mentioned Data synchronization jobs among patterns - one service running outside both related services?

We have two independent services
one code tables in DB
another service using it's own database
We need synchronize database for the 2nd service via config API and provide data according to code tables from DB.

Lukas J.  Jan 25, 2024 
Printed Page 284
main para 2

Should
"This chapter describes the various ways services can gain read access to data they don’t own—in other words, outside the bounded context of the services needing the data."
read ?
"This chapter describes the various ways services can gain read access to data they don’t own—in other words, outside the bounded context of the services OWNING the data."

chrisH  Sep 19, 2022 
Printed Page 292
last para

I think TCI should be TCP
"If the TCI/IP broadcast and lookup range is too broad, it can take a long time to establish the socket-level handshake between services."
should be
"If the TCP/IP broadcast and lookup range is too broad, it can take a long time to establish the socket-level handshake between services."

chrisH  Sep 19, 2022 
Printed Page 316
Figure 11-14

I think that the figure could be improved to link the text before it with the summary below it.
Suggested modification below (paste into a fixed font editor to see it better) which ties in better with the text.

Implementation Complexity
^
| Choreography
| .
| . Orchestration
| . +
| . +
| +
|+ .
| .
| .
|.
+-------------------------> Semantic Complexity

chrisH  Sep 19, 2022 
Printed Page 325
figure 12-1 caption

ISO is generally accepted to stand for International Standards Organization.
I think the caption
"Figure 12-1. Legend for ISO architecture interaction diagrams"
should read
"Figure 12-1. Legend for isomorphic architecture interaction diagrams"

chrisH  Sep 19, 2022 
Printed Page 328
2nd paragraph

"(from a possibly a wide variety of both..."

Michael Cook  Mar 13, 2023 
Printed Page 344
para 2

Since myriad has a similar meaning to many, I think
"Asynchronicity is appealing as a performance boost, yet the architect may still try to maintain transactional integrity, which has many myriad failure modes. "
would be better and simpler just as
"Asynchronicity is appealing as a performance boost, yet the architect may still try to maintain transactional integrity, which has very many failure modes. "

chrisH  Sep 19, 2022