White Book Software Architecture PDF
White Book Software Architecture PDF
to know
ARCHITECTURE
White book
Vincent Composieux
www.eleven-labs.com
@vcomposieux
SUMMARY
● Introduction
● Architectural professions
○ Application Architect
○ Solution Architect
○ Enterprise Architect
● To conclude
○ Information Resources
○ The final word
● Acknowledgements
3
INTRODUCTION
WHAT WIKIPEDIA
SAYS
“ Software architecture1 refers to the high level
structures of a software system, the
discipline of creating such structures, and
the documentation of these structures. These
structures are needed to reason about the
software system. ”
This definition, although broad, is not sufficient to understand in detail
what software architecture is.
This book aims to help you understand what software architecture is,
who the architects are and what their roles are. Finally, we will see
some design patterns2 that can be applied in our web environment.
After several years of experience with various clients, Eleven Labs has
acquired the software architecture expertise necessary to successfully
complete projects.
1 https://en.wikipedia.org/wiki/Software_architecture
2 A design pattern is a reusable logic for solving a problem
4
INTRODUCTION
Moreover, these architectures evolve with time and the technologies
that come out.
5
POSITIONING
AND
ORGANIZATION
POSITIONING
BUSINESS
PROJECT
TEAM
TEAM
PRODUCT
ENGINEERS
OWNERS
ARCHITECT
TECH LEADS SERVICES
OPERATIONAL
TEAM
OTHER
TEAMS ARCHITECTS
?
ENGINEERS
7
POSITIONING
○ The operational team: also often called the operating team, it is the
team that manages the platform on which the project will be
hosted. It is therefore important that the chosen architecture can
best match the available infrastructure. The more consistent they
are, the better the application will work in production.
This file will be shared with the development teams to challenge the
selected solutions as well as the operational teams to enable them to
set up the most suitable infrastructure for the project.
The objective being that the teams are satisfied to work on the selected
solutions and that they correspond perfectly to the need.
8
ORGANIZATION
DEFINE AUDIT / FOLLOW PREPARE
COMMUNICATE COMMUNICATE
9
ORGANIZATION
However, once this phase is over, its role does not end there.
1 https://www.owasp.org
10
ORGANIZATION
→ Project evolution phase
Once the project is in production, he must anticipate the evolution
needs on the project by exchanging with the teams, mainly business
teams.
The purpose of this is to avoid twisting a tool so that it meets the new
need, which also avoids subsequently a technical debt1 on the project.
The initialized architecture file must then be updated with the new
choices.
1 https://en.wikipedia.org/wiki/Technical_debt
11
ORGANIZATION
He must then be able to take time to compare two competing tools or
technologies in order to get out the positive and negative aspects,
according to different contexts of use. This is what will then make the
difference on the projects on which he will wish to implement these
tools.
These tools are often pushed by web giants1 such as Google, Facebook,
Netflix or Airbnb and Uber who encounter big problems of high traffic
or large structure on their projects.
1 https://en.wikipedia.org/wiki/Big_Four_tech_companies
12
REQUIREMENTS TO BE MET
When defining an architecture, and more globally when developing
features, the following key points should always be kept in mind:
DATA
EXCHANGE AND STORAGE
The data that passes through your application is an important source of
user response time.
EXECUTION
TIME
The processing time of the features you write also has a strong impact
on the user experience.
13
REQUIREMENTS TO BE MET
NETWORK
BANDWIDTH & SECURITY
In connection with the data passing through your network, also pay
attention to the cost that this can have on your infrastructure (data
flows, backups, etc.) as well as the exposure of these.
PHYSICAL
RESOURCES
Your application, whether hosted in the cloud or not, uses physical
resources that have a defined capacity.
NOT TO MENTION,
THE COST
Finally, the total cost of your architecture, with all these components
combined, is often an important element in decision making.
14
ARCHITECTURAL
PROFESSIONS
ARCHITECT PROFESSIONS
SOFTWARE
ARCHITECT
Specialist on a specific technology.
It describes how the application should be developed and
deployed.
SOLUTION
ARCHITECT
Practices several technologies.
He knows how to organize complex applications.
ENTERPRISE
ARCHITECT
Has a strong experience on the organization of several
applications in an information system.
16
ARCHITECT PROFESSIONS
The previous page aims to summarize the different architectural
professions that you may encounter today when working with
architects.
He may have to exchange with a software architect who can give his
point of view as a technical expert on his technology.
It is also responsible for providing the tools that will best suit the
projects in its application park. It's always better when you can share
the same tool, the same license, for all applications.
17
ARCHITECT PROFESSIONS
As the roles are not always clear, we will now go into more detail on the
three architectural roles identified according to the different project
phases presented previously in order to describe their typical scope of
intervention.
✎
This is not a reference but rather a broad vision to help you
better understand the roles of each on a daily basis.
18
SOFTWARE ARCHITECT
SPECIALIST
ON A SPECIFIC TECHNOLOGY.
→ Start-up phase
During this phase, its objective will be to:
○ Define the good practices to use on the project: the respect of PSR
rules, good Symfony practices, designs patterns to use, etc....
○ Define the design patterns adapted to the different needs of the
application.
○ Define the procedures and tools for the industrialization of the
project: unit tests, functional tests as well as the delivery
(deployment) of the application.
○ Ensure that each developer has a good technical understanding of
the project and follows good practices.
19
SOFTWARE ARCHITECT
→ Development phase
He will then have to ensure that the technology and possibly the
framework selected are used correctly by the teams. The application
must be fully functional and operational.
The rendering to the end user must be correct, which implies a good run
on the server side but also that interactions with third party tools like
databases are not a problem.
→ Evolution phase
Once the project is in production, it must anticipate the application's
new functionalities so that they can be implemented without technical
debt. It is also the right time to simplify procedures that have become
too tedious to maintain.
20
SOLUTION ARCHITECT
ORGANIZE
SEVERAL TECHNOLOGIES
→ Start-up phase
At the start of the project, he has the complex task of choosing the
most appropriate technologies to best meet the need, but also to be
careful to have the human resources necessary to use these
technologies.
Once the technologies have been selected, it should also describe the
different hardware resources required for each technology.
21
SOLUTION ARCHITECT
→ Development phase
Once development has begun, the solution architect ensures that the
technical teams do not encounter any problems in using the various
software components selected. He then takes feedback from the teams
and it may happen that he questions a technology: this is not the ideal
case but it is necessary to know how to adapt and solve problems
before they happen.
→ Evolution phase
22
ENTERPRISE ARCHITECT
PROJECT 3 PROJECT 4
PROJECT 1
ORGANIZE
PROJECTS IN AN
ENTERPRISE IS
PROJECT 2
23
ENTERPRISE ARCHITECT
It must also identify third-party solutions that meet the needs of most
applications and have common bricks between them, which avoids
making mapping more complex.
✎
The enterprise architect differs from software and solution
architects because he manages the complete architecture of an
information system, and is not restricted to its technical aspect
only.
24
SOME
APPLICATION
DESIGN PATTERNS
OBSERVER
APPLICATION
Notify Listen
SERVICE 2
EVENT
SERVICE 1 CONTROLLER
SERVICE 3
Listen
Let's start with a simple design pattern and at the same time very often
implemented in different frameworks today.
26
OBSERVER
→ Pros
○ Service-oriented code: each portion of business code
is cut into a dedicated service, which reacts to event
updates
→ Cons
○ In some contexts without business complexity, using
this pattern can complicate understanding the code
27
HEXAGONAL ARCH.
Web APPLICATION
App
N
TIO
R
HE
TA
OT
ER
TE
EN
Mobile
PT
P
ES
DA
App
PR
A
AD
A
BUSINESS CODE
Domain
A
R
TE
DA
WE
PostgreSQL
E
NC
AP
PT
BS
E
AD
ER
IST
ER
Rest API
VIC
RS
PE
ES
Thus, you will have to write abstraction layers for the following
elements :
28
HEXAGONAL ARCH.
→ Pros
○ Allows to keep the business code completely
agnostic of the different layers
→ Cons
○ From an architecture point of view, this
implementation can appear complex at first glance
1 https://fr.wikipedia.org/wiki/YAGNI
29
SOME
SOLUTION
DESIGN PATTERNS
MICROSERVICES
WEB MOBILE
APP APP
31
MICROSERVICES
→ Pros
○ A business need corresponds to a project: the code
within each project is therefore concentrated to meet
a single business need
→ Cons
○ Need to spend more time on industrialization and
deployment tasks as they vary from one department
to another
32
EVENT DRIVEN
WEB
APP Database
EVENT
SERVICE 1 BUS
SERVICE 2
1 https://kafka.apache.org
2 https://www.rabbitmq.com
33
EVENT DRIVEN
→ Pros
○ This pattern makes it possible to clarify the
exchanges: the application bus centralizes indeed all
the flows of events which can take place
→ Cons
○ Care must be taken to avoid potential loss of events /
messages / status changes. Requires retry and
network error mitigation as much as possible
34
MICRO FRONTENDS
HTML 5
CustomEvents
WEB APP
DB 1 DB 2 DB 3
35
MICRO FRONTENDS
→ Pros
○ Allows more flexibility: feature development and
deployments are separate for each service
→ Cons
○ Complexifies feature development and deployment
workflows
36
FAAS - SERVERLESS
FaaS Platform
Execution
EVENT / SERVICE
After seeing some patterns that allow you to cut your application code
into business service, the trend today is to "Function as a Service"
(FAAS), also called "Serverless". Don't get me wrong, your code will be
executed on a server, but the hosting platform would abstract you from
it.
37
FAAS - SERVERLESS
→ Pros
○ No system administration required: this is fully
managed by your platform, you only have to deploy
your functions
→ Cons
○ The functions are limited in time (often 5 minutes)
and in memory consumption therefore not suitable
for long or very heavy treatments
38
TO
CONCLUDE
INFORMATION RESOURCES
In order to deepen the different patterns seen in this book, I invite you to
visit the following websites:
→ Pattern: Microservices
Microservices.io: http://microservices.io
40
THE FINAL WORD
I hope I have been able to demonstrate, through his role, his interactions
with the different teams, the concepts he must defend on his projects as
well as the various patterns he may have to put in place that the
architect plays an important role in the success of web applications.
I also emphasize that all concepts cited in this book must be known to
every developer. It is very important to always keep in mind the
performance and security of the application (runtime/responses, data
transferred, etc...).
Finally, the few design patterns presented in this book are only a small
sample, I invite you to discover others because it will allow you to cover
a broader scope of technical answers.
● E-mail : [email protected]
● Twitter: @vcomposieux
If you would like more assistance, do not hesitate to contact Eleven Labs
to study your projects.
41
ACKNOWLEDGEMENTS
Eleven Labs
15 Avenue de la Grande Armée
75116 Paris
France
www.eleven-labs.com
[email protected]
+33 1 82 83 11 75
43