SlideShare a Scribd company logo
1 of 52
Lecture 02 
Architecture
Agenda 
 Building blocks (recap) 
 Architecture 
 Monolithic Architecture 
 Service Oriented Architecture 
 Layering
Reading 
 Brown 1, 2, 3 og 4 
 Pattern: Monolithic Architecture 
 Decomposing applications for scalability and 
deployability 
 The Scale Cube
Building Blocks
Building Enterprise Applications 
 Building computer systems is hard 
Design 
Pattern 
Architecture 
Middleware 
Frameworks 
OO 
Programming
Architecture 
 Shared understanding of system’s design by the expert 
developers on a project 
– Highest-level breakdown of a system into its parts 
– Decisions that are hard to change 
 Architecture influences design 
of components, technology, 
performance and middleware 
 There are always options
Object Oriented Programming 
 OO is key to development of systems 
– Design for reusability, flexibility and performance 
“OO design is more important than specific technologies, such as J2EE. We 
should try to avoid letting our technology choices, such as J2EE, constrain 
our ability to use true OO design” 
– Rod Johnson “If the design is good, there is no code” 
– Jónas Þór, Senior Betware developer 
 One of the biggest hurdles for developers 
– Each component should be simple with simple task 
– Involves understanding of interaction of parts
Design Patterns 
 Design using known ideas 
– Design patterns are standard solutions to common problems 
in software design 
– Systematic approach for problems that reoccur in software 
development 
– Patterns have name and definitions - not language dependant 
 History 
– Landmark book from 1995: Design Patterns: Elements of 
Reusable Object-Oriented Software Gang of Four (GoF)
Middleware 
 Enterprise system are built on middleware 
– Can cover a broad spectrum of software and generally sits 
between an application and an operating system 
– For example, databases, application servers, web servers, 
messaging systems, transaction monitors 
– “The plumbing” – the infrastructure 
 Horizontal market 
– Solves common problems – not specific business requirements 
– Low-level system
Frameworks 
 Frameworks define the support structure for how to 
organize and build systems 
– Can improve productivity 
– We can use existing frameworks or build our own 
 Frameworks implement common problems 
– Developers extend and add their business requirements 
 Framework design 
– Use inheritance, inversion of control, interfaces and helper 
classes 
– Implement design patterns
QUIZ 
Which of the following statement is not true? 
A) Design patterns are solutions to common problems 
B) Object oriented programing is good for general problems 
C) Frameworks are used to increase productivity 
D) Middleware can solve business related problems
QUIZ 
Which of the following statement is not true? 
A) Design patterns are solutions to common problems 
B) Object oriented programing is good for general problems 
C) Frameworks are used to increase productivity 
D) Middleware can solve business related problems 
✔
Architecture
Architecture 
 Means different things to different people 
– Big picture, 
things difficult to change, 
– a plan, 
a blueprint…
Architecture – noun 
The decomposition of a 
product into a collection of 
components/modules and 
interactions 
Structure
Architecture – verb 
Understanding what you 
need to build, create a 
vision and making the right 
decisions 
Vision
Types of Architecture 
 There are many different architectures 
– Network, security, data, hardware, enterprise… 
 All have structure and vision 
– All have multiple constraints such as cost, time, legal, regulatory
Application Architecture 
 Application is the focus 
– Contains classes, components, design patterns, frameworks, 
libraries 
– Lower-level aspects of software design 
– Concerned with sign technology stack and layering 
Client 
REST Services 
EJB3 
Hibernate 
Oracle 
Client 
REST layer 
Service layer 
Domain Layer 
Database layer
System Architecture 
 Focus on multiple applications across a number of tiers 
and technologies 
 Interactions between applications 
 Overall structure of the end-to-end software system at 
high-level 
 Mix of software and hardware
Software Architecture 
 The combination of application and system architecture 
 Includes the technical practices to build the software 
– Design Principles, Programming language 
Design patterns, Unit testing 
and much more… 
 Must also include aspects like 
– Cross-cutting concerns such as logging and exception handling 
Security, Performance, Audit Requirements, constraints, 
and much more…
Enterprise Architecture 
 How the enterprise is broken up in groups/departments 
 Business processes used 
 Workflows used 
 May not look at technology in detail rather how to us 
technology across the organization to get work done
Agile Architecture 
 Agile refers to a methodology of building software 
– moving fast, embracing change, release often, feedback cycles 
etc. 
Does agile development team then build agile 
architectures? 
 Agile architecture means it can react to change, is easy 
to change, is extendable
Agility 
 Agility means you can use the OODA loop 
Observe, Orient, Decide and Act 
How Spotify builds products
QUIZ 
Which of the following architecture descriptions would be concerned with 
interactions between applications 
A) Application Architecture 
B) System Architecture 
C) Software Architecture 
D) Enterprise Architecture
QUIZ 
Which of the following architecture descriptions would be concerned with 
interactions between applications 
A) Application Architecture 
B) System Architecture 
C) Software Architecture 
D) Enterprise Architecture 
✔
Monolithic Architecture
Monolith Architecture 
 Traditional approach to building applications 
 Chris Richardson: Decomposing applications for 
scalability and deployability
Monolith Architecture 
Bookstore UI 
Accounting service 
Payment service 
Shipping service SQL 
Browser Apache
Monolith Architecture 
 Benefits 
– Simple to understand 
– Straightforward to develop and test 
– One release and deployment 
– All linking is a compile type 
– Scaling is simple
Monolithic Architecture 
 Drawbacks 
– User interface challenge – old style UI architecture 
– Real-time applications (like node.js) don’t fit in easy 
– Obstacle to frequent deployment – fear of change 
– Overloads your IDE and container – slow build, development 
– Obstacle to scaling development teams 
– Locks down the technology stack – long term commitment
Service Oriented Architecture
SOA 
 Overload term 
– Means different things to different people 
– Implies Web Services using SOAP 
SOA actually means that components of an 
application act as interoperable services, and 
can be used independently and recombined into 
other applications 
Engineering Software as a Service 
by David Patterson and Armando Fox
Service Oriented Architecture 
 Software Architecture where all components are 
designed to be services 
 Applications composed of interoperable services 
– Easy to build new services 
– Easy to change 
 Parts of the systems need to change more than others
Traditional Architecture 
Bookstore UI 
Accounting service 
Payment service 
Shipping service SQL 
Browser Apache
SOA Architecture 
Bookstore 
Service 
Account 
service 
Payment 
service 
Bookstore UI 
Shipping 
service 
API
Partitioning the Monolith into Services 
 One way is to go from Object soup to Services along 
domain seams to microservices 
From http://www.manning.com/rotem/SOAp_SampleCh01.pdf Arnon Rotem-Gal-Oz’ SOA Patterns figure 1.
Microservices or microapps 
 Each service can be around 100-200 LOC (lines of code) 
– Size not the deterministic factor 
– Single Responsibility Principle 
– Don’t fix it – rewrite it 
 Microservice can have embedded web server 
– Totally independent
The Scale Cube
QUIZ 
Which statement is not true about SOA? 
A) SOA does not affect performance 
B) No service can access other service data except using APIs 
C) SOA improves productivity though reuse 
D) Monoliths system must deploy all components
QUIZ 
Which statement is not true about SOA? 
A) SOA does not affect performance 
B) No service can access other service data except using APIs 
C) SOA improves productivity though reuse 
D) Monoliths system must deploy all components 
✔
Bezos’ Mandate (from Yegge’s Rant) 
1. All teams will henceforth expose their data and 
functionality through service interfaces 
2. Teams must communicate with each other through 
these interfaces 
3. There will be no other form of interprocess 
communication allowed
Bezos’ Mandate (from Yegge’s Rant) 
4. It doesn't matter what technology they use 
5. All service interfaces, without exception, must be 
designed from the ground up to be externalizable. No 
exceptions. 
6. Anyone who doesn't do this will be fired.
Layering
Layering 
 Software systems can get complicated 
– Abstractions are needed 
 Layering provides abstraction by separating computer 
systems in layers 
– Higher layers use services from 
lower layers 
– Each layer has dedicated tasks 
and hides complexity from upper 
layers
Benefits of Layering 
 You can understand a single layer as a coherent whole 
without knowing much about other layers 
 You can substitute layers with alternative 
implementation of the same basic service 
 You minimize dependencies between layers 
 Layers make good places for standardization 
 Once you have a layer built, you can use it for many 
higher-level services
Downsides 
 Layers encapsulate some, but not all, things well 
– Cascading changes 
– For example adding a field in the UI requires changes on each 
layer 
 Extra layers can harm performance 
– At every layer things typically need to be transformed from one 
presentation to another
The Three Layers 
 Presentation 
– User’s interface to the system 
– User can be another system 
– Accepts input, displays views 
 Domain 
– The Application of the system 
– The “Business logic” 
– Tends to creep into presentation and data source 
 Data Source 
– Connection to the database 
– Also Persistence
Summary 
 Building blocks can help you 
 Architecture comes in many forms 
– Application, System, Software, Enterprise 
 Monolithic Architecture 
– Traditional approach, but getting difficult to scale 
 Service Oriented Architecture 
– Lightweight SOA, microservices 
 Layering 
– The oldest trick in the book

More Related Content

What's hot

Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpointsHenry Muccini
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: IntroductionHenry Muccini
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...mircea.lungu
 
EC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesEC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesRajalakshmiSermadurai
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
4+1 View Model of Software Architecture
4+1 View Model of Software Architecture4+1 View Model of Software Architecture
4+1 View Model of Software Architecturebashcode
 
Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs DesignLuc Trudeau
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design IntroductionUsman Khan
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture designLen Bass
 
Software architecture for developers by Simon Brown
Software architecture for developers by Simon BrownSoftware architecture for developers by Simon Brown
Software architecture for developers by Simon BrownCodemotion
 
Architecting and Designing Enterprise Applications
Architecting and Designing Enterprise ApplicationsArchitecting and Designing Enterprise Applications
Architecting and Designing Enterprise ApplicationsGem WeBlog
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture styleBegench Suhanov
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsGanesh Samarthyam
 
Domain-Specific Software Engineering
Domain-Specific Software EngineeringDomain-Specific Software Engineering
Domain-Specific Software Engineeringelliando dias
 

What's hot (20)

Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
Software Architecture Recovery: The 5 Questions You Always Asked Yourself Abo...
 
software architecture
software architecturesoftware architecture
software architecture
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
EC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesEC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniques
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Sda 2
Sda   2Sda   2
Sda 2
 
4+1 View Model of Software Architecture
4+1 View Model of Software Architecture4+1 View Model of Software Architecture
4+1 View Model of Software Architecture
 
Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs Design
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
 
Chapter1
Chapter1Chapter1
Chapter1
 
Software architecture for developers by Simon Brown
Software architecture for developers by Simon BrownSoftware architecture for developers by Simon Brown
Software architecture for developers by Simon Brown
 
Architecting and Designing Enterprise Applications
Architecting and Designing Enterprise ApplicationsArchitecting and Designing Enterprise Applications
Architecting and Designing Enterprise Applications
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture style
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture Smells
 
Domain-Specific Software Engineering
Domain-Specific Software EngineeringDomain-Specific Software Engineering
Domain-Specific Software Engineering
 

Similar to L02 Architecture

[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptxtaxegap762
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitectureABDEL RAHMAN KARIM
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...ghodgkinson
 
WebSphere Message Broker Application Development Training
WebSphere Message Broker Application Development TrainingWebSphere Message Broker Application Development Training
WebSphere Message Broker Application Development TrainingVijaya Raghava Vuligundam
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final finalgaurav shukla
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.PLovababu
 
Software_Architectures_from_SOA_to_MSA
Software_Architectures_from_SOA_to_MSASoftware_Architectures_from_SOA_to_MSA
Software_Architectures_from_SOA_to_MSAPeter Denev
 
Software architectures
Software architecturesSoftware architectures
Software architecturesAmandeep Singh
 
Mdsd capable target architecture
Mdsd capable target architectureMdsd capable target architecture
Mdsd capable target architecturerida mariam
 

Similar to L02 Architecture (20)

[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
L23 Summary and Conclusions
L23 Summary and ConclusionsL23 Summary and Conclusions
L23 Summary and Conclusions
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Software design
Software designSoftware design
Software design
 
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...Software Factories in the Real World: How an IBM WebSphere Integration Factor...
Software Factories in the Real World: How an IBM WebSphere Integration Factor...
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
WebSphere Message Broker Application Development Training
WebSphere Message Broker Application Development TrainingWebSphere Message Broker Application Development Training
WebSphere Message Broker Application Development Training
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final final
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.MicroserviceArchitecture in detail over Monolith.
MicroserviceArchitecture in detail over Monolith.
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
L01 Enterprise Application Architecture
L01 Enterprise Application ArchitectureL01 Enterprise Application Architecture
L01 Enterprise Application Architecture
 
Software_Architectures_from_SOA_to_MSA
Software_Architectures_from_SOA_to_MSASoftware_Architectures_from_SOA_to_MSA
Software_Architectures_from_SOA_to_MSA
 
Architecture
ArchitectureArchitecture
Architecture
 
Software architectures
Software architecturesSoftware architectures
Software architectures
 
Mdsd capable target architecture
Mdsd capable target architectureMdsd capable target architecture
Mdsd capable target architecture
 

More from Ólafur Andri Ragnarsson

New Technology Summer 2020 Course Introduction
New Technology Summer 2020 Course IntroductionNew Technology Summer 2020 Course Introduction
New Technology Summer 2020 Course IntroductionÓlafur Andri Ragnarsson
 
New Technology 2019 L13 Rise of the Machine
New Technology 2019 L13 Rise of the Machine New Technology 2019 L13 Rise of the Machine
New Technology 2019 L13 Rise of the Machine Ólafur Andri Ragnarsson
 

More from Ólafur Andri Ragnarsson (20)

Nýsköpun - Leiðin til framfara
Nýsköpun - Leiðin til framfaraNýsköpun - Leiðin til framfara
Nýsköpun - Leiðin til framfara
 
Nýjast tækni og framtíðin
Nýjast tækni og framtíðinNýjast tækni og framtíðin
Nýjast tækni og framtíðin
 
New Technology Summer 2020 Course Introduction
New Technology Summer 2020 Course IntroductionNew Technology Summer 2020 Course Introduction
New Technology Summer 2020 Course Introduction
 
L01 Introduction
L01 IntroductionL01 Introduction
L01 Introduction
 
L23 Robotics and Drones
L23 Robotics and Drones L23 Robotics and Drones
L23 Robotics and Drones
 
L22 Augmented and Virtual Reality
L22 Augmented and Virtual RealityL22 Augmented and Virtual Reality
L22 Augmented and Virtual Reality
 
L20 Personalised World
L20 Personalised WorldL20 Personalised World
L20 Personalised World
 
L19 Network Platforms
L19 Network PlatformsL19 Network Platforms
L19 Network Platforms
 
L18 Big Data and Analytics
L18 Big Data and AnalyticsL18 Big Data and Analytics
L18 Big Data and Analytics
 
L17 Algorithms and AI
L17 Algorithms and AIL17 Algorithms and AI
L17 Algorithms and AI
 
L16 Internet of Things
L16 Internet of ThingsL16 Internet of Things
L16 Internet of Things
 
L14 From the Internet to Blockchain
L14 From the Internet to BlockchainL14 From the Internet to Blockchain
L14 From the Internet to Blockchain
 
L14 The Mobile Revolution
L14 The Mobile RevolutionL14 The Mobile Revolution
L14 The Mobile Revolution
 
New Technology 2019 L13 Rise of the Machine
New Technology 2019 L13 Rise of the Machine New Technology 2019 L13 Rise of the Machine
New Technology 2019 L13 Rise of the Machine
 
L12 digital transformation
L12 digital transformationL12 digital transformation
L12 digital transformation
 
L10 The Innovator's Dilemma
L10 The Innovator's DilemmaL10 The Innovator's Dilemma
L10 The Innovator's Dilemma
 
L09 Disruptive Technology
L09 Disruptive TechnologyL09 Disruptive Technology
L09 Disruptive Technology
 
L09 Technological Revolutions
L09 Technological RevolutionsL09 Technological Revolutions
L09 Technological Revolutions
 
L07 Becoming Invisible
L07 Becoming InvisibleL07 Becoming Invisible
L07 Becoming Invisible
 
L06 Diffusion of Innovation
L06 Diffusion of InnovationL06 Diffusion of Innovation
L06 Diffusion of Innovation
 

Recently uploaded

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

L02 Architecture

  • 2. Agenda  Building blocks (recap)  Architecture  Monolithic Architecture  Service Oriented Architecture  Layering
  • 3. Reading  Brown 1, 2, 3 og 4  Pattern: Monolithic Architecture  Decomposing applications for scalability and deployability  The Scale Cube
  • 5. Building Enterprise Applications  Building computer systems is hard Design Pattern Architecture Middleware Frameworks OO Programming
  • 6. Architecture  Shared understanding of system’s design by the expert developers on a project – Highest-level breakdown of a system into its parts – Decisions that are hard to change  Architecture influences design of components, technology, performance and middleware  There are always options
  • 7. Object Oriented Programming  OO is key to development of systems – Design for reusability, flexibility and performance “OO design is more important than specific technologies, such as J2EE. We should try to avoid letting our technology choices, such as J2EE, constrain our ability to use true OO design” – Rod Johnson “If the design is good, there is no code” – Jónas Þór, Senior Betware developer  One of the biggest hurdles for developers – Each component should be simple with simple task – Involves understanding of interaction of parts
  • 8. Design Patterns  Design using known ideas – Design patterns are standard solutions to common problems in software design – Systematic approach for problems that reoccur in software development – Patterns have name and definitions - not language dependant  History – Landmark book from 1995: Design Patterns: Elements of Reusable Object-Oriented Software Gang of Four (GoF)
  • 9. Middleware  Enterprise system are built on middleware – Can cover a broad spectrum of software and generally sits between an application and an operating system – For example, databases, application servers, web servers, messaging systems, transaction monitors – “The plumbing” – the infrastructure  Horizontal market – Solves common problems – not specific business requirements – Low-level system
  • 10. Frameworks  Frameworks define the support structure for how to organize and build systems – Can improve productivity – We can use existing frameworks or build our own  Frameworks implement common problems – Developers extend and add their business requirements  Framework design – Use inheritance, inversion of control, interfaces and helper classes – Implement design patterns
  • 11. QUIZ Which of the following statement is not true? A) Design patterns are solutions to common problems B) Object oriented programing is good for general problems C) Frameworks are used to increase productivity D) Middleware can solve business related problems
  • 12. QUIZ Which of the following statement is not true? A) Design patterns are solutions to common problems B) Object oriented programing is good for general problems C) Frameworks are used to increase productivity D) Middleware can solve business related problems ✔
  • 14. Architecture  Means different things to different people – Big picture, things difficult to change, – a plan, a blueprint…
  • 15. Architecture – noun The decomposition of a product into a collection of components/modules and interactions Structure
  • 16. Architecture – verb Understanding what you need to build, create a vision and making the right decisions Vision
  • 17. Types of Architecture  There are many different architectures – Network, security, data, hardware, enterprise…  All have structure and vision – All have multiple constraints such as cost, time, legal, regulatory
  • 18. Application Architecture  Application is the focus – Contains classes, components, design patterns, frameworks, libraries – Lower-level aspects of software design – Concerned with sign technology stack and layering Client REST Services EJB3 Hibernate Oracle Client REST layer Service layer Domain Layer Database layer
  • 19. System Architecture  Focus on multiple applications across a number of tiers and technologies  Interactions between applications  Overall structure of the end-to-end software system at high-level  Mix of software and hardware
  • 20. Software Architecture  The combination of application and system architecture  Includes the technical practices to build the software – Design Principles, Programming language Design patterns, Unit testing and much more…  Must also include aspects like – Cross-cutting concerns such as logging and exception handling Security, Performance, Audit Requirements, constraints, and much more…
  • 21. Enterprise Architecture  How the enterprise is broken up in groups/departments  Business processes used  Workflows used  May not look at technology in detail rather how to us technology across the organization to get work done
  • 22. Agile Architecture  Agile refers to a methodology of building software – moving fast, embracing change, release often, feedback cycles etc. Does agile development team then build agile architectures?  Agile architecture means it can react to change, is easy to change, is extendable
  • 23. Agility  Agility means you can use the OODA loop Observe, Orient, Decide and Act How Spotify builds products
  • 24. QUIZ Which of the following architecture descriptions would be concerned with interactions between applications A) Application Architecture B) System Architecture C) Software Architecture D) Enterprise Architecture
  • 25. QUIZ Which of the following architecture descriptions would be concerned with interactions between applications A) Application Architecture B) System Architecture C) Software Architecture D) Enterprise Architecture ✔
  • 27. Monolith Architecture  Traditional approach to building applications  Chris Richardson: Decomposing applications for scalability and deployability
  • 28.
  • 29. Monolith Architecture Bookstore UI Accounting service Payment service Shipping service SQL Browser Apache
  • 30. Monolith Architecture  Benefits – Simple to understand – Straightforward to develop and test – One release and deployment – All linking is a compile type – Scaling is simple
  • 31. Monolithic Architecture  Drawbacks – User interface challenge – old style UI architecture – Real-time applications (like node.js) don’t fit in easy – Obstacle to frequent deployment – fear of change – Overloads your IDE and container – slow build, development – Obstacle to scaling development teams – Locks down the technology stack – long term commitment
  • 32.
  • 34. SOA  Overload term – Means different things to different people – Implies Web Services using SOAP SOA actually means that components of an application act as interoperable services, and can be used independently and recombined into other applications Engineering Software as a Service by David Patterson and Armando Fox
  • 35. Service Oriented Architecture  Software Architecture where all components are designed to be services  Applications composed of interoperable services – Easy to build new services – Easy to change  Parts of the systems need to change more than others
  • 36. Traditional Architecture Bookstore UI Accounting service Payment service Shipping service SQL Browser Apache
  • 37. SOA Architecture Bookstore Service Account service Payment service Bookstore UI Shipping service API
  • 38. Partitioning the Monolith into Services  One way is to go from Object soup to Services along domain seams to microservices From http://www.manning.com/rotem/SOAp_SampleCh01.pdf Arnon Rotem-Gal-Oz’ SOA Patterns figure 1.
  • 39. Microservices or microapps  Each service can be around 100-200 LOC (lines of code) – Size not the deterministic factor – Single Responsibility Principle – Don’t fix it – rewrite it  Microservice can have embedded web server – Totally independent
  • 40.
  • 42. QUIZ Which statement is not true about SOA? A) SOA does not affect performance B) No service can access other service data except using APIs C) SOA improves productivity though reuse D) Monoliths system must deploy all components
  • 43. QUIZ Which statement is not true about SOA? A) SOA does not affect performance B) No service can access other service data except using APIs C) SOA improves productivity though reuse D) Monoliths system must deploy all components ✔
  • 44.
  • 45. Bezos’ Mandate (from Yegge’s Rant) 1. All teams will henceforth expose their data and functionality through service interfaces 2. Teams must communicate with each other through these interfaces 3. There will be no other form of interprocess communication allowed
  • 46. Bezos’ Mandate (from Yegge’s Rant) 4. It doesn't matter what technology they use 5. All service interfaces, without exception, must be designed from the ground up to be externalizable. No exceptions. 6. Anyone who doesn't do this will be fired.
  • 48. Layering  Software systems can get complicated – Abstractions are needed  Layering provides abstraction by separating computer systems in layers – Higher layers use services from lower layers – Each layer has dedicated tasks and hides complexity from upper layers
  • 49. Benefits of Layering  You can understand a single layer as a coherent whole without knowing much about other layers  You can substitute layers with alternative implementation of the same basic service  You minimize dependencies between layers  Layers make good places for standardization  Once you have a layer built, you can use it for many higher-level services
  • 50. Downsides  Layers encapsulate some, but not all, things well – Cascading changes – For example adding a field in the UI requires changes on each layer  Extra layers can harm performance – At every layer things typically need to be transformed from one presentation to another
  • 51. The Three Layers  Presentation – User’s interface to the system – User can be another system – Accepts input, displays views  Domain – The Application of the system – The “Business logic” – Tends to creep into presentation and data source  Data Source – Connection to the database – Also Persistence
  • 52. Summary  Building blocks can help you  Architecture comes in many forms – Application, System, Software, Enterprise  Monolithic Architecture – Traditional approach, but getting difficult to scale  Service Oriented Architecture – Lightweight SOA, microservices  Layering – The oldest trick in the book

Editor's Notes

  1. 5
  2. 8
  3. 9
  4. 10