هادی احمدی در این سخنرانی به اشتباهات رایج در یکپارچهسازی #BC (#BoundedContext) ها و عواملی که باعث وابستگی BC ها به یکدیگر و از بین رفتن استقلال آنها می شود، میپردازد.
12. 12
Sync & Pull-Based Communications
Auction
I want to place a bid
Parties
Has her account been approved?
Yes !
Done !
13. 13
Async & Push-Based Communications
Auction
I want to place a bid
Parties
Someone has
been confirmedDone !
14. 14
Pull vs Push
Auction
Parties
Has her account been approved?
Yes ! Auction
PartiesSomeone has
been confirmed
Optimize for AutonomyOptimize for Authority
20. 20
Micro Frontends
"An architectural style where independently deliverable
frontend applications are composed into a greater whole"
Micro Frontend A
Micro Frontend B
Micro Frontend C
A
B C
25. 25
Versioning Strategies
Avoid making Breaking Changes
Defer breaking changes as Long as Possible
Use Tolerant Readers
Wisely Choose Your Versioning Strategy
26. 26
Coupling To Internal Process of BCs
Sales
Order Initiated
Fulfilment
Order Item
AddedOrder Item
Added
Order Placed
Start Fulfilment
Process
{
OrderId : 1
}
First, we are allowing external parties to view and bind to internal implementation details. I have to be extremely careful that I don’t break parts of the schema used by other services. (Hiding Implementation Details)
Second, my consumers are tied to a specific technology choice . (Loose Coupling)
If the warehouse, registration UI, and call center UI all need to edit customer information, I need to fix a bug or change the behavior in three different places, and deploy those changes too . (Cohesion)
First, we are allowing external parties to view and bind to internal implementation details. I have to be extremely careful that I don’t break parts of the schema used by other services. (Hiding Implementation Details)
Second, my consumers are tied to a specific technology choice . (Loose Coupling)
If the warehouse, registration UI, and call center UI all need to edit customer information, I need to fix a bug or change the behavior in three different places, and deploy those changes too . (Cohesion)
First, we are allowing external parties to view and bind to internal implementation details. I have to be extremely careful that I don’t break parts of the schema used by other services. (Hiding Implementation Details)
Second, my consumers are tied to a specific technology choice . (Loose Coupling)
If the warehouse, registration UI, and call center UI all need to edit customer information, I need to fix a bug or change the behavior in three different places, and deploy those changes too . (Cohesion)
DRY is what leads us to create code that can be reused. We pull duplicated code into abstractions that we can then call from multiple places.
The downside to this orchestration approach is that the customer service can become too much of a central governing authority.
Can result in a small number of smart “god” services telling anemic CRUD-based services what to do. You do need to do extra work to monitor and track the processes across system boundaries, however.
systems that tend more toward the choreographed approach are more loosely coupled, and are more flexible and amenable to change.
The downside to this orchestration approach is that the customer service can become too much of a central governing authority.
Can result in a small number of smart “god” services telling anemic CRUD-based services what to do. You do need to do extra work to monitor and track the processes across system boundaries, however.
systems that tend more toward the choreographed approach are more loosely coupled, and are more flexible and amenable to change.
The downside to this orchestration approach is that the customer service can become too much of a central governing authority.
Can result in a small number of smart “god” services telling anemic CRUD-based services what to do. You do need to do extra work to monitor and track the processes across system boundaries, however.
systems that tend more toward the choreographed approach are more loosely coupled, and are more flexible and amenable to change.
The downside to this orchestration approach is that the customer service can become too much of a central governing authority.
Can result in a small number of smart “god” services telling anemic CRUD-based services what to do. You do need to do extra work to monitor and track the processes across system boundaries, however.
systems that tend more toward the choreographed approach are more loosely coupled, and are more flexible and amenable to change.
The downside to this orchestration approach is that the customer service can become too much of a central governing authority.
Can result in a small number of smart “god” services telling anemic CRUD-based services what to do. You do need to do extra work to monitor and track the processes across system boundaries, however.
systems that tend more toward the choreographed approach are more loosely coupled, and are more flexible and amenable to change.
Avoid breaking changes and the need to version by understanding Postel’s Law and using tolerant readers.
Avoid breaking changes and the need to version by understanding Postel’s Law and using tolerant readers.
The downside to this orchestration approach is that the customer service can become too much of a central governing authority.
Can result in a small number of smart “god” services telling anemic CRUD-based services what to do. You do need to do extra work to monitor and track the processes across system boundaries, however.
systems that tend more toward the choreographed approach are more loosely coupled, and are more flexible and amenable to change.
scaling frontend development so that many teams can work simultaneously on a large and complex product is even harder.