5. SOA
Service
describes
End Point Exposes
Messages Sends/Receives
Contracts
Binds to
Service
Consumer
implements
Policy governed by
Sends/Receives
Adheres to
Component
Relation
Key
Understands
Serves
27. Subscribed/
pulled data
Pull data
Data backend
Endpoint
Out
Load
Report
Ingest
Clean
Join
Transform
Transpose
Produce
reports
Report
Endpoint
Request
Raw data
ODS/DM
SQL endpoint
SQL endpoint
Landing area
Service
Aggregated Reporting
40. הַ״מ-ָהיָה ֶּׁש,ֶּׁהי ְהִּי ֶּׁש הּוא,
הַּומ-ה ֲָשעַנ ֶּׁש,ה ֶָּׁשעֵּי ֶּׁש הּוא;
ין ֵּאְוָלכ-שָדָח,שֶּׁמ ָשַה תַח ַת.״
ט פסוק א פרק קהלת
"What has been will be again,
what has been done will be done again;
there is nothing new under the sun."
Ecclesiastes 1:9
Editor's Notes
Software architecture is the collection of the fundamental decisions about a software product/solution designed to meet the project's quality attributes (i.e. requirements). The architecture includes the main components, their main attributes, and their collaboration (i.e. interactions and behavior) to meet the quality attributes. Architecture can and usually should be expressed in several levels of abstraction (depending on the project's size).
If an architecture is to be intentional (rather than accidental), it should be communicated. Architecture is communicated from multiple viewpoints to cater the needs of the different stakeholders.
Architectural decisions are global tied to quality attributes
Designs decisions are local –tied to functionality
”The system being produced will tend to have a structure the mirrors the structure of the group that is producing it
(Events vs. Commands)
Immutable data – things that already occurred
Hector Garcia-Molina and Kenneth Salem defined the term Saga back in 1987 as a way to solve the problem of long lived database transactions. Hector and Kenneth described a Saga as a sequence of related small transactions. In a Saga the coordinator (database in their case) makes sure that all of the
involved transactions are successfully completed. Otherwise, if the transactions fails the coordinator runs compensating transactions to amend the partial execution. What made sense for databases makes even more sense for service interactions in SOA. We can break a long service interaction into individual actions or activities and compensations (in case of faults and errors
ODS – Operational Data Store
The Erlang view of the world, as Joe Armstrong, co-inventor of Erlang summarized in his PhD thesis:[11]
Everything is a process.
Processes are strongly isolated.
Process creation and destruction is a lightweight operation.
Message passing is the only way for processes to interact.
Processes have unique names.
If you know the name of a process you can send it a message.
Processes share no resources.
Error handling is non-local.
Processes do what they are supposed to do or fail.
Architecture transcends technology but technology is meaningful
Docker