SlideShare a Scribd company logo
SOFTWARE ARCHITECTURE PATTERNS
INGEGNERIA DEL SOFTWARE
Università degli Studi di Padova
Dipartimento di Matematica
Corso di Laurea in Informatica, A.A. 2015 – 2016
rcardin@math.unipd.it
Ingegneria del software mod. B
SUMMARY
 Introduction
 Layered architecture
 Event-driven architecture
 Microservices architecture
2Riccardo Cardin
Ingegneria del software mod. B
INTRODUCTION
 Applications lacking a formal architecture are
generally coupled, brittle, difficult to change
 Modules result in a collection of unorganized
 Big ball of mud antipattern
 Deployment and maintenance problems
 Does the architecture scale? How does application response
to changes? What are the deployment characteristics?
 Architecture patterns
 Helps to manage these aspects, knowing the
characteristics, strengths and weakness
3Riccardo Cardin
Ingegneria del software mod. B
LAYERED ARCHITECTURE
 Most common architecture pattern
 N-tier architecture pattern
 Standard de facto for most JEE applications
 Widely known by most architects and developers
 Reflects the organizational structure found in most IT
companies
 Components are organized into horizontal layers
 Each layer performs a single and specific role
 The most common implementation consists of four layers
 Presentation, business, persistence and database
4Riccardo Cardin
Ingegneria del software mod. B
LAYERED ARCHITECTURE
5Riccardo Cardin
Ingegneria del software mod. B
SEPARATION OF CONCERNS
 Every layer forms an abstraction over a
particular business request
 Components within a specific layer deal only with
logic that pertains to that layer
 i.e. Presentation layer does not need to know how to get
customer data
 Component classification makes easy to build
effective roles and responsibility models
 Limited component scopes make easy to develop,
test and govern , maintain such applications
 Well defined component interfaces
6Riccardo Cardin
Ingegneria del software mod. B
KEY CONCEPTS
 Layers should be closed (layer isolation)
 A request move from one layer to the layer right
below it
 Changes made in one layer generally don’t impact or
effect components in other layers.
 Layers can be open, too
 Imagine a service layer below the business layer that
offers commong services.
 The business layer should go through the service layer to
access the persistence layer.
 Making the service layer open resolve the problem
 Open layers should be very well documented
7Riccardo Cardin
Ingegneria del software mod. B
KEY CONCEPTS
8Riccardo Cardin
Ingegneria del software mod. B
EXAMPLE
9Riccardo Cardin
Example
Consider a request from a business user to retrieve customer
information for a particular individual
Accepts the requests, routes
them to business layer and
display information
Aggregates all the information
needed by the business request
Executes SQL statements to
retrieve the corresponding data
and passes it back up
Store information in a persistent
form
Ingegneria del software mod. B
CONSIDERATIONS
 A good starting point for most application
 It’s a solid general purpose pattern
 Architecture sinkhole anti-pattern
 Requests flow through multiple layers as simple pass-
through
 80-20 proportion of good paths wrt sinkhole path
 Open some layer (but be aware!)
 Tends to lend itself toward monolithic
applications
 It could be an issue in terms of deployment, robustness and
reliability
10Riccardo Cardin
Ingegneria del software mod. B
PATTERN ANALYSIS
11Riccardo Cardin
Characteristic Rating Description
Overall agility
Small changes can be properly isolated,
big one are more difficult due to the
monolithic nature of the pattern
Ease of
deployment
Difficult for larger applications, due to
monolithic deployments (that have to be
properly scheduled
Testability
Very easy to mock or stub layers not
affected by the testing process
Performance
Most of requests have to go through
multiple layers
Scalability
The overall granularity is too bread, making
it expensive to scale
Ease of
development
A well know pattern. In many cases It has a
direct connection with company’s structure
Ingegneria del software mod. B
EVENT-DRIVEN ARCHITECTURE
 Popular asynchronous architeture pattern
 It produces high scalable applications
 Very adaptable: from small to very large applications
 Single purpose, highly decoupled event processing
modules
 Process asynchronously events
 Mediator topology
 A central mediator is used to orchestrate events
throug multiple steps
 Broker topology
12Riccardo Cardin
Ingegneria del software mod. B
MEDIATOR TOPOLOGY
 Multiple steps orchestration
 Events have multiple ordered steps to execute
 Four main types of architecture components
 Event queues
 It is common to have anywhere from a dozen to hundreds
 Message queue, web service point, ...
 Event mediator
 Event channels
 Event processors
 Two types of main events
 Initial event / processing event
13Riccardo Cardin
Ingegneria del software mod. B
MEDIATOR TOPOLOGY
14Riccardo Cardin
Ingegneria del software mod. B
MEDIATOR TOPOLOGY
 Event mediator
 Orchestrates the steps contained in the initial event
 For each step it sends a specific processing event to an event
channel
 Does not perform any business logic
 It knows only the step required to process the initial event
 Implementation through open source hubs
 Spring Integration, Apache Camel, Mule ESB
 More sophisticated, using Business Process Execution
Language (BPEL) engines or Business Process Managers
(BPM)
 BPMN allows to include human tasks
15Riccardo Cardin
Ingegneria del software mod. B
MEDIATOR TOPOLOGY
 Event channel
 Asynchronous communication channel
 Message queues
 Message topic
 An event can be processed by multiple specialized event
processors
 Event processor
 Contains business logic to process any event
 Self conteined, independent, highly decoupled
components
 Fine-grained / Coarse-grained
16Riccardo Cardin
Ingegneria del software mod. B
EXAMPLE
17Riccardo Cardin
Example
Suppose you are insured through a insurance company and you
decide to move.
The initial event is a
relocation event. Steps
are contained inside the
Event mediator.
For each event sends a
processing event
(change, address, recalc
quote) to each event
channel, and waits for the
response.
Ingegneria del software mod. B
BROKER TOPOLOGY
 There is no central mediator
 The message flow is distributed across the event
processors components
 Chain-like fashion, lightweight message broker
 Useful when the processing flow is very simple
 Two main types of component
 Broker: contains all event channels (queues, topics or both)
 Event-processor
 Contains the business logic
 Responsible for publishing a new event
 The event indicates the action is just performed. Some can
be created only for future development
18Riccardo Cardin
Ingegneria del software mod. B
BROKER TOPOLOGY
19Riccardo Cardin
Ingegneria del software mod. B
EXAMPLE
20Riccardo Cardin
Example
Suppose you are insured through a insurance company and you
decide to move.
Customer process
component receives the
event directly. Then, it
sends out and event
change address.
Two processors are
interested in this event.
Both elaborate it, and so
on...
The event chain
continues until no more
events are published.
Ingegneria del software mod. B
CONSIDERATIONS
 Event-driven is complex to implement
 Completly asynchronous and distributed
 Remote process availability, lack of responsiveness,
reconnection logic
 Lack of atomic transactions
 Which event can be run independently? Which granularity?
 Strict need of contracts for event-processors
 Standard data format (XML, JSON, Java Object, ...)
 Contract versioning poilicy
21Riccardo Cardin
Ingegneria del software mod. B
PATTERN ANALYSIS
22Riccardo Cardin
Characteristic Rating Description
Overall agility
Changes are generally isolated and can be
made quickly with small impacts
Ease of
deployment
Ease to deploy due to the decoupled
nature of event-processor components.
Broker topology is easier to deploy
Testability
It requires some specialized testing client
to generate events
Performance
In general, the pattern achieves high
performance through its asynchronous
capabilities
Scalability
Scaling separately event-processors,
allowing for fine-grained scalability
Ease of
development
Asynchronous programming, requires hard
contracts, advanced error handling
conditions
Ingegneria del software mod. B
MICROSERVICES ARCHITECTURE
 A still evolving pattern
 A viable alternative to monolithic and service-
oriented architecutures
 Separately deployed unit
 Easier deployment, increased scalability, high degree of
decoupling
 Service components
 From a single module to a large application’s portion
 Choose the right level of service component granularity is
one of the biggest challenges
 Distributed: remote access protocol
 JMS, AMQP, REST, SOAP, RMI, ...
23Riccardo Cardin
Ingegneria del software mod. B
MICROSERVICES ARCHITECTURE
24Riccardo Cardin
Ingegneria del software mod. B
EVOLUTIONARTY PATHS
 Evolved from issues associated with other
architectures
 From monolithic: open to continous delivery
 Avoid the «monthly deployment» cycles due to tightly
coupling between components
 Every service component is independent developed, tested
and deployed
 From SOA: simplification of the service notion
 SOA is a powerful pattern, that promises to align business
goals with IT capabilities
 Expensive, ubiquitous, difficult to understand / implement
 Eliminates orchestration needs, simplyfing connectivity
25Riccardo Cardin
Ingegneria del software mod. B
API REST-BASED TOPOLOGY
 Useful for websites that expose small services
 Service components are very fine-grained
 Specific business function, independet from the rest
 Only one or two modules
 Microservice
 These services are accessed through and API
 REST-based interface
 Separately deployed web-based API layer
 Google, Amazon, Yahoo cloud-based RESTful web services
26Riccardo Cardin
Ingegneria del software mod. B
API REST-BASED TOPOLOGY
27Riccardo Cardin
Ingegneria del software mod. B
REST-BASED TOPOLOGY
 Accessed directly by fat / web based clients
 User interface is deployed separately
 REST-based interface
 No middle API layer required
 Larger and coarse-grained
 Represent a small portion of the overall business
application
 Common for small to medium-sized business applications
28Riccardo Cardin
Ingegneria del software mod. B
REST-BASED TOPOLOGY
29Riccardo Cardin
Ingegneria del software mod. B
CENTRALIZED MESSAGE TOPOLOGY
 Lightweight centralized message broker
 No trasformation, orchestration or complex routing
 Not to confuse with Service-oriented application
 No REST-based access required
 Found in larger business applications
 Sophisticated control over the transport layer
 Advanced queuing mechanisms, asynchronous
messaging, monitoring, error handling, ...
 Broker clustering and federation
 Avoid the architectural single point of failure and bottleneck
30Riccardo Cardin
Ingegneria del software mod. B
CENTRALIZED MESSAGE TOPOLOGY
31Riccardo Cardin
Ingegneria del software mod. B
SERVICES GRANULARITY
 The main challenge is to defined the right
granularity of service components
 Coarse-grained services
 Not easy to deploy, scale, test and are not loose couples
 Too fine-grained services
 Require orchestration, turning into SOA application
 Require inter-service communication to process a single
request
 Use database communication
 Avoid service-to-service communication
32Riccardo Cardin
Ingegneria del software mod. B
SERVICE GRANULARITY
 Violation of the DRY principle
 Replicate some functionalities to keep independency
across services
 No share of business logic
 Is it the right pattern for your architecture?
 NO, if you still cannot avoid service-component
orchestration
 No definition of transactional unit of work
 Due to the distributed nature of the pattern
 Using transaction framework adds too much complexity
33Riccardo Cardin
Ingegneria del software mod. B
CONSIDERATIONS
 Robustness, better scalability, continous delivery
 Small application component, separately deployed
 Solve many problems of monolithic and SOA architectures
 Real-time production deployments
 Only changed service components can be deployed
 Redirection to an error / waiting page
 Continous availability (hotdeploy)
 Distributed architeture problems
 Contract creation and maintanance, remote system
availability, remote access authentication, ...
34Riccardo Cardin
Ingegneria del software mod. B
PATTERN ANALYSIS
35Riccardo Cardin
Characteristic Rating Description
Overall agility
Changes are generally isolated. Fast and
easy deployment. Loose cooupling
Ease of
deployment
Ease to deploy due to the decoupled
nature of service components. Hotdeploy
and continous delivery
Testability
Due to isolation of business functions,
testing can be scoped. Small chance of
regression
Performance
Due to distributed nature of the pattern,
performance are not generally high
Scalability
Each service component can be separately
scaled (fine tuning)
Ease of
development
Small and isolated business scope. Less
coordination needed among developers or
development teams
Ingegneria del software mod. B
RIFERIMENTI
 Software Architecture Patterns, Mark Richards, 2015, O’Reilly
http://www.oreilly.com/programming/free/software-architecture-
patterns.csp
36Riccardo Cardin

More Related Content

What's hot (20)

PPTX
Software Architecture
Dharmalingam Ganesan
 
PPT
Sdlc models
SivaprasanthRentala1975
 
PDF
Software requirements
Dr. Loganathan R
 
PPTX
Requirements modeling
AnanthiP8
 
PDF
Software process
Dr. Loganathan R
 
PDF
Introduction to SOFTWARE ARCHITECTURE
Ivano Malavolta
 
PDF
Introduction to Design Pattern
Sanae BEKKAR
 
PPTX
Ch1 introduction
software-engineering-book
 
PDF
Software Engineering - chp3- design
Lilia Sfaxi
 
PDF
Feature Driven Development
dcsunu
 
PPTX
Architectural views
Saleem Khan
 
PPT
Use case Diagram
Rahul Pola
 
PPTX
Iterative model
Vaibhav Dash
 
PPTX
Design pattern-presentation
Rana Muhammad Asif
 
PPT
Chapter 01 software engineering pressman
RohitGoyal183
 
ZIP
Unified Process
guy_davis
 
PPTX
Rad model
Dyanara Pritz Menia
 
PPT
CHAPTER 6 REQUIREMENTS MODELING: SCENARIO based Model , Class based moddel
mohamed khalaf alla mohamedain
 
Software Architecture
Dharmalingam Ganesan
 
Software requirements
Dr. Loganathan R
 
Requirements modeling
AnanthiP8
 
Software process
Dr. Loganathan R
 
Introduction to SOFTWARE ARCHITECTURE
Ivano Malavolta
 
Introduction to Design Pattern
Sanae BEKKAR
 
Ch1 introduction
software-engineering-book
 
Software Engineering - chp3- design
Lilia Sfaxi
 
Feature Driven Development
dcsunu
 
Architectural views
Saleem Khan
 
Use case Diagram
Rahul Pola
 
Iterative model
Vaibhav Dash
 
Design pattern-presentation
Rana Muhammad Asif
 
Chapter 01 software engineering pressman
RohitGoyal183
 
Unified Process
guy_davis
 
CHAPTER 6 REQUIREMENTS MODELING: SCENARIO based Model , Class based moddel
mohamed khalaf alla mohamedain
 

Viewers also liked (20)

PPTX
Scala - the good, the bad and the very ugly
Bozhidar Bozhanov
 
PPTX
Design Pattern Strutturali
Riccardo Cardin
 
PPTX
Java- Concurrent programming - Synchronization (part 1)
Riccardo Cardin
 
PPTX
Java- Concurrent programming - Synchronization (part 2)
Riccardo Cardin
 
PPTX
Java - Processing input and output
Riccardo Cardin
 
PPTX
Java Graphics Programming
Riccardo Cardin
 
PPTX
A (too) Short Introduction to Scala
Riccardo Cardin
 
PPTX
Design pattern architetturali Model View Controller, MVP e MVVM
Riccardo Cardin
 
PPTX
Java - Concurrent programming - Thread's advanced concepts
Riccardo Cardin
 
PPTX
Java Exception Handling, Assertions and Logging
Riccardo Cardin
 
PPTX
Java - Collections framework
Riccardo Cardin
 
PPTX
Java - Generic programming
Riccardo Cardin
 
PPTX
Java - Remote method invocation
Riccardo Cardin
 
PPTX
Java - Sockets
Riccardo Cardin
 
PPTX
Design Pattern Architetturali - Dependency Injection
Riccardo Cardin
 
PDF
Presto updates to 0.178
Kai Sasaki
 
PPTX
Java - Concurrent programming - Thread's basics
Riccardo Cardin
 
PPTX
Diagrammi di Sequenza
Riccardo Cardin
 
PPTX
Errori comuni nei documenti di Analisi dei Requisiti
Riccardo Cardin
 
PPTX
Introduzione ai Design Pattern
Riccardo Cardin
 
Scala - the good, the bad and the very ugly
Bozhidar Bozhanov
 
Design Pattern Strutturali
Riccardo Cardin
 
Java- Concurrent programming - Synchronization (part 1)
Riccardo Cardin
 
Java- Concurrent programming - Synchronization (part 2)
Riccardo Cardin
 
Java - Processing input and output
Riccardo Cardin
 
Java Graphics Programming
Riccardo Cardin
 
A (too) Short Introduction to Scala
Riccardo Cardin
 
Design pattern architetturali Model View Controller, MVP e MVVM
Riccardo Cardin
 
Java - Concurrent programming - Thread's advanced concepts
Riccardo Cardin
 
Java Exception Handling, Assertions and Logging
Riccardo Cardin
 
Java - Collections framework
Riccardo Cardin
 
Java - Generic programming
Riccardo Cardin
 
Java - Remote method invocation
Riccardo Cardin
 
Java - Sockets
Riccardo Cardin
 
Design Pattern Architetturali - Dependency Injection
Riccardo Cardin
 
Presto updates to 0.178
Kai Sasaki
 
Java - Concurrent programming - Thread's basics
Riccardo Cardin
 
Diagrammi di Sequenza
Riccardo Cardin
 
Errori comuni nei documenti di Analisi dei Requisiti
Riccardo Cardin
 
Introduzione ai Design Pattern
Riccardo Cardin
 
Ad

Similar to Software architecture patterns (20)

PPTX
Software architecture patterns
Md. Sadhan Sarker
 
PPTX
The Big Picture - Integrating Buzzwords
Alessandro Giorgetti
 
PPTX
Become More Agile By Building The Right Software Architecture
Belatrix Software
 
PDF
Software Architecture - All you need to know
Vincent Composieux
 
PPT
Lec-13_EmergingTrend.ppt................
gamlaamarpriyo
 
PDF
Building Event Driven Systems
WSO2
 
PDF
Software architecture-patterns
pedro
 
PPTX
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
Lviv Startup Club
 
PDF
Software arquitectura patron diseño
pedro
 
PPTX
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
content75
 
PPTX
Understanding Microservices
vguhesan
 
PDF
Modernising Change - Lime Point - Confluent - Kong
confluent
 
PPTX
Architecture patterns overview
Nickleus Jimenez
 
PPTX
Enterprise Application Architectures by Dr. Indika Kumara
Thejan Wijesinghe
 
PPTX
Event Driven Microservices architecture
NikhilBarthwal4
 
PPTX
Event mesh APIDays melbourne September 2019
Phil Scanlon
 
PPT
Ch2_Ed7_Network_Applications.ppt
FernandoLipardoJr
 
PPT
Chapter 2-Architectures23.ppt
MeymunaMohammed1
 
PPT
Chapter 2-Architectures2.ppt
MeymunaMohammed1
 
PDF
09-01-services-slides.pdf for educations
katariraju71
 
Software architecture patterns
Md. Sadhan Sarker
 
The Big Picture - Integrating Buzzwords
Alessandro Giorgetti
 
Become More Agile By Building The Right Software Architecture
Belatrix Software
 
Software Architecture - All you need to know
Vincent Composieux
 
Lec-13_EmergingTrend.ppt................
gamlaamarpriyo
 
Building Event Driven Systems
WSO2
 
Software architecture-patterns
pedro
 
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
Lviv Startup Club
 
Software arquitectura patron diseño
pedro
 
Mykhailo Hryhorash: Архітектура IT-рішень (Частина 1) (UA)
content75
 
Understanding Microservices
vguhesan
 
Modernising Change - Lime Point - Confluent - Kong
confluent
 
Architecture patterns overview
Nickleus Jimenez
 
Enterprise Application Architectures by Dr. Indika Kumara
Thejan Wijesinghe
 
Event Driven Microservices architecture
NikhilBarthwal4
 
Event mesh APIDays melbourne September 2019
Phil Scanlon
 
Ch2_Ed7_Network_Applications.ppt
FernandoLipardoJr
 
Chapter 2-Architectures23.ppt
MeymunaMohammed1
 
Chapter 2-Architectures2.ppt
MeymunaMohammed1
 
09-01-services-slides.pdf for educations
katariraju71
 
Ad

More from Riccardo Cardin (9)

PPTX
SOLID - Principles of Object Oriented Design
Riccardo Cardin
 
PPTX
Design Pattern Comportamentali
Riccardo Cardin
 
PPTX
Design Pattern Creazionali
Riccardo Cardin
 
PPTX
Diagrammi di Attività
Riccardo Cardin
 
PPTX
Diagrammi delle Classi
Riccardo Cardin
 
PPTX
Diagrammi Use Case
Riccardo Cardin
 
PPTX
Introduzione a UML
Riccardo Cardin
 
PPTX
Mvc e di spring e angular js
Riccardo Cardin
 
PPTX
Reactive programming principles
Riccardo Cardin
 
SOLID - Principles of Object Oriented Design
Riccardo Cardin
 
Design Pattern Comportamentali
Riccardo Cardin
 
Design Pattern Creazionali
Riccardo Cardin
 
Diagrammi di Attività
Riccardo Cardin
 
Diagrammi delle Classi
Riccardo Cardin
 
Diagrammi Use Case
Riccardo Cardin
 
Introduzione a UML
Riccardo Cardin
 
Mvc e di spring e angular js
Riccardo Cardin
 
Reactive programming principles
Riccardo Cardin
 

Recently uploaded (20)

PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
Adobe Premiere Pro Crack / Full Version / Free Download
hashhshs786
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
NEW-Viral>Wondershare Filmora 14.5.18.12900 Crack Free
sherryg1122g
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Adobe Premiere Pro Crack / Full Version / Free Download
hashhshs786
 

Software architecture patterns

  • 1. SOFTWARE ARCHITECTURE PATTERNS INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2015 – 2016 [email protected]
  • 2. Ingegneria del software mod. B SUMMARY  Introduction  Layered architecture  Event-driven architecture  Microservices architecture 2Riccardo Cardin
  • 3. Ingegneria del software mod. B INTRODUCTION  Applications lacking a formal architecture are generally coupled, brittle, difficult to change  Modules result in a collection of unorganized  Big ball of mud antipattern  Deployment and maintenance problems  Does the architecture scale? How does application response to changes? What are the deployment characteristics?  Architecture patterns  Helps to manage these aspects, knowing the characteristics, strengths and weakness 3Riccardo Cardin
  • 4. Ingegneria del software mod. B LAYERED ARCHITECTURE  Most common architecture pattern  N-tier architecture pattern  Standard de facto for most JEE applications  Widely known by most architects and developers  Reflects the organizational structure found in most IT companies  Components are organized into horizontal layers  Each layer performs a single and specific role  The most common implementation consists of four layers  Presentation, business, persistence and database 4Riccardo Cardin
  • 5. Ingegneria del software mod. B LAYERED ARCHITECTURE 5Riccardo Cardin
  • 6. Ingegneria del software mod. B SEPARATION OF CONCERNS  Every layer forms an abstraction over a particular business request  Components within a specific layer deal only with logic that pertains to that layer  i.e. Presentation layer does not need to know how to get customer data  Component classification makes easy to build effective roles and responsibility models  Limited component scopes make easy to develop, test and govern , maintain such applications  Well defined component interfaces 6Riccardo Cardin
  • 7. Ingegneria del software mod. B KEY CONCEPTS  Layers should be closed (layer isolation)  A request move from one layer to the layer right below it  Changes made in one layer generally don’t impact or effect components in other layers.  Layers can be open, too  Imagine a service layer below the business layer that offers commong services.  The business layer should go through the service layer to access the persistence layer.  Making the service layer open resolve the problem  Open layers should be very well documented 7Riccardo Cardin
  • 8. Ingegneria del software mod. B KEY CONCEPTS 8Riccardo Cardin
  • 9. Ingegneria del software mod. B EXAMPLE 9Riccardo Cardin Example Consider a request from a business user to retrieve customer information for a particular individual Accepts the requests, routes them to business layer and display information Aggregates all the information needed by the business request Executes SQL statements to retrieve the corresponding data and passes it back up Store information in a persistent form
  • 10. Ingegneria del software mod. B CONSIDERATIONS  A good starting point for most application  It’s a solid general purpose pattern  Architecture sinkhole anti-pattern  Requests flow through multiple layers as simple pass- through  80-20 proportion of good paths wrt sinkhole path  Open some layer (but be aware!)  Tends to lend itself toward monolithic applications  It could be an issue in terms of deployment, robustness and reliability 10Riccardo Cardin
  • 11. Ingegneria del software mod. B PATTERN ANALYSIS 11Riccardo Cardin Characteristic Rating Description Overall agility Small changes can be properly isolated, big one are more difficult due to the monolithic nature of the pattern Ease of deployment Difficult for larger applications, due to monolithic deployments (that have to be properly scheduled Testability Very easy to mock or stub layers not affected by the testing process Performance Most of requests have to go through multiple layers Scalability The overall granularity is too bread, making it expensive to scale Ease of development A well know pattern. In many cases It has a direct connection with company’s structure
  • 12. Ingegneria del software mod. B EVENT-DRIVEN ARCHITECTURE  Popular asynchronous architeture pattern  It produces high scalable applications  Very adaptable: from small to very large applications  Single purpose, highly decoupled event processing modules  Process asynchronously events  Mediator topology  A central mediator is used to orchestrate events throug multiple steps  Broker topology 12Riccardo Cardin
  • 13. Ingegneria del software mod. B MEDIATOR TOPOLOGY  Multiple steps orchestration  Events have multiple ordered steps to execute  Four main types of architecture components  Event queues  It is common to have anywhere from a dozen to hundreds  Message queue, web service point, ...  Event mediator  Event channels  Event processors  Two types of main events  Initial event / processing event 13Riccardo Cardin
  • 14. Ingegneria del software mod. B MEDIATOR TOPOLOGY 14Riccardo Cardin
  • 15. Ingegneria del software mod. B MEDIATOR TOPOLOGY  Event mediator  Orchestrates the steps contained in the initial event  For each step it sends a specific processing event to an event channel  Does not perform any business logic  It knows only the step required to process the initial event  Implementation through open source hubs  Spring Integration, Apache Camel, Mule ESB  More sophisticated, using Business Process Execution Language (BPEL) engines or Business Process Managers (BPM)  BPMN allows to include human tasks 15Riccardo Cardin
  • 16. Ingegneria del software mod. B MEDIATOR TOPOLOGY  Event channel  Asynchronous communication channel  Message queues  Message topic  An event can be processed by multiple specialized event processors  Event processor  Contains business logic to process any event  Self conteined, independent, highly decoupled components  Fine-grained / Coarse-grained 16Riccardo Cardin
  • 17. Ingegneria del software mod. B EXAMPLE 17Riccardo Cardin Example Suppose you are insured through a insurance company and you decide to move. The initial event is a relocation event. Steps are contained inside the Event mediator. For each event sends a processing event (change, address, recalc quote) to each event channel, and waits for the response.
  • 18. Ingegneria del software mod. B BROKER TOPOLOGY  There is no central mediator  The message flow is distributed across the event processors components  Chain-like fashion, lightweight message broker  Useful when the processing flow is very simple  Two main types of component  Broker: contains all event channels (queues, topics or both)  Event-processor  Contains the business logic  Responsible for publishing a new event  The event indicates the action is just performed. Some can be created only for future development 18Riccardo Cardin
  • 19. Ingegneria del software mod. B BROKER TOPOLOGY 19Riccardo Cardin
  • 20. Ingegneria del software mod. B EXAMPLE 20Riccardo Cardin Example Suppose you are insured through a insurance company and you decide to move. Customer process component receives the event directly. Then, it sends out and event change address. Two processors are interested in this event. Both elaborate it, and so on... The event chain continues until no more events are published.
  • 21. Ingegneria del software mod. B CONSIDERATIONS  Event-driven is complex to implement  Completly asynchronous and distributed  Remote process availability, lack of responsiveness, reconnection logic  Lack of atomic transactions  Which event can be run independently? Which granularity?  Strict need of contracts for event-processors  Standard data format (XML, JSON, Java Object, ...)  Contract versioning poilicy 21Riccardo Cardin
  • 22. Ingegneria del software mod. B PATTERN ANALYSIS 22Riccardo Cardin Characteristic Rating Description Overall agility Changes are generally isolated and can be made quickly with small impacts Ease of deployment Ease to deploy due to the decoupled nature of event-processor components. Broker topology is easier to deploy Testability It requires some specialized testing client to generate events Performance In general, the pattern achieves high performance through its asynchronous capabilities Scalability Scaling separately event-processors, allowing for fine-grained scalability Ease of development Asynchronous programming, requires hard contracts, advanced error handling conditions
  • 23. Ingegneria del software mod. B MICROSERVICES ARCHITECTURE  A still evolving pattern  A viable alternative to monolithic and service- oriented architecutures  Separately deployed unit  Easier deployment, increased scalability, high degree of decoupling  Service components  From a single module to a large application’s portion  Choose the right level of service component granularity is one of the biggest challenges  Distributed: remote access protocol  JMS, AMQP, REST, SOAP, RMI, ... 23Riccardo Cardin
  • 24. Ingegneria del software mod. B MICROSERVICES ARCHITECTURE 24Riccardo Cardin
  • 25. Ingegneria del software mod. B EVOLUTIONARTY PATHS  Evolved from issues associated with other architectures  From monolithic: open to continous delivery  Avoid the «monthly deployment» cycles due to tightly coupling between components  Every service component is independent developed, tested and deployed  From SOA: simplification of the service notion  SOA is a powerful pattern, that promises to align business goals with IT capabilities  Expensive, ubiquitous, difficult to understand / implement  Eliminates orchestration needs, simplyfing connectivity 25Riccardo Cardin
  • 26. Ingegneria del software mod. B API REST-BASED TOPOLOGY  Useful for websites that expose small services  Service components are very fine-grained  Specific business function, independet from the rest  Only one or two modules  Microservice  These services are accessed through and API  REST-based interface  Separately deployed web-based API layer  Google, Amazon, Yahoo cloud-based RESTful web services 26Riccardo Cardin
  • 27. Ingegneria del software mod. B API REST-BASED TOPOLOGY 27Riccardo Cardin
  • 28. Ingegneria del software mod. B REST-BASED TOPOLOGY  Accessed directly by fat / web based clients  User interface is deployed separately  REST-based interface  No middle API layer required  Larger and coarse-grained  Represent a small portion of the overall business application  Common for small to medium-sized business applications 28Riccardo Cardin
  • 29. Ingegneria del software mod. B REST-BASED TOPOLOGY 29Riccardo Cardin
  • 30. Ingegneria del software mod. B CENTRALIZED MESSAGE TOPOLOGY  Lightweight centralized message broker  No trasformation, orchestration or complex routing  Not to confuse with Service-oriented application  No REST-based access required  Found in larger business applications  Sophisticated control over the transport layer  Advanced queuing mechanisms, asynchronous messaging, monitoring, error handling, ...  Broker clustering and federation  Avoid the architectural single point of failure and bottleneck 30Riccardo Cardin
  • 31. Ingegneria del software mod. B CENTRALIZED MESSAGE TOPOLOGY 31Riccardo Cardin
  • 32. Ingegneria del software mod. B SERVICES GRANULARITY  The main challenge is to defined the right granularity of service components  Coarse-grained services  Not easy to deploy, scale, test and are not loose couples  Too fine-grained services  Require orchestration, turning into SOA application  Require inter-service communication to process a single request  Use database communication  Avoid service-to-service communication 32Riccardo Cardin
  • 33. Ingegneria del software mod. B SERVICE GRANULARITY  Violation of the DRY principle  Replicate some functionalities to keep independency across services  No share of business logic  Is it the right pattern for your architecture?  NO, if you still cannot avoid service-component orchestration  No definition of transactional unit of work  Due to the distributed nature of the pattern  Using transaction framework adds too much complexity 33Riccardo Cardin
  • 34. Ingegneria del software mod. B CONSIDERATIONS  Robustness, better scalability, continous delivery  Small application component, separately deployed  Solve many problems of monolithic and SOA architectures  Real-time production deployments  Only changed service components can be deployed  Redirection to an error / waiting page  Continous availability (hotdeploy)  Distributed architeture problems  Contract creation and maintanance, remote system availability, remote access authentication, ... 34Riccardo Cardin
  • 35. Ingegneria del software mod. B PATTERN ANALYSIS 35Riccardo Cardin Characteristic Rating Description Overall agility Changes are generally isolated. Fast and easy deployment. Loose cooupling Ease of deployment Ease to deploy due to the decoupled nature of service components. Hotdeploy and continous delivery Testability Due to isolation of business functions, testing can be scoped. Small chance of regression Performance Due to distributed nature of the pattern, performance are not generally high Scalability Each service component can be separately scaled (fine tuning) Ease of development Small and isolated business scope. Less coordination needed among developers or development teams
  • 36. Ingegneria del software mod. B RIFERIMENTI  Software Architecture Patterns, Mark Richards, 2015, O’Reilly http://www.oreilly.com/programming/free/software-architecture- patterns.csp 36Riccardo Cardin