Software Architecture Fundamentals - 5 : Architecture patterns
Notes from the Software Architecture Fundamentals a video series on Safari books online - continued.
History of Patterns movement
Design patterns in Architecture Book by Christopher Alexander 1977
GoF book 1984
Traditional layered architecture
Presentation Layer Business Layer Persistence Layer Database Layer
Layers are closed.
Go from one layer to another.
Information flows down. Never up.
Separation of concerns.
Layers of isolation
Database can be changed from DB2 or Oracle. First two layers won’t change.
Persistence Layer changes, it does not affect other layers.
Active record mixes Persistence and Business layers.
Architecture sinkhole. Too many layers of abstraction.
Variations and hybrids, services layer comes between Business and Persistence layers. It is open, it can go direct to Database layer.
presentation to managed bean -> business object ->
Good general purpose architecture - particularly with J2EE
Easy to implement, test and govern
Good starting point for most systems
Not suitable for a Trading application
Event-driven architecture - EDA/SEDA
3 types of topology
Event processor topology
Allows orchestration, mediation, transformation
Broker topology
Brokerless topology
Example
Fire and forget
Highly decoupled and distributed
Highly scalable
High degree of complexity
Good for event-based business models and business processes
Not good for processes which require high degree of data sharing, orchestration, and reuse
Service-oriented architecture
business services template
Placing an order, a trade. Abstract, not linked to any tech - BPEL, WSDL, XML
enterprise services template
CreateCustomer CalculateQuote
Granularity is the hard part
application services template
addDriver addVehicle getInventoryCount
infrastructure services template
writeAuditLog checkUserAccess writeErrorLog singleSignon
message bus
process choreography
service orientation
service registry
protocol transformation
message enhancement
message transformation
example
Good pattern for understanding and implementing business processes and services
very high level of complexity
difficult to implement due to complex tools, hype, misconceptions, and heavy business user involvement
SOA is a pattern, not an implementation of a vendor.
good for pattern for large, complex, heterogeneous businesses that have a large number of common services (e.g., insurance)
References
Wikipedia (Event Driven Architecture )
Creating an Effective SOA Service Taxonomy
Don’t forget it’s all about data
Data is spread around the enterprise, there is no system of record. Whose’s data is right? Users are protective about data. Data consolidation is difficult to do.