SlideShare a Scribd company logo
1 of 76
Download to read offline
HÖNNUN OG SMÍÐI HUGBÚNAÐAR 2015
L02 WHAT IS SOFTWARE ARCHITECTURE?
Agenda
Conway’s Law
Architecture in the Post-PC world
Technical Dept
Architecture
Scaling Applications
Service Oriented Architecture
Layering
Reading
Brown 1-7
Pattern: Monolithic Architecture
Conway´s Law
Decomposing applications for scalability and deployability
The Scale Cube
Conway’s Law
Conwey’s Law
Organisations which design systems ... are constrained to
produce designs which are copies of the communication
structures of these organisations
From a 1967 paper “How do Committees Invent?”
by Mel Conway
Conwey’s Law
In an organisation with three departments you end up with
three parts of the software applications
Due to communication and power structure - people want
to control their schedule and not depend on others
Directly leads to technical dept
This leads to the saying: “There are not technical
problems, only management problems”
Architecture in the Post-PC world
Monolithic Architecture
Traditional Web Application Architecture
All code is built into a single application
that is deployed
Simple to develop, test, deploy, scale
Clear layering: Presentation, Domain,
Data Source
Tomcat
ApacheBrowser
WAR
Web Components
Customer
Wallet
Data Source
DB
WAR file = Web
ARchive
Tomcat = web server
for Java Servlets (web
components)
9
Trends in Architecture
Traditional Web Application Architecture
using “monolith” is not a bad way to build
software
However, some things become hard in this
architecture with scale and frequencies of
changes
Demand today is very much agile
The monolithic architecture becomes a
problem in particular in scaling and
organising teams
Chris Richardson
Decomposing Applications for Scalability and Deployability
Monolith Architecture
Bookstore	
  UI
Accounting
Payment
Shipping SQL
Web	
  
Browser
Web	
  
Server	
  
Apache
▪ Benefits
– Simple to understand
– Straightforward to develop and test
– One release and deployment
– All linking is a compile type
– Scaling is simple - just duplicate the system and use a load balancer
Monolithic Architecture
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
Demand for Rich Interactive User Experience
Web based request response model is fine
for normal content
However for dynamic and
interactive experience, for example
streaming events to the browser
this becomes difficult
From Richardson’s video
Big Deployments
Need to redeploy the whole application for small changes
Any change requires knowledge
of the whole system
Deployment becomes risky
Need lots of planning
Become infrequent due to fear
Code waits a long time before its
deployed
From Richardson’s video
Container Overload
Overloads your IDE
Takes long time to start the containers
Slows down development
From Richardson’s video
Communication Overload
Changes in component might
affect other components
Unwanted dependencies happen
- technical dept
Teams need to plan and
coordinate
From Richardson’s video
Scaling the development becomes difficult
Stuck with the Technology Stack
Monoliths require long term
commitments to the stack
New technology is difficult to
adopt
Different problem domains
require different stack
From Richardson’s video
Any changes in the technology stack become difficult
Can Result in Technical Debt
Maintenance becomes difficult
People don’t want to work on the
code
Company is not competitive
System becomes obsolete
Cost of Change (CoC) becomes too high
Technical Dept
Big Ball of Mud
“A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-
baling-wire, spaghetti-code jungle. These systems show unmistakable signs of
unregulated growth, and repeated, expedient repair.”
— Brian Foote and Joseph Yoder, Big Ball of Mud
Technical Debt
Concept in programming that reflects the extra development
work that arises when code that is easy to implement in the
short run is used instead of applying the best overall solution
Small decisions that accumulate over time -
“I’ll fix this later”
Hard to see until any small change is
extremely expensive (CoC = Cost of
Change), and then Conway’s Second Law
applies
If the debt is not repaid, then it will keep on
accumulating interest, making it hard to
implement changes later on
Why does it Happen?
Lazy programmers?
Sloppy programmers?
Inexperienced programmers?
No power to say no?
Source: Baruco 2012: Micro-Service Architecture, by Fred George
https://www.youtube.com/watch?v=2rKEveL55TY
Fred George
Micro-Service Architecture
Good design and architecture turn out to be not so good
Using the wrong tools
Shortcuts - “I’ll just inherit this class and change a method”
Calling methods you should not call
It was a good idea at the time, for example God Objects
Bad organisational structure (ignorance of Conway’s Law)
No ownership of code
No restrictions - “we’re agile, anybody can change any code”
Lack of understanding of the design of the code
Code guidelines and principles forgotten or do not exist
Putting code in wrong place due to lack of understanding
Why does it Happen?
Other reasons:
Why does it Happen?
Or maybe… University Teachers that teach about concrete inheritance
Object Oriented progamming is good but can be misused
Conwey’s Second Law
There’s never enough time to do something right, but
there’s always enough time to do it over
Architecture
Problem with Software Engineering
People see the same thing
differently or have the same
opinion on different things
The results are that people that
really agree, don’t agree
and people that agree, do not
really
Problem with Software Engineering
This leads to bad design and
implementations
Result is technical debt
Clear Up a Few Things
Terminology needs to be defined
People must have the same
understanding of terms used
Define and document
We work in a complex industry -
sometimes its good to ask “what
do you mean when you say X”
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
A component is a software building block that is
independently replaceable
independently upgradable
Component
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
Technology
stack
Layering
Client
REST service
EJB
Hibernate
Oracle
Presentation
REST service
Service Layer
Domain Layer
Data 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
How	
  Spotify	
  builds	
  products
Observe

Orient

Decide
Act
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
Scaling Applications
Monolithic Architecture
Traditional Web Application Architecture
All code is built into a single application
that is deployed
In today’s environment might not be the
best approach
Tomcat
ApacheBrowser
WAR
Web Components
Customer
Wallet
Data Source
DB
Scaling Applications
In the Internet world you want to build web
sites that gets lots of users and massive
hit per second
But how can you cope with such load?
Browser
HTTP
Server
Application Database
Scale Cube
X scaling: duplicate the system
Z
scaling:Partition
the
data
Yscaling:PartitiontheApplication
Service Oriented Architecture
Trends in Architecture
Service Oriented Architecture (SOA) dates back to mid 1990s
Web Services meaning XML and SOAP using an Enterprise Services
Bus
Confusions on terminology
SOA is overload term - useless
Means different things to different people
Implies Web Services using SOAP
Trends in Architecture
SOA as in Web Services using SOAP
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
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.
Service Oriented Architecture
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
Microservices
In recent years a new term has emerged, Microservices:
The microservice architectural style is an approach to
developing a single application as a suite of small services, each
running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API.
From the Lewis & Fowler article
Martin Fowler - Microservices
https://www.youtube.com/watch?v=2yko4TbC8cI
Martin Fowler
Microservices
Definition of SOA is useless because it is so overloaded
Microservice architecture is better but needs to be
clarified
Service Architecture
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
Single Responsibility Principle (SPR)
states that a class should have one and only
one reason to change, that “reason to
change” is its responsibility.
Monolith Architecture
Bookstore	
  UI
Accounting
Payment
Shipping SQL
Web	
  
Browser
Web	
  
Server	
  
Apache
Service Architecture
Bookstore	
  
Service
Account	
  
service
Payment	
  
service
Shipping	
  
service
Bookstore	
  UI
Web	
  
Browser
Partitioning the Monolith into Services
From	
  http://www.manning.com/rotem/SOAp_SampleCh01.pdf	
  Arnon	
  Rotem-­‐Gal-­‐Oz’	
  SOA	
  Patterns	
  figure	
  1.
One way is to go from Object soup to Services along domain
seams to microservices
Microservices or microapps
▪ Each service can be around 100-200 LOC (lines of code)
– Size not the deterministic factor
– Don’t fix it – rewrite it
▪ Microservice can have embedded web server
– Totally independent
Drawbacks
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
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
Conway’s Law explains a lot
Architecture in the Post-PC world means scaling
Big complex system can accumulate Technical Dept
Architecture defined
How to Scale Applications
What is Service Oriented Architecture
Layering is the oldest trick in the book

More Related Content

What's hot

ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownAvisi B.V.
 
Systems and Software Architecture: an introduction to architectural modelling
Systems and Software Architecture: an introduction to architectural modellingSystems and Software Architecture: an introduction to architectural modelling
Systems and Software Architecture: an introduction to architectural modellingCARLOS III UNIVERSITY OF MADRID
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsRiccardo Cardin
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for EnterprisesWade Wegner
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsJose Emilio Labra Gayo
 
Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Dion Hinchcliffe
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design Arslan Anwar
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsGanesh Samarthyam
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpointsHenry Muccini
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersDan Douglas
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture designLen Bass
 
Agile Architecture Tech And Patterns
Agile Architecture   Tech And PatternsAgile Architecture   Tech And Patterns
Agile Architecture Tech And Patternspragkirk
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being DrivenAntonio Terreno
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software ArchitectHayim Makabee
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patternsPallav Kumar
 
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileDan Mohl
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software ArchitectureChris F Carroll
 
Oose unit 5 ppt
Oose unit 5 pptOose unit 5 ppt
Oose unit 5 pptDr VISU P
 

What's hot (20)

Dsm presentation (english)
Dsm presentation (english)Dsm presentation (english)
Dsm presentation (english)
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
Systems and Software Architecture: an introduction to architectural modelling
Systems and Software Architecture: an introduction to architectural modellingSystems and Software Architecture: an introduction to architectural modelling
Systems and Software Architecture: an introduction to architectural modelling
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & Connectors
 
Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture Smells
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET Developers
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
 
Agile Architecture Tech And Patterns
Agile Architecture   Tech And PatternsAgile Architecture   Tech And Patterns
Agile Architecture Tech And Patterns
 
Software Engineering 101
Software Engineering 101Software Engineering 101
Software Engineering 101
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patterns
 
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
 
Oose unit 5 ppt
Oose unit 5 pptOose unit 5 ppt
Oose unit 5 ppt
 

Viewers also liked

SW Architecture Monolithic to SOA
SW Architecture Monolithic to SOASW Architecture Monolithic to SOA
SW Architecture Monolithic to SOARaman Kannan
 
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"Randy Bias
 
Manueverable architecture
Manueverable architectureManueverable architecture
Manueverable architectureMichael Nygard
 
Tempo, Maneuverability, and Initiative
Tempo, Maneuverability, and InitiativeTempo, Maneuverability, and Initiative
Tempo, Maneuverability, and InitiativeMichael Nygard
 
Resiliency jenna-2013
Resiliency jenna-2013Resiliency jenna-2013
Resiliency jenna-2013Jenna Martin
 
AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...
AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...
AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...AppDynamics
 
Designing apps for resiliency
Designing apps for resiliencyDesigning apps for resiliency
Designing apps for resiliencyMasashi Narumoto
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemixgjuljo
 
Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)WSO2
 
Practical SOA for the Solution Architect
Practical SOA for the Solution Architect Practical SOA for the Solution Architect
Practical SOA for the Solution Architect WSO2
 
Architecture without an end state
Architecture without an end stateArchitecture without an end state
Architecture without an end stateMichael Nygard
 
Resiliency through failure @ QConNY 2013
Resiliency through failure @ QConNY 2013Resiliency through failure @ QConNY 2013
Resiliency through failure @ QConNY 2013Ariel Tseitlin
 
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」AINOW
 
Resilient Architecture
Resilient ArchitectureResilient Architecture
Resilient ArchitectureMatt Stine
 

Viewers also liked (19)

SW Architecture Monolithic to SOA
SW Architecture Monolithic to SOASW Architecture Monolithic to SOA
SW Architecture Monolithic to SOA
 
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
OpenStack Summit :: Redundancy Doesn't Always Mean "HA" or "Cluster"
 
Manueverable architecture
Manueverable architectureManueverable architecture
Manueverable architecture
 
Where to put_my_data
Where to put_my_dataWhere to put_my_data
Where to put_my_data
 
Tempo, Maneuverability, and Initiative
Tempo, Maneuverability, and InitiativeTempo, Maneuverability, and Initiative
Tempo, Maneuverability, and Initiative
 
Resiliency jenna-2013
Resiliency jenna-2013Resiliency jenna-2013
Resiliency jenna-2013
 
The Big Red Button
The Big Red ButtonThe Big Red Button
The Big Red Button
 
AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...
AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...
AppSphere 15 - Preparing for System Failure: How Pearson used AppDynamics to ...
 
Designing apps for resiliency
Designing apps for resiliencyDesigning apps for resiliency
Designing apps for resiliency
 
Resilience engineering
Resilience engineeringResilience engineering
Resilience engineering
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemix
 
Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)
 
Practical SOA for the Solution Architect
Practical SOA for the Solution Architect Practical SOA for the Solution Architect
Practical SOA for the Solution Architect
 
Fault tolerance made easy
Fault tolerance made easyFault tolerance made easy
Fault tolerance made easy
 
Architecture without an end state
Architecture without an end stateArchitecture without an end state
Architecture without an end state
 
Patterns of resilience
Patterns of resiliencePatterns of resilience
Patterns of resilience
 
Resiliency through failure @ QConNY 2013
Resiliency through failure @ QConNY 2013Resiliency through failure @ QConNY 2013
Resiliency through failure @ QConNY 2013
 
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
[ML15]Class Cat佐々木さん「いち早く人工知能テクノロジーを取り入れた製品・サービスを市場に展開するには?」
 
Resilient Architecture
Resilient ArchitectureResilient Architecture
Resilient Architecture
 

Similar to L02 What is Software Architecture?

DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptxTurja Narayan Chaudhuri
 
Refactoring: Gold from a Monolithic Legacy
Refactoring: Gold from a Monolithic LegacyRefactoring: Gold from a Monolithic Legacy
Refactoring: Gold from a Monolithic LegacyDodzidenu Dzakuma
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final finalgaurav shukla
 
Agile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtAgile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtVincent Burckhardt
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...Cloud Native Day Tel Aviv
 
IT Architecture and Architects
IT Architecture and ArchitectsIT Architecture and Architects
IT Architecture and ArchitectsAndreDovgal1
 
Agile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemAgile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemTurja Narayan Chaudhuri
 
Agile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemAgile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemCloud Study Network
 
[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
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitectureABDEL RAHMAN KARIM
 
Modern Microservices Architecture with Docker
Modern Microservices Architecture with DockerModern Microservices Architecture with Docker
Modern Microservices Architecture with DockerEran Stiller
 
Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...
Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...
Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...Chip Childers
 
The Benefits Of Software Creation
The Benefits Of Software CreationThe Benefits Of Software Creation
The Benefits Of Software CreationJennifer Wood
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsGiulio Vian
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesisPawel Szulc
 
Software architectures
Software architecturesSoftware architectures
Software architecturesAmandeep Singh
 

Similar to L02 What is Software Architecture? (20)

DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
 
Refactoring: Gold from a Monolithic Legacy
Refactoring: Gold from a Monolithic LegacyRefactoring: Gold from a Monolithic Legacy
Refactoring: Gold from a Monolithic Legacy
 
01 the big_idea
01 the big_idea01 the big_idea
01 the big_idea
 
Microservice final final
Microservice final finalMicroservice final final
Microservice final final
 
Agile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is builtAgile and continuous delivery – How IBM Watson Workspace is built
Agile and continuous delivery – How IBM Watson Workspace is built
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
 
IT Architecture and Architects
IT Architecture and ArchitectsIT Architecture and Architects
IT Architecture and Architects
 
Agile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemAgile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystem
 
Agile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemAgile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native Ecosystem
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Modern Microservices Architecture with Docker
Modern Microservices Architecture with DockerModern Microservices Architecture with Docker
Modern Microservices Architecture with Docker
 
Architecture
ArchitectureArchitecture
Architecture
 
Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...
Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...
Building a Platform for the People - IBM's Open Cloud Architecture Summit - A...
 
The Benefits Of Software Creation
The Benefits Of Software CreationThe Benefits Of Software Creation
The Benefits Of Software Creation
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesis
 
Software architectures
Software architecturesSoftware architectures
Software architectures
 

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

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
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
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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?
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
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
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

L02 What is Software Architecture?

  • 1. HÖNNUN OG SMÍÐI HUGBÚNAÐAR 2015 L02 WHAT IS SOFTWARE ARCHITECTURE?
  • 2. Agenda Conway’s Law Architecture in the Post-PC world Technical Dept Architecture Scaling Applications Service Oriented Architecture Layering
  • 3. Reading Brown 1-7 Pattern: Monolithic Architecture Conway´s Law Decomposing applications for scalability and deployability The Scale Cube
  • 5. Conwey’s Law Organisations which design systems ... are constrained to produce designs which are copies of the communication structures of these organisations From a 1967 paper “How do Committees Invent?” by Mel Conway
  • 6. Conwey’s Law In an organisation with three departments you end up with three parts of the software applications Due to communication and power structure - people want to control their schedule and not depend on others Directly leads to technical dept This leads to the saying: “There are not technical problems, only management problems”
  • 7. Architecture in the Post-PC world
  • 8. Monolithic Architecture Traditional Web Application Architecture All code is built into a single application that is deployed Simple to develop, test, deploy, scale Clear layering: Presentation, Domain, Data Source Tomcat ApacheBrowser WAR Web Components Customer Wallet Data Source DB WAR file = Web ARchive Tomcat = web server for Java Servlets (web components)
  • 9. 9 Trends in Architecture Traditional Web Application Architecture using “monolith” is not a bad way to build software However, some things become hard in this architecture with scale and frequencies of changes Demand today is very much agile The monolithic architecture becomes a problem in particular in scaling and organising teams
  • 10. Chris Richardson Decomposing Applications for Scalability and Deployability
  • 11.
  • 12. Monolith Architecture Bookstore  UI Accounting Payment Shipping SQL Web   Browser Web   Server   Apache
  • 13. ▪ Benefits – Simple to understand – Straightforward to develop and test – One release and deployment – All linking is a compile type – Scaling is simple - just duplicate the system and use a load balancer Monolithic Architecture
  • 14. 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
  • 15. Demand for Rich Interactive User Experience Web based request response model is fine for normal content However for dynamic and interactive experience, for example streaming events to the browser this becomes difficult From Richardson’s video
  • 16. Big Deployments Need to redeploy the whole application for small changes Any change requires knowledge of the whole system Deployment becomes risky Need lots of planning Become infrequent due to fear Code waits a long time before its deployed From Richardson’s video
  • 17. Container Overload Overloads your IDE Takes long time to start the containers Slows down development From Richardson’s video
  • 18. Communication Overload Changes in component might affect other components Unwanted dependencies happen - technical dept Teams need to plan and coordinate From Richardson’s video Scaling the development becomes difficult
  • 19. Stuck with the Technology Stack Monoliths require long term commitments to the stack New technology is difficult to adopt Different problem domains require different stack From Richardson’s video Any changes in the technology stack become difficult
  • 20. Can Result in Technical Debt Maintenance becomes difficult People don’t want to work on the code Company is not competitive System becomes obsolete Cost of Change (CoC) becomes too high
  • 22. Big Ball of Mud “A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and- baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair.” — Brian Foote and Joseph Yoder, Big Ball of Mud
  • 23. Technical Debt Concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution Small decisions that accumulate over time - “I’ll fix this later” Hard to see until any small change is extremely expensive (CoC = Cost of Change), and then Conway’s Second Law applies If the debt is not repaid, then it will keep on accumulating interest, making it hard to implement changes later on
  • 24.
  • 25. Why does it Happen? Lazy programmers? Sloppy programmers? Inexperienced programmers? No power to say no?
  • 26. Source: Baruco 2012: Micro-Service Architecture, by Fred George https://www.youtube.com/watch?v=2rKEveL55TY Fred George Micro-Service Architecture
  • 27.
  • 28. Good design and architecture turn out to be not so good Using the wrong tools Shortcuts - “I’ll just inherit this class and change a method” Calling methods you should not call It was a good idea at the time, for example God Objects Bad organisational structure (ignorance of Conway’s Law) No ownership of code No restrictions - “we’re agile, anybody can change any code” Lack of understanding of the design of the code Code guidelines and principles forgotten or do not exist Putting code in wrong place due to lack of understanding Why does it Happen? Other reasons:
  • 29. Why does it Happen? Or maybe… University Teachers that teach about concrete inheritance Object Oriented progamming is good but can be misused
  • 30. Conwey’s Second Law There’s never enough time to do something right, but there’s always enough time to do it over
  • 32. Problem with Software Engineering People see the same thing differently or have the same opinion on different things The results are that people that really agree, don’t agree and people that agree, do not really
  • 33. Problem with Software Engineering This leads to bad design and implementations Result is technical debt
  • 34. Clear Up a Few Things Terminology needs to be defined People must have the same understanding of terms used Define and document We work in a complex industry - sometimes its good to ask “what do you mean when you say X”
  • 35. Architecture Means different things to different people Big picture, 
 things difficult to change, a plan, 
 a blueprint…
  • 36. Architecture - noun The decomposition of a product into a collection of components/modules and interactions Structure
  • 37. Architecture - verb Understanding what you need to build, create a vision and making the right decisions vision
  • 38. A component is a software building block that is independently replaceable independently upgradable Component
  • 39. 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
  • 40. 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 Technology stack Layering Client REST service EJB Hibernate Oracle Presentation REST service Service Layer Domain Layer Data Layer
  • 41. 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
  • 42. 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…
  • 43. 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
  • 44. 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
  • 45. Agility ▪ Agility means you can use the OODA loop How  Spotify  builds  products Observe
 Orient
 Decide Act
  • 46. 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
  • 48. Monolithic Architecture Traditional Web Application Architecture All code is built into a single application that is deployed In today’s environment might not be the best approach Tomcat ApacheBrowser WAR Web Components Customer Wallet Data Source DB
  • 49.
  • 50. Scaling Applications In the Internet world you want to build web sites that gets lots of users and massive hit per second But how can you cope with such load? Browser HTTP Server Application Database
  • 51. Scale Cube X scaling: duplicate the system Z scaling:Partition the data Yscaling:PartitiontheApplication
  • 53. Trends in Architecture Service Oriented Architecture (SOA) dates back to mid 1990s Web Services meaning XML and SOAP using an Enterprise Services Bus Confusions on terminology SOA is overload term - useless Means different things to different people Implies Web Services using SOAP
  • 54. Trends in Architecture SOA as in Web Services using SOAP
  • 55. 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 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.
  • 56. Service Oriented Architecture 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
  • 57. Microservices In recent years a new term has emerged, Microservices: The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. From the Lewis & Fowler article
  • 58. Martin Fowler - Microservices https://www.youtube.com/watch?v=2yko4TbC8cI Martin Fowler Microservices
  • 59.
  • 60. Definition of SOA is useless because it is so overloaded Microservice architecture is better but needs to be clarified Service Architecture
  • 61. 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
  • 62. Single Responsibility Principle (SPR) states that a class should have one and only one reason to change, that “reason to change” is its responsibility.
  • 63. Monolith Architecture Bookstore  UI Accounting Payment Shipping SQL Web   Browser Web   Server   Apache
  • 64. Service Architecture Bookstore   Service Account   service Payment   service Shipping   service Bookstore  UI Web   Browser
  • 65. Partitioning the Monolith into Services From  http://www.manning.com/rotem/SOAp_SampleCh01.pdf  Arnon  Rotem-­‐Gal-­‐Oz’  SOA  Patterns  figure  1. One way is to go from Object soup to Services along domain seams to microservices
  • 66. Microservices or microapps ▪ Each service can be around 100-200 LOC (lines of code) – Size not the deterministic factor – Don’t fix it – rewrite it ▪ Microservice can have embedded web server – Totally independent
  • 67.
  • 69.
  • 70. 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
  • 72. 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
  • 73. 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
  • 74. 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
  • 75. 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
  • 76. Summary Conway’s Law explains a lot Architecture in the Post-PC world means scaling Big complex system can accumulate Technical Dept Architecture defined How to Scale Applications What is Service Oriented Architecture Layering is the oldest trick in the book