SlideShare a Scribd company logo
Software Architecture
in Practice
Erwann Wernli (@wrnli)
System architect, SBB
Agenda
Your job as an architect
Architecture and organisation
Your toolbox
Your job as an architect
NFR
Technologie
Modularisation
Architecture
Levels of architecture
● Enterprise
● Application
● Component
Modularisation
The system is decomposed in components
Each component has a lifecycle
Components provide and require interfaces
Two components connected form a dependency
Your job
● Group things that have the same lifecycle together
(“What changes together goes together”)
● Expose interfaces that provide capabilities and hide
internal details
● Manage dependencies
● Manage cross-cutting concerns
● (!) Several decompositions are possible!
Well-known principles
● Single-responsibility principle
● Separation of concerns
● Information hiding
● Cohesion/coupling
Examples
Enterprise ● Interfaces between IT domains
● Customer Information - Logistics
Application ● Interfaces between applications
● Shopping Cart App - Product Catalog app
Component ● Interfaces between classes
● e.g. Data access layer - Business Logic
● e.g. Layering
Technology
You realize software systems with various technologies
● Platform technologies, e.g. AWS EC2
● Application technologies, e.g Spring, HTTP
● Development technologies, e.g. IntelliJ, git, Jenkins
Technologies enable various architectural patterns:
● Eventual consistency vs. Strong consistency
● Synchronous vs Event-driven architecture
● …
Your job
● Define architectural patterns
● Select technologies for your architecture
● Balance “cost of ownership” vs “benefit”
● Balance standardisation vs specialisation of technologies
Examples
Enterprise ● Cloud providers, e.g. AWS vs Azure
● Central services, e.g. APIM, IAM
● Java vs C#
Application ● Synchronous vs Asynchronous API
● NoSQL vs Transactional DB
● SPA vs. Server-side Rendering
● Monitoring technology
Component ● Spring Webflux (reactive) vs Spring Function
● Concurrency approach (Threads, Channels, etc.)
● Object-Relational Mapping
NFR
Every application has non-functional requirements,
sometimes implicitly:
● Performance
● Availability,
● Maintainability,
● …
Having 10 customers is not the same as 1 mio. Storing bank
transactions is not the same as storing to-do lists.
Your job
● Figure out how to decompose the system (modularity)
and use technologies to meet the NFRs.
● Balance NFR and costs of development / operations.
● Make the NFR and trade-off explicit
Examples
Enterprise ● Security strategy
● Multi-cloud strategy
Application ● 99.8 availability of application X
● Processing time of operation X < 50ms
Component ● Memory need of algorithm X
Fit for purpose
https://www.enterpriseintegrationpatterns.com/ramblings/86_isthisarchitecture.html
Fit for purpose
Architecture 1 Architecture 2
Modularity Webapp with product search and
shopping cart combined
Product search and shopping cart
as microfrontend
Technology LAMP (Linux/Apache/Mysql/PHP) Java, Spring, Postgres, Docker,
Kafka
NFR Everybody work in the same
codebase (Maintainability)
Single database for search and
shopping cart (Scalability)
Two codebases (Maintainability)
Read model for product search can
scale independently of write model
for shopping cart (Scalability)
Architecture and Teamwork
If development is collaborative, managing collective knowledge is a challenge.
Architecture tends to reflect the organisation (and not the way around)
https://en.wikipedia.org/wiki/Conway%27s_law
Knows
Component A
Knows
Component B
Your job
● Communicate the architecture
● Define guidelines
● Share knowledge
● Align people
● Decentralize decision making
● Co-evolve architecture and organisation
Who’s the architect?
https://architectelevator.com/transformation/agile_architecture/
Approaches to architecture
Retired: ivory tower architect
Tired: hands-on architect
Wired: architect as change agent
Static
Cost-optimization mentality
Dynamic
Business enabling mentality
Your toolbox
Tools
● Architecture styles
● Architecture patterns
● Architecture frameworks *
● Architecture templates **
● UML
● …
Methods
● Modell visually
● Use architecture viewpoints
● Domain-Driven Design
● Record architecture decisions
● Automate architecture checks***
● …
* e.g. AWS Well-architected Framework
** e.g. Arc42, 4+1
*** e.g. ArchUnit
Your My bookshelf
Inspired from : https://architectelevator.com/architecture/architect-
bookshelf/
Enterprise
Application
Component
(and more)
Summary
● There are three main facets to architecture:
modularisation, technology, and NFR
● Architecture and organisation go hand-in-hand in a
modern organisation
● There’s a vast body of knowledge around architecture -
use it!

More Related Content

What's hot

State of Micro Frontend
State of Micro FrontendState of Micro Frontend
State of Micro FrontendYugo Sakamoto
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesRadosław Maziarka
 
Reactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at ScaleReactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at ScaleJonas Bonér
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLCAbdul Karim
 
Microservices architecture enterprise architecture
Microservices architecture enterprise architectureMicroservices architecture enterprise architecture
Microservices architecture enterprise architectureAdhiguna Mahendra
 
Domain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal ArchitectureDomain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal ArchitectureCrishantha Nanayakkara
 
Hexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootHexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootMikalai Alimenkou
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignAndriy Buday
 
A Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidA Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidOutware Mobile
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean ArchitectureRoc Boronat
 
Building applications in a Micro-frontends way
Building applications in a Micro-frontends wayBuilding applications in a Micro-frontends way
Building applications in a Micro-frontends wayPrasanna Venkatesan
 
Micro Frontend Platforms for Kubernetes
Micro Frontend Platforms for KubernetesMicro Frontend Platforms for Kubernetes
Micro Frontend Platforms for KubernetesEntando
 
ITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and Design
ITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and DesignITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and Design
ITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and DesignErginBilgin3
 
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019Codemotion
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaAraf Karsh Hamid
 

What's hot (20)

State of Micro Frontend
State of Micro FrontendState of Micro Frontend
State of Micro Frontend
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 
Reactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at ScaleReactive Microsystems: The Evolution of Microservices at Scale
Reactive Microsystems: The Evolution of Microservices at Scale
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Microservices architecture enterprise architecture
Microservices architecture enterprise architectureMicroservices architecture enterprise architecture
Microservices architecture enterprise architecture
 
Domain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal ArchitectureDomain Driven Design and Hexagonal Architecture
Domain Driven Design and Hexagonal Architecture
 
Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
 
Hexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootHexagonal architecture with Spring Boot
Hexagonal architecture with Spring Boot
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
A Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidA Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on Android
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Building applications in a Micro-frontends way
Building applications in a Micro-frontends wayBuilding applications in a Micro-frontends way
Building applications in a Micro-frontends way
 
Microservices Decomposition Patterns
Microservices Decomposition PatternsMicroservices Decomposition Patterns
Microservices Decomposition Patterns
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Micro Frontend Platforms for Kubernetes
Micro Frontend Platforms for KubernetesMicro Frontend Platforms for Kubernetes
Micro Frontend Platforms for Kubernetes
 
ITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and Design
ITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and DesignITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and Design
ITkonekt 2019 | Robert C. Martin (Uncle Bob), Clean Architecture and Design
 
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
Ivan Jovanovic - Micro Frontends - Codemotion Rome_2019
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 

Similar to Software architecture in practice

Salesforce talk
Salesforce talkSalesforce talk
Salesforce talkLucas Buyo
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Karen Thompson
 
Resume_Aashish_Patel_22_June
Resume_Aashish_Patel_22_JuneResume_Aashish_Patel_22_June
Resume_Aashish_Patel_22_JuneAashish patel
 
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)Lucas Jellema
 
Oracle Forms Modernization Roadmap
Oracle Forms Modernization RoadmapOracle Forms Modernization Roadmap
Oracle Forms Modernization RoadmapKai-Uwe Möller
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyMarcos Labad
 
Intro to Domain Driven Design
Intro to Domain Driven DesignIntro to Domain Driven Design
Intro to Domain Driven DesignYaniv Preiss
 
1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.ppt1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.pptKalsoomTahir2
 
--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppt--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppteddielyndacanay0
 
ArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspectsArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspectsManeesh Innani
 
ArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspectsArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspectsManeesh Innani
 
ModelWriter Presentation International 01-07-2015
ModelWriter Presentation International 01-07-2015ModelWriter Presentation International 01-07-2015
ModelWriter Presentation International 01-07-2015Ferhat Erata
 
MongoDB Schema Design by Examples
MongoDB Schema Design by ExamplesMongoDB Schema Design by Examples
MongoDB Schema Design by ExamplesHadi Ariawan
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technologyEldos Kuriakose
 
Infrastructure Agnostic Machine Learning Workload Deployment
Infrastructure Agnostic Machine Learning Workload DeploymentInfrastructure Agnostic Machine Learning Workload Deployment
Infrastructure Agnostic Machine Learning Workload DeploymentDatabricks
 
ITEA2-ModelWriter Project
ITEA2-ModelWriter ProjectITEA2-ModelWriter Project
ITEA2-ModelWriter ProjectFerhat Erata
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesUlrich Krause
 

Similar to Software architecture in practice (20)

Salesforce talk
Salesforce talkSalesforce talk
Salesforce talk
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
 
Resume_Aashish_Patel_22_June
Resume_Aashish_Patel_22_JuneResume_Aashish_Patel_22_June
Resume_Aashish_Patel_22_June
 
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
One Year in Six Minutes - My Professional Mindshifts (Oracle OpenWorld 2017)
 
Oracle Forms Modernization Roadmap
Oracle Forms Modernization RoadmapOracle Forms Modernization Roadmap
Oracle Forms Modernization Roadmap
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
Intro to Domain Driven Design
Intro to Domain Driven DesignIntro to Domain Driven Design
Intro to Domain Driven Design
 
1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.ppt1588487811-chp-11-c-enterprise-application-integration.ppt
1588487811-chp-11-c-enterprise-application-integration.ppt
 
--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppt--Enterprise-Application-Integration.ppt
--Enterprise-Application-Integration.ppt
 
ArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspectsArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspects
 
ArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspectsArchitectureAndPlatformsAspects
ArchitectureAndPlatformsAspects
 
ModelWriter Presentation International 01-07-2015
ModelWriter Presentation International 01-07-2015ModelWriter Presentation International 01-07-2015
ModelWriter Presentation International 01-07-2015
 
Software Engineering 101
Software Engineering 101Software Engineering 101
Software Engineering 101
 
MongoDB Schema Design by Examples
MongoDB Schema Design by ExamplesMongoDB Schema Design by Examples
MongoDB Schema Design by Examples
 
Resume
ResumeResume
Resume
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
Infrastructure Agnostic Machine Learning Workload Deployment
Infrastructure Agnostic Machine Learning Workload DeploymentInfrastructure Agnostic Machine Learning Workload Deployment
Infrastructure Agnostic Machine Learning Workload Deployment
 
ITEA2-ModelWriter Project
ITEA2-ModelWriter ProjectITEA2-ModelWriter Project
ITEA2-ModelWriter Project
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
 

Recently uploaded

Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion Clinic
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfOrtus Solutions, Corp
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILNatan Silnitsky
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareinfo611746
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessWSO2
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAlluxio, Inc.
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAlluxio, Inc.
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfMeon Technology
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1KnowledgeSeed
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEJelle | Nordend
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
 

Recently uploaded (20)

Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 

Software architecture in practice

  • 1. Software Architecture in Practice Erwann Wernli (@wrnli) System architect, SBB
  • 2. Agenda Your job as an architect Architecture and organisation Your toolbox
  • 3. Your job as an architect NFR Technologie Modularisation Architecture
  • 4. Levels of architecture ● Enterprise ● Application ● Component
  • 5. Modularisation The system is decomposed in components Each component has a lifecycle Components provide and require interfaces Two components connected form a dependency
  • 6. Your job ● Group things that have the same lifecycle together (“What changes together goes together”) ● Expose interfaces that provide capabilities and hide internal details ● Manage dependencies ● Manage cross-cutting concerns ● (!) Several decompositions are possible!
  • 7. Well-known principles ● Single-responsibility principle ● Separation of concerns ● Information hiding ● Cohesion/coupling
  • 8. Examples Enterprise ● Interfaces between IT domains ● Customer Information - Logistics Application ● Interfaces between applications ● Shopping Cart App - Product Catalog app Component ● Interfaces between classes ● e.g. Data access layer - Business Logic ● e.g. Layering
  • 9. Technology You realize software systems with various technologies ● Platform technologies, e.g. AWS EC2 ● Application technologies, e.g Spring, HTTP ● Development technologies, e.g. IntelliJ, git, Jenkins Technologies enable various architectural patterns: ● Eventual consistency vs. Strong consistency ● Synchronous vs Event-driven architecture ● …
  • 10. Your job ● Define architectural patterns ● Select technologies for your architecture ● Balance “cost of ownership” vs “benefit” ● Balance standardisation vs specialisation of technologies
  • 11. Examples Enterprise ● Cloud providers, e.g. AWS vs Azure ● Central services, e.g. APIM, IAM ● Java vs C# Application ● Synchronous vs Asynchronous API ● NoSQL vs Transactional DB ● SPA vs. Server-side Rendering ● Monitoring technology Component ● Spring Webflux (reactive) vs Spring Function ● Concurrency approach (Threads, Channels, etc.) ● Object-Relational Mapping
  • 12. NFR Every application has non-functional requirements, sometimes implicitly: ● Performance ● Availability, ● Maintainability, ● … Having 10 customers is not the same as 1 mio. Storing bank transactions is not the same as storing to-do lists.
  • 13. Your job ● Figure out how to decompose the system (modularity) and use technologies to meet the NFRs. ● Balance NFR and costs of development / operations. ● Make the NFR and trade-off explicit
  • 14. Examples Enterprise ● Security strategy ● Multi-cloud strategy Application ● 99.8 availability of application X ● Processing time of operation X < 50ms Component ● Memory need of algorithm X
  • 16. Fit for purpose Architecture 1 Architecture 2 Modularity Webapp with product search and shopping cart combined Product search and shopping cart as microfrontend Technology LAMP (Linux/Apache/Mysql/PHP) Java, Spring, Postgres, Docker, Kafka NFR Everybody work in the same codebase (Maintainability) Single database for search and shopping cart (Scalability) Two codebases (Maintainability) Read model for product search can scale independently of write model for shopping cart (Scalability)
  • 17. Architecture and Teamwork If development is collaborative, managing collective knowledge is a challenge. Architecture tends to reflect the organisation (and not the way around) https://en.wikipedia.org/wiki/Conway%27s_law Knows Component A Knows Component B
  • 18. Your job ● Communicate the architecture ● Define guidelines ● Share knowledge ● Align people ● Decentralize decision making ● Co-evolve architecture and organisation
  • 20. Approaches to architecture Retired: ivory tower architect Tired: hands-on architect Wired: architect as change agent Static Cost-optimization mentality Dynamic Business enabling mentality
  • 21. Your toolbox Tools ● Architecture styles ● Architecture patterns ● Architecture frameworks * ● Architecture templates ** ● UML ● … Methods ● Modell visually ● Use architecture viewpoints ● Domain-Driven Design ● Record architecture decisions ● Automate architecture checks*** ● … * e.g. AWS Well-architected Framework ** e.g. Arc42, 4+1 *** e.g. ArchUnit
  • 22. Your My bookshelf Inspired from : https://architectelevator.com/architecture/architect- bookshelf/ Enterprise Application Component (and more)
  • 23. Summary ● There are three main facets to architecture: modularisation, technology, and NFR ● Architecture and organisation go hand-in-hand in a modern organisation ● There’s a vast body of knowledge around architecture - use it!