Chap1_DemystifyingSoftwareArchitecture
Chap1_DemystifyingSoftwareArchitecture
Today’s lecture
< 18 >
https://neilabenlakhal.github.io/
Motivational question
Software architecture, which resulted from a joint effort between the ISO and IEEE.
◉“People in the software world have long argued about a definition of architecture. For some it's
something like the fundamental organization of a system, or the way the highest level
components are wired together. Software architecture is the high-level structure of a software
system.”
Excerpt From: Martin fowler HP https://martinfowler.com/architecture/
◉Architecture style describes the relationship of components or building blocks of computerized IS.
◉It provides a useful perspective on organizing code, deployments etc.
◉Several architecture styles appeared throughout the history of software architecture.
◉2 classifications
• Fundamental styles (“old-fashioned”)
1. Unitary architecture
2. client/server architecture
• Modern styles
1. Monolithic architecture (single deployment unit of all code)
2. Distributed architecture (multiple deployment units connected through remote access
protocols)
◉Limitations
• Software systems tend to grow in functionality over time, requiring separation of concerns to maintain
operational architecture characteristics, such as performance and scale.
• 2-tiers architecture
• 3-tiers architecture
• N-tiers architecture
◉When partitioning application logic, layers are a way to organize functionality and components.
◉Layers are logical separations of a software application.
◉Tiers are physical location of the functionality and components.
◉Different layers do not necessarily have to be located on different physical machines.
◉It is possible to have multiple layers on the same machine.
◉For example :
• A 3-layered architecture, the logic may be separated into presentation, business, and data
layers. All layers can be located on the same machine (WAMP)
• A 3-tiered architecture with presentation, business, and data tiers implies that those 3 tiers
have been physically deployed to 3 separate machines and are each running on those separate
machines.
◉“Middleware is the software ‘glue’ that helps programs and databases (which may be on different computers)
work together. Its most basic function is to enable communication between different pieces of software.”
[Gartner Group]
◉Middleware facilitates and manages the interaction between components across heterogeneous computing
platforms.
◉Different types of Middlewares:
• Object-Oriented Middleware : e.g., CORBA
• Message-Oriented Middleware : e.g., Java Message Service
• Event-Based Middleware : e.g., Cambridge Event Architecture
◉These Middlewares build on RPC spec. They focus on how to distribute objects, invoke their methods from a
remote machine. They allow :
• Cross-platform and Cross-language support for clients and server.
◉Non-standard interfaces. Traditional middleware systems and tools suffer from lack of
standardization: they are not compatible. Thus, it is very expensive to build integrated distributed
systems across different middleware platforms.
◉Lack of trust. How to trust the clients? Building integrated systems spawning across different
trust domains can be difficult.
◉Middleware systems are (logically) centralized. Thus, there is no place for them in B2B
Integration scenarios as they should be distributed across all partners. Point to Point integration
does not scale.
◉The software application is divided into logical horizontal layers, with each
layer located on top of a lower layer.
◉Most layered architectures consist of 4 standard layers:
• presentation+ business+persistence + database
◉Where is it used ?
• A good choice for small, simple applications or websites.
Tier
Tier
Tier Tier
◉The topology of the pipeline architecture consists of pipes and filters: pipes form the communication channel between
filters.
◉Where is it used ?
◉The pipeline architecture pattern appears in a variety of applications, for example :
• Electronic Data Interchange (EDI) tools : building transformations from one document type to another.
• ETL tools (extract, transform, and load)
• The flow and modification of data from one DB or data source to another.
• Orchestrators and mediators such as Apache Camel utilize the pipeline architecture to pass information from one step in a
business process to another.
◉Also referred to as the plug-in architecture consisting of 2 architecture components: a core system and
plug-in components. Application logic is divided between independent plug-in components. The core
system the minimal functionality required to run the system.
◉Where is it used ?
• Most of the tools used for developing and releasing software e.g.,: Eclipse IDE, Jenkins…
• Internet web browsers : viewers and other plug-ins add additional capabilities that are not otherwise found in the basic
browser representing the core system.
• Complex applications that leverage complex business rules such as insurance system, taxation system,…
◉Event ?
• The occurrence of something deemed significant in a software application,
such as a state change.
◉Example of an event :
• The placement of a purchase order.
◉It is made up of decoupled event processing components that asynchronously receive and process
events.
◉Event processing components are :
1. Event producers : they create event messages.
2. Event messages : contain data about an event.
3. Event consumers : they process event messages.
4. Event Channels : are message queues used by event messages to reach an event processor.
◉There are 2 topologies within EDA architecture:
• Mediator topology : used when control over the workflow of an event process is required.
• Examples of mediator : Apache ODE and the Oracle BPEL Process Manager.
• Broker topology : used when even processing flow is rather simple and no need for central coordinator.
• Examples of Broker : RabbitMQ
◉There are 2 service-based architectures, namely, SOA (service-oriented architecture) and MSA
(microservice architecture) :
◉Both break an application into small, functionally independent software modules with well-
defined interface.
◉SOA :
◉MSA is a variation of SOA, Some people even refer to the MSA as SOA done right.
◉Each microservice focuses on doing one thing well and they can work together with other
microservices in order to accomplish tasks that are more complex.
◉MSA and SOA architectures emerged, as the result of the shortcomings and
drawbacks of the monolithic architecture.
ENTERPRISE E
ENTERPRISE F
ENTERPRISE D