This slideshow walks through common and popular Architectural design patterns such as Data-Driven Architecture, Micro-Services, Layered Architecture, and Micro-Kernel Architecture. I also go over the pros and cons and in which scenario each architecture is preferable
15. Mediator Topology
● Events processing have multiple steps
that require orchestration
● Four main components:
o Event Queues
o Event Mediator
o Event Channels
o Event Processors
17. The Event Mediator
● For basic use cases:
o Apache Camel
o Spring Integration
o Mule ESB
● More Complex (BPEL):
o Apache ODE
● Even More Complex
o jBPM
19. Broker Topology
● No central event mediator
● Message flows across processors in a
chain like fashion
● Main components:
o Message Broker
o Event Processor
22. Pattern Analysis
● Overall Agility - High
● Ease of Deployment - High
● Testability - Low
● Performance - High
● Scalability - High
● Ease of Development - Low
24. Microkernel
● AKA Plugin Architecture Pattern
● Natural for Product Based Apps
● Consists of:
o Core System
o Plugins
● Can be embedded in other patterns
26. Pattern Analysis
● Overall Agility - High
● Ease of Deployment - High
● Testability - High
● Performance - High
● Scalability - Low
● Ease of Development - Low
28. Microservices
● Evolved from other patterns
● Alternative to Monolithic Applications and
SOA Architecture
● Still evolving
● Many ways to implement
29. Core Concepts
● Separately deployed units
● Very Very small service components
● Single purpose function or an
independent portion of functionality
● Distributed
● Loosely coupled
● Multiple versions are acceptable
● Asynchronous
● No Orchestration
34. DataBase
● Central Database tends to become a
bottleneck
● DB should be segregated among services
- without sharing
● Service publishes conclusions - NOT raw
data
35. Pattern Analysis
● Overall Agility - High
● Ease of Deployment - High
● Testability - High
● Performance - Low
● Scalability - High
● Ease of Development - High
36. Pattern Considerations
Layered Pattern A solid general purpose pattern - best when you are not sure.
Avoid the “Sinkhole Anti-Pattern”
Tends to encourage Monolithic Applications
Event-Driven Relatively complex. Distributed architectures issues must be
addressed, such as remote processor availability, lack of
responsiveness, reconnection logic,
and failure recovery.
No transactions across processors.
Difficult to create and maintain processor contracts
Microkernel Can be embedded and used within other patterns.
Great support for evolutionary design and incremental development.
Should always be the first choice for product-based applications
Microservices Easy to perform real-time production deployments.
Very agile-oriented architecture
Shares complexity issues with data-driven pattern