SlideShare una empresa de Scribd logo
1 de 102
Descargar para leer sin conexión
Patterns of
Evolutionary
Architecture
Chris Gow and Shawn Button
Agile and Beyond 2018
Patterns of
Evolutionary
Architecture
Chris Gow and Shawn Button
Agile and Beyond 2018
Do the following
sound familiar?
Anti-pattern: Big Ball
of Mud
Anti-pattern: Big Ball of Mud
“A Big Ball of Mud is a casually, even haphazardly, structured
system. It’s organization and structure appears to be dictated
more by expediency than design. A quick fix here, a bandaid
there, a temporary solution on top of another and what was
once tidy becomes overgrown as piecemeal growth allows
elements of the system to sprawl in an uncontrolled fashion”
- Brian Foote - 1999
Anti-Pattern: Big Design Up Front
Anti-Pattern: Big Design Up Front
We are afraid of making mistakes in design, so we spend a lot
of time analyzing and designing up front, in order to make sure
we get it right the first time.
Unfortunately:
! We won't get it right. No matter how much effort we put
into it.
! We will add things to our architecture that we will not need.
! It will delay our ability to deliver something quickly to
customers to get early value and feedback.
Anti-Pattern: NO Design
Anti-Pattern: No Design
While we don’t want to design everything up front, we also
don’t want to not have the entire system be emergent and
have no plan. That typically leads to systems that are brittle,
coupled in inappropriate ways and are viscous, not cohesive.
Anti-Pattern - Ivory Tower Architect
Anti-Pattern - Ivory Tower Architecture
Architecture that is devised hidden away in relative
isolation from the day-to-day development activities
suffers from significant problems. The models in this type
of architecture are often designed with little or no input
from the development teams who will be charged with
coding the architecture “vision”.
Perfect in theory, but often unproven and incomplete,
ivory tower architectures often fall victim to over
complications and reflect features from every system the
architects were involved with instead of what is necessary
to solve your business problem.
Anti-Pattern: Steamrolled Architect
Anti-Pattern - Steamrolled Architect
Architects that have little influence over the development of the
product can’t ensure that the architecture continues to meet the
needs of the business.
We have seen this happen for multiple reasons, including:
• The business does not listen to IT’s advice, and insists all
development effort be spent on new features
• The architect is powerless within IT, so the team does not take
their guidance
• Architects perform project management activities, rather than
architectural
• Architects who do not have the knowledge to guide good
architecture
Anti-Pattern: If a Framework is Good, Use It All!
Anti-Pattern: If Framework is Good, Use It All!
A common anti-pattern is the over-use of frameworks. Applications become
excessively complicated by using a framework that requires a solution might not be
a match for the problem we are trying to solve.
E.g. Spring :)
We also see this in large home-grown Enterprise frameworks. They are created to
simplify and standardize creation of new apps, but end up forcing the same solution,
regardless of whether it is the best solution.
Find the simplest way to do something. Do it. Maybe that’s enough. If not you can
come back and add to it later (see also YAGNI)
As much as possible keep your domain logic agnostic of the framework you are
using! Build an abstraction layer between you and your framework.
Anti-Pattern:
Vendor King / Last
10% Trap
Buying a product from a big vendor can seem very attractive. They promise
you that they give you the features you want without needing those nasty
developers.
• First 80% is easy. Next 10% is hard. Last 10% is impossible.
• Might not support for rapid delivery (no automated tests, poor code
control practices, hard to deploy)
• Might be hard to evolve (locked into a someone else’s architecture)
• Vendor Lock-in - Makes it hard to change your mind
• Look for vendors that allow extension over customization
This also might apply to the frameworks you use. There lock-in pressure
when you choose to use Drupal, Rails, Spring, Angular, etc.
As much as possible keep your domain logic agnostic of the framework
you are using!
Anti-Pattern: Vendor King / Last 10% Trap
Exercise
Exercise: What Do You See At Your Org
Find someone from a different organization than yours.
In this pair, share what architectural anti-patterns do you see
in your orgs?
You have 5 minutes
Principle - Design for Change
Change
Change in an application is inevitable.
We need to support:
1. New business requirements (“We need to sell a new type
of widget”)
2. Updates to existing technologies (“We need to patch our
platform’s security hole ASAP”)
3. New technologies (“This database doesn’t support our
needs, we need to move to a NoSQL db”)
4. New non-functional needs (Yah, our business is booming.
Oh SH*T, our business is booming!)
Principle - Evolvability
as First Class Concern
Principle - Evolvability as First-Class Architectural Concern
Architecture involves a series of trade-offs. There are many
different concerns that you need to juggle. Non-functional
requirements (NFRs) like scalability, performance, security. As
well there are business features are the point of the application.
The requirement to deliver quickly, and to be able to evolve our
application over time should prioritized against our need for
performance, etc. They because “first class citizens” in all
architectural tradeoffs.
Alongside concerns such as scalability, performance, security,
etc. Frequent Delivery and Evolvability and should be primary
concern.
Principle - Changeable/Deferred Decisions
Principle: Changeable/Deferred Decisions
Changeable Decisions
Whenever possible we want to make our decisions
changeable. If we can change our decisions it protects us
from the risk of future unknowns.
Deferred Decisions
For changes that are hard to reverse, figure out ways that we
can defer the decisions as much as possible. The longer we
wait the more we know about what we actually need.
Pattern: Sacrificial Architecture
Pattern: Sacrificial Architecture
Since we understand that it is difficult and expensive to get
our architecture perfect up front, be prepared to throw away
any architectural element.
A great example is Twitter. They started with Ruby on Rails,
which allowed them to quickly get into the market. When they
needed to scale they changed their architecture. Yes it was
painful to change, but they were able to get into the market
quickly, and as they scaled they had a much better idea of
their needs.
Pattern: Build
Throwaway Prototypes
Pattern: Build Throwaway Prototypes
In order to see if a technology decision is correct, make a
quick prototype.
We stress that they should be throwaway, because we need
to keep them light, and just do the minimum that we need in
order to learn if it is suitable.
If you are faced with a choice between several architectures,
do prototypes for both and learn which works best for you. Do
“set-based” design, where you explore multiple alternatives at
once.
Pattern - Invest In Practices
Pattern: Invest in Practices
Delivering frequently requires discipline and heavy
investment in modern technical practices. You will need
This might require:
! Creating new “Devops” infrastructure
! Training/coaching/mentoring in the new practices
! Hiring new people with the new skills
! Slowing down a little until you gain the ability to speed up
(relief from deadlines)
Exercise
Exercise: The Process of Architecture
Find a different person from a different organization than
yours.
In this pair, share how your org ensures good architecture
happens.
You have 5 minutes.
Evolutionary
Architecture
What is an Evolutionary Architecture?
"An evolutionary architecture
supports guided, incremental change
across multiple dimensions."
Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change
What is an Evolutionary Architecture?
Evolutionary Architecture
vs.
Emergent Design
Evolutionary Architecture vs. Emergent Design
In Emergent design the code guides you on where to go next
based on learning
In Evolutionary architecture you guide the system on where to
go based on business objectives
Architecture Is A Balancing Act
Architecture Is A Balancing Act
Architects are constantly faced with trade-offs.
There are many, many different aspects to architecture, and
often improving one results in a reduction of another.
learnability
maintainability
manageability
modifiability
modularity
operateability
orthogonality
portability
precision
predictability
producibility
probability
recoverability
relevance
reliability
repeatability
reproducibility
resilience
The Architecture Qualities (“-ilities”)
dependability
deployability
discoverability
distributability
durability
effectiveness
efficiency
usability
extensibility
failure-
transparency
fault-tolerance
fidelity
flexibility
inspectability
Installability
Integrity
interoperability
accessibility
accountability
accuracy
adaptability
administrability
affordability
auditability
autonomy
availability
compatibility
composability
configurability
correctness
credibility
customizability
debugability
degradability
determinability
responsiveness
reusability
robustness
safety
scalability
seamlessness
self-sustainability
serviceability
secureability
simplicity
stability
standards-compliance
survivability
sustainability
tailorability
testability
timeliness
traceability
List from “Building Evolutionary Architectures”
Business goals
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Architecture
qualities
Double Loop Architecture
Double Loop Architecture
Double loop architecture is a process that you can use to
ensure that your architecture continues to satisfy the
business needs of your product.
Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change
A Fitness Function
"... is an objective function used to
summarize how close a
prospective design solution is to
achieving the set aims.”
Fitness Functions For Architecture
Define a set of criteria by which we can measure the
fitness of our architecture.
These can be qualitative or quantitative.
Qualitative functions can be automated.
They might also be atomic or holistic.
An atomic fitness function can be tested in isolation. For
example, modular coupling. Holistic functions must be
tested with other functions. For example performance and
reliability might impact each other.
Example Tools for Fitness Functions
! Static code analysis
! Unit test frameworks
! penetration testing tools
! load testing tools
! monitoring tools
! logging tools
! run through CI/CD pipeline
! trigger based on an event
Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change
Fitness Function for "Coupling"
public void testMatch() {
DependencyConstraint constraint = new DependencyConstraint();
JavaPackage persistence = constraint.addPackage("com.xyz.persistence");
JavaPackage web = constraint.addPackage("com.xyz.web");
JavaPackage util = constraint.addPackage("com.xyz.util");
persistence.dependsUpon(util);
web.dependsUpon(util);
jdepend.analyze();
assertEquals("Dependency mismatch", true,

jdepend.dependencyMatch(constraint));
}
Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change
Fitness Functions in CI/CD Pipeline
https://blogs.sap.com/2016/04/06/load-testing-with-jmeter-test-results-visualization-using-kibana-dashboards/
Make fitness function measures visible
Fitness Function Landing
Zones
http://wirfs-brock.com/blog/2011/07/20/introducing-landing-zones/
Attribute Minimum Target Outstanding
Battery life – standby 300 hours 320 hours 420 hours
Battery life – in use 270 minutes 300 minutes 380 minutes
Footprint in inches 2.5 x 4.8 x .57 2.4 x 4.6 x .4 2.31 x 4.5 x .37
Screen size (pixels) 600 x 400 600 x 400 960 x 640
Digital camera resolution 8 MP 8 MP 9 MP
Weight 5 oz. 4.8 oz. 4.4 oz.
Landing Zone for Smart Phone
Quality Min Target Outstanding
Recovery 12h 15m Immediate
Availability 99.9 99.99 99.999
Landing Zone for Availability
Double Loop Architecture - Example
Business goals
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Architecture
qualities
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Architecture
qualities
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Availability
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Architecture
decisions
Availability
Min Target Outstanding
Recovery 12h 30m Immediate
Availability 99.9 99.99 99.999
Fitness Function
Landing Zone
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Stories added to
backlog
Availability
Fitness Function
Landing Zone
• Provision rep. db
• Monitor service
• Automated switch
Min Target Outstanding
Recovery 12h 30m Immediate
Availability 99.9 99.99 99.999
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Stories added to
backlog
Availability
Fitness Function
Landing Zone
• Provision rep. db
• Monitor service
• Automated switch
Min Target Outstanding
Recovery 12h 30m Immediate
Availability 99.9 99.99 99.999
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Stories added to
backlog
Availability
Fitness Function
Landing Zone
• Provision rep. db
• Monitor service
• Automated switch
• Product availability
measures
• Deliberate fail
(simian army)
Min Target Outstanding
Recovery 12h 30m Immediate
Availability 99.9 99.99 99.999
Double Loop Architecture - Example
Customers can
work whenever
they want
Build
Architecture
measures
Stories added to
backlog
Availability
Fitness Function
Landing Zone
• Provision rep. db
• Monitor service
• Automated switch
• Product availability
measures
• Deliberate fail
(simian army)
Min Target Outstanding
Recovery 12h 30m Immediate
Availability 99.9 99.99 99.999
Double Loop Architecture - Example 2
Business goals
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Architecture
qualities
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Architecture
qualities
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Security
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Architecture
decisions
Fitness function
landing zone
Security
Min Target Outstanding
encrypt data Passwords encrypted
databases
Encrypted logs
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Stories added to
backlog
Fitness function
landing zone
Security
Min Target Outstanding
encrypt data Passwords encrypted
databases
Encrypted logs
• Add hashing to
password field in
user table
• …
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Stories added to
backlog
Fitness function
landing zone
Security
Min Target Outstanding
encrypt data Passwords encrypted
databases
Encrypted logs
• Add hashing to
password field in
user table
• …
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Stories added to
backlog
Fitness function
landing zone
Security
Min Target Outstanding
encrypt data Passwords encrypted
databases
Encrypted logs
• Add hashing to
password field in
user table
• …
Tests to validate
database is
encrypted
Double Loop Architecture - Example 2
We want to
safeguard
customer data
Build
Architecture
measures
Stories added to
backlog
Fitness function
landing zone
Security
Min Target Outstanding
encrypt data Passwords encrypted
databases
Encrypted logs
• Add hashing to
password field in
user table
• …
Tests to validate
database is
encrypted
Exercise
learnability
maintainability
manageability
modifiability
modularity
operateability
orthogonality
portability
precision
predictability
producibility
probability
recoverability
relevance
reliability
repeatability
reproducibility
resilience
The Architecture Qualities (“-ilities”)
dependability
deployability
discoverability
distributability
durability
effectiveness
efficiency
usability
extensibility
failure-
transparency
fault-tolerance
fidelity
flexibility
inspectability
Installability
Integrity
interoperability
accessibility
accountability
accuracy
adaptability
administrability
affordability
auditability
autonomy
availability
compatibility
composability
configurability
correctness
credibility
customizability
debugability
degradability
determinability
responsiveness
reusability
robustness
safety
scalability
seamlessness
self-sustainability
serviceability
secureability
simplicity
stability
standards-compliance
survivability
sustainability
tailorability
testability
timeliness
traceability
List from “Building Evolutionary Architectures”
Double Loop Architecture
Business goals
Build
Architecture
measures
Architecture
decisions
Architecture
guidance
Architecture
qualities
Double-loop Architecture Tips
Define your fitness functions early.
Collaborate with the team and the business to prioritize
architectural improvements.
Continually refine the fitness functions as you learn more
about the architectural needs, as you improve, or as your
goals evolve.
Principle - People First
Principle - People First
As technologists we have an instinct to try to solve our
problems through processes or tools.
Unfortunately a lot of our problems are only solvable through
individuals and interactions.
! Good architecture can’t be done in a isolation
! Different perspectives make a better product
! Avoid the us against them mentality “Business doesn’t
know what they’re talking about”, instead work together
to reach your shared goal
Pattern - Shared Prioritization
Pattern - Shared Prioritization
We make an artificial distinction between “business features”
and “architecture.” In reality both are necessary to deliver
value to our customers.
Prioritize architectural concerns (such as performance,
security, technical quality, evolvability, etc), UX requirements
(usability, accessibility), alongside business requirements as
peers.
This is fractally collaborative - it applies at team, product, and
portfolio level.
Pattern - Architect as Mentor
Being the repository of all knowledge and decision making
makes them into a dependency, and an impediment to teams
delivering rapidly.
Architects might struggle with finding their new role in an
environment where autonomous feature teams are rapidly
delivering.
They need to transition to being a coach and mentor.
They need to teach teams how to create good architecture,
and eventually empower the teams to make their own
architectural decisions.
Pattern - Architect as Mentor
Architect as Mentor - Story
A mutual colleague of Declan’s and I once had an opportunity to work at an
organization where one of the architects in the department he was working in....
Pattern: Lightweight Collaborative Design
Pattern: Lightweight Collaborative Design
While we want to minimize up-front design, we still have to think about the
architecture.
Create lightweight, collaborative, living design.
For example, do it in front of a white-board with the entire team.
http://agilemodeling.com/essays/initialArchitectureModeling.htm
Make the architecture visible
Architect Community
of Practice
Architect Community of Practice
Your architects will be spending more time with the team. This means that
they need to find a way to coordinate with each other.
Avoid introducing “governance” with accompanying hierarchy and process.
Instead create a community of practice which is empowered to provide
architectural oversight. It should be self-organizing and open to people other
then just the “architects.”
This encourages architecture over architects. It allows everyone to have a
say in the architecture, and provides a path for everyone to improve their
architectural knowledge and experience.
Architecture community - Story
Nulogy architecture community. Shawn was the first architect and wanted to share
that responsibility. At first this was challenging since developers kept deferring to
his decisions. We use a tool from Management 3.0 called delegation poker to help
determine the level of responsibility people should have and build our community
Architect community of practice - Story
Guidewire Architect group
Teams made many of their own decisions
Architects provided a broader view of the systems
Architects from different groups provided insight in how they solved similar
problems
Architecture Workshops
Architecture Workshops
Architecture Workshops
Regular Architecture Workshops:
• Allow everyone to contribute to the architecture, ensuring the
best possible solutions
• Spreads knowledge from the architect, and within the team
• Allows the architect and product owner to co-prioritize
between feature and architectural delivery
• Ensures that everyone understands the business goals
behind architectural decisions.
Architectural
Retrospectives
Conway’s law
“Any organization that designs a system
(defined broadly) will produce a design
whose structure is a copy of the
organization's communication structure.”
- Melvin Conway
Consequence of Conway’s Law
Your company’s organization structures will exert pressure on the architecture of
your applications.
For example, if you have “back-end,” “middle-tier,” and “front-end” hierarchies, and
you are attempting trying to move to a micro-service architecture you will find it
difficult. And in fact you might end up building “micro-services” that are “middle-
tier” and “back-end” services, rather than being organized around your domain.
Principle - Organize to take advantage of Conway’s Law.
Principle - Organize to take advantage of
Conway’s Law.
Define an org structure that supports your real or desired application structure.
Minimize dependencies between teams (which slow you down) by organizing to
match your architecture.
Pattern - Feature Teams
Pattern - Autonomous Feature Teams
A feature team has all of the necessary resources, skills and autonomy to
complete end-to-end customer features on their own. They work across all
components and disciplines.
(As opposed to a “component team” that only delivers one of many pieces that are
needed to deliver customer value).
By organizing into feature teams you lessen the dependencies that will slow down
delivery.
Key Take Aways
• Drive architecture qualities from business goals
• Guide architecture through double loop architecture
• Share architecture responsibilities through the
organization
References
Patterns of
Evolutionary
Architecture
Chris Gow and Shawn Button
Agile and Beyond 2018

Más contenido relacionado

La actualidad más candente

Architecture fundamentals
Architecture fundamentalsArchitecture fundamentals
Architecture fundamentalsReda Hmeid MBCS
 
Implementing Security Cs Ps
Implementing Security Cs PsImplementing Security Cs Ps
Implementing Security Cs Psdenigoin
 
WANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-setWANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-setBrad Appleton
 
How good is your software development team ?
How good is your software development team ?How good is your software development team ?
How good is your software development team ?Kinshuk Adhikary
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseKenan Sevindik
 
DevOps and the industrial revolution
DevOps and the industrial revolutionDevOps and the industrial revolution
DevOps and the industrial revolutionJonathan Fletcher
 
Why projects fail
Why projects failWhy projects fail
Why projects failPonto GP
 
IoT Meetup Stockholm - Designing Connected Products
IoT Meetup Stockholm - Designing Connected ProductsIoT Meetup Stockholm - Designing Connected Products
IoT Meetup Stockholm - Designing Connected ProductsMartin Charlier
 
White paper it best practices, focus on robert o'toole
White paper it best practices, focus on robert o'tooleWhite paper it best practices, focus on robert o'toole
White paper it best practices, focus on robert o'tooleComputer Aid, Inc
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmyWojciech Seliga
 
Leadership Without Management: Scaling Organizations by Scaling Engineers
Leadership Without Management: Scaling Organizations by Scaling EngineersLeadership Without Management: Scaling Organizations by Scaling Engineers
Leadership Without Management: Scaling Organizations by Scaling Engineersbcantrill
 
DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...
DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...
DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...Serena Software
 

La actualidad más candente (20)

Architecture fundamentals
Architecture fundamentalsArchitecture fundamentals
Architecture fundamentals
 
Implementing Security Cs Ps
Implementing Security Cs PsImplementing Security Cs Ps
Implementing Security Cs Ps
 
Architects and design-org
Architects and design-orgArchitects and design-org
Architects and design-org
 
WANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-setWANTED: Seeking Single Agile Knowledge Development Tool-set
WANTED: Seeking Single Agile Knowledge Development Tool-set
 
How good is your software development team ?
How good is your software development team ?How good is your software development team ?
How good is your software development team ?
 
Hs engineering engineering dvc
Hs engineering  engineering dvcHs engineering  engineering dvc
Hs engineering engineering dvc
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With Enterprise
 
DevOps and the industrial revolution
DevOps and the industrial revolutionDevOps and the industrial revolution
DevOps and the industrial revolution
 
BBOM-AgilePT-2010
BBOM-AgilePT-2010BBOM-AgilePT-2010
BBOM-AgilePT-2010
 
Why projects fail
Why projects failWhy projects fail
Why projects fail
 
IoT Meetup Stockholm - Designing Connected Products
IoT Meetup Stockholm - Designing Connected ProductsIoT Meetup Stockholm - Designing Connected Products
IoT Meetup Stockholm - Designing Connected Products
 
TesTrek Notes
TesTrek NotesTesTrek Notes
TesTrek Notes
 
White paper it best practices, focus on robert o'toole
White paper it best practices, focus on robert o'tooleWhite paper it best practices, focus on robert o'toole
White paper it best practices, focus on robert o'toole
 
Smart Housekeeping Apps
Smart Housekeeping AppsSmart Housekeeping Apps
Smart Housekeeping Apps
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy
 
Leadership Without Management: Scaling Organizations by Scaling Engineers
Leadership Without Management: Scaling Organizations by Scaling EngineersLeadership Without Management: Scaling Organizations by Scaling Engineers
Leadership Without Management: Scaling Organizations by Scaling Engineers
 
The New IT
The New ITThe New IT
The New IT
 
DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...
DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...
DevOps Frequently Asked Questions of 2013 with Gene Kim and Jonathan Thorpe (...
 
Distributed Teams
Distributed TeamsDistributed Teams
Distributed Teams
 
Agile Architecture
Agile ArchitectureAgile Architecture
Agile Architecture
 

Similar a Patterns of Evolutionary Architecture - Agile and Beyond 2018

Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore
 
Practices and obstacles in agile development
Practices and obstacles in agile developmentPractices and obstacles in agile development
Practices and obstacles in agile developmentThorsten Suckow-Homberg
 
Practices and obstacles in agile development
Practices and obstacles in agile developmentPractices and obstacles in agile development
Practices and obstacles in agile developmentGrgur Grisogono
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013lokori
 
Agile concepts for quality and process engineers for slideshare
Agile concepts for quality and process engineers   for slideshareAgile concepts for quality and process engineers   for slideshare
Agile concepts for quality and process engineers for slideshareYuval Yeret
 
Strange Bedfellows? Agile and Architecture
Strange Bedfellows? Agile and ArchitectureStrange Bedfellows? Agile and Architecture
Strange Bedfellows? Agile and ArchitectureCristian Southall
 
He mian agile project-inception
He mian   agile project-inceptionHe mian   agile project-inception
He mian agile project-inceptionOdd-e
 
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...AgileNetwork
 
bringing design to life with lean ux & lean engineering - Lean Day West 2013
bringing design to life with  lean ux & lean engineering - Lean Day West 2013bringing design to life with  lean ux & lean engineering - Lean Day West 2013
bringing design to life with lean ux & lean engineering - Lean Day West 2013Bill Scott
 
Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Sascha Wenninger
 
Perspectives on salesforce architecture Forcelandia talk 2017
Perspectives on salesforce architecture   Forcelandia talk 2017Perspectives on salesforce architecture   Forcelandia talk 2017
Perspectives on salesforce architecture Forcelandia talk 2017Steven Herod
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Extending Agile to Suite Big Projects
Extending Agile to Suite Big ProjectsExtending Agile to Suite Big Projects
Extending Agile to Suite Big ProjectsAmin Bandeali
 
Iti_(2).pdf
Iti_(2).pdfIti_(2).pdf
Iti_(2).pdfRanaFoud
 
Innovation in the Agile Age
Innovation in the Agile AgeInnovation in the Agile Age
Innovation in the Agile AgeScott Neilson
 
The Agile Primer: Agile Best Practices, Tips and Methods
The Agile Primer: Agile Best Practices, Tips and MethodsThe Agile Primer: Agile Best Practices, Tips and Methods
The Agile Primer: Agile Best Practices, Tips and MethodsThoughtworks
 
#Noprojects @Agile Venture Prato 2018
#Noprojects @Agile Venture Prato 2018#Noprojects @Agile Venture Prato 2018
#Noprojects @Agile Venture Prato 2018Dimitri Favre
 

Similar a Patterns of Evolutionary Architecture - Agile and Beyond 2018 (20)

Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
 
Practices and obstacles in agile development
Practices and obstacles in agile developmentPractices and obstacles in agile development
Practices and obstacles in agile development
 
Practices and obstacles in agile development
Practices and obstacles in agile developmentPractices and obstacles in agile development
Practices and obstacles in agile development
 
Design Thinking
Design ThinkingDesign Thinking
Design Thinking
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
 
Agile concepts for quality and process engineers for slideshare
Agile concepts for quality and process engineers   for slideshareAgile concepts for quality and process engineers   for slideshare
Agile concepts for quality and process engineers for slideshare
 
Strange Bedfellows? Agile and Architecture
Strange Bedfellows? Agile and ArchitectureStrange Bedfellows? Agile and Architecture
Strange Bedfellows? Agile and Architecture
 
Agile
AgileAgile
Agile
 
He mian agile project-inception
He mian   agile project-inceptionHe mian   agile project-inception
He mian agile project-inception
 
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
 
bringing design to life with lean ux & lean engineering - Lean Day West 2013
bringing design to life with  lean ux & lean engineering - Lean Day West 2013bringing design to life with  lean ux & lean engineering - Lean Day West 2013
bringing design to life with lean ux & lean engineering - Lean Day West 2013
 
Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Build your Own Technology Roadmap!
Build your Own Technology Roadmap!
 
Perspectives on salesforce architecture Forcelandia talk 2017
Perspectives on salesforce architecture   Forcelandia talk 2017Perspectives on salesforce architecture   Forcelandia talk 2017
Perspectives on salesforce architecture Forcelandia talk 2017
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Extending Agile to Suite Big Projects
Extending Agile to Suite Big ProjectsExtending Agile to Suite Big Projects
Extending Agile to Suite Big Projects
 
Iti_(2).pdf
Iti_(2).pdfIti_(2).pdf
Iti_(2).pdf
 
Innovation in the Agile Age
Innovation in the Agile AgeInnovation in the Agile Age
Innovation in the Agile Age
 
The Agile Primer: Agile Best Practices, Tips and Methods
The Agile Primer: Agile Best Practices, Tips and MethodsThe Agile Primer: Agile Best Practices, Tips and Methods
The Agile Primer: Agile Best Practices, Tips and Methods
 
#Noprojects @Agile Venture Prato 2018
#Noprojects @Agile Venture Prato 2018#Noprojects @Agile Venture Prato 2018
#Noprojects @Agile Venture Prato 2018
 

Más de Shawn Button

Continuous Deployment Through Technical Excellence
Continuous Deployment Through Technical ExcellenceContinuous Deployment Through Technical Excellence
Continuous Deployment Through Technical ExcellenceShawn Button
 
Fp for the oo programmer
Fp for the oo programmerFp for the oo programmer
Fp for the oo programmerShawn Button
 
The Science Of Troubleshooting
The Science Of TroubleshootingThe Science Of Troubleshooting
The Science Of TroubleshootingShawn Button
 
How To Be A Secret (change) Agent
How To Be A Secret (change) AgentHow To Be A Secret (change) Agent
How To Be A Secret (change) AgentShawn Button
 
How to be a secret change agent
How to be a secret change agentHow to be a secret change agent
How to be a secret change agentShawn Button
 
Sdec 13 winnipeg - want to empower your people- just begin! old-pp_version
Sdec 13   winnipeg - want to empower your people- just begin! old-pp_versionSdec 13   winnipeg - want to empower your people- just begin! old-pp_version
Sdec 13 winnipeg - want to empower your people- just begin! old-pp_versionShawn Button
 

Más de Shawn Button (6)

Continuous Deployment Through Technical Excellence
Continuous Deployment Through Technical ExcellenceContinuous Deployment Through Technical Excellence
Continuous Deployment Through Technical Excellence
 
Fp for the oo programmer
Fp for the oo programmerFp for the oo programmer
Fp for the oo programmer
 
The Science Of Troubleshooting
The Science Of TroubleshootingThe Science Of Troubleshooting
The Science Of Troubleshooting
 
How To Be A Secret (change) Agent
How To Be A Secret (change) AgentHow To Be A Secret (change) Agent
How To Be A Secret (change) Agent
 
How to be a secret change agent
How to be a secret change agentHow to be a secret change agent
How to be a secret change agent
 
Sdec 13 winnipeg - want to empower your people- just begin! old-pp_version
Sdec 13   winnipeg - want to empower your people- just begin! old-pp_versionSdec 13   winnipeg - want to empower your people- just begin! old-pp_version
Sdec 13 winnipeg - want to empower your people- just begin! old-pp_version
 

Último

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 

Último (20)

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 

Patterns of Evolutionary Architecture - Agile and Beyond 2018

  • 1. Patterns of Evolutionary Architecture Chris Gow and Shawn Button Agile and Beyond 2018
  • 2. Patterns of Evolutionary Architecture Chris Gow and Shawn Button Agile and Beyond 2018
  • 3.
  • 6. Anti-pattern: Big Ball of Mud “A Big Ball of Mud is a casually, even haphazardly, structured system. It’s organization and structure appears to be dictated more by expediency than design. A quick fix here, a bandaid there, a temporary solution on top of another and what was once tidy becomes overgrown as piecemeal growth allows elements of the system to sprawl in an uncontrolled fashion” - Brian Foote - 1999
  • 8. Anti-Pattern: Big Design Up Front We are afraid of making mistakes in design, so we spend a lot of time analyzing and designing up front, in order to make sure we get it right the first time. Unfortunately: ! We won't get it right. No matter how much effort we put into it. ! We will add things to our architecture that we will not need. ! It will delay our ability to deliver something quickly to customers to get early value and feedback.
  • 10. Anti-Pattern: No Design While we don’t want to design everything up front, we also don’t want to not have the entire system be emergent and have no plan. That typically leads to systems that are brittle, coupled in inappropriate ways and are viscous, not cohesive.
  • 11. Anti-Pattern - Ivory Tower Architect
  • 12. Anti-Pattern - Ivory Tower Architecture Architecture that is devised hidden away in relative isolation from the day-to-day development activities suffers from significant problems. The models in this type of architecture are often designed with little or no input from the development teams who will be charged with coding the architecture “vision”. Perfect in theory, but often unproven and incomplete, ivory tower architectures often fall victim to over complications and reflect features from every system the architects were involved with instead of what is necessary to solve your business problem.
  • 14. Anti-Pattern - Steamrolled Architect Architects that have little influence over the development of the product can’t ensure that the architecture continues to meet the needs of the business. We have seen this happen for multiple reasons, including: • The business does not listen to IT’s advice, and insists all development effort be spent on new features • The architect is powerless within IT, so the team does not take their guidance • Architects perform project management activities, rather than architectural • Architects who do not have the knowledge to guide good architecture
  • 15. Anti-Pattern: If a Framework is Good, Use It All!
  • 16. Anti-Pattern: If Framework is Good, Use It All! A common anti-pattern is the over-use of frameworks. Applications become excessively complicated by using a framework that requires a solution might not be a match for the problem we are trying to solve. E.g. Spring :) We also see this in large home-grown Enterprise frameworks. They are created to simplify and standardize creation of new apps, but end up forcing the same solution, regardless of whether it is the best solution. Find the simplest way to do something. Do it. Maybe that’s enough. If not you can come back and add to it later (see also YAGNI) As much as possible keep your domain logic agnostic of the framework you are using! Build an abstraction layer between you and your framework.
  • 18. Buying a product from a big vendor can seem very attractive. They promise you that they give you the features you want without needing those nasty developers. • First 80% is easy. Next 10% is hard. Last 10% is impossible. • Might not support for rapid delivery (no automated tests, poor code control practices, hard to deploy) • Might be hard to evolve (locked into a someone else’s architecture) • Vendor Lock-in - Makes it hard to change your mind • Look for vendors that allow extension over customization This also might apply to the frameworks you use. There lock-in pressure when you choose to use Drupal, Rails, Spring, Angular, etc. As much as possible keep your domain logic agnostic of the framework you are using! Anti-Pattern: Vendor King / Last 10% Trap
  • 19.
  • 21. Exercise: What Do You See At Your Org Find someone from a different organization than yours. In this pair, share what architectural anti-patterns do you see in your orgs? You have 5 minutes
  • 22. Principle - Design for Change
  • 23. Change Change in an application is inevitable. We need to support: 1. New business requirements (“We need to sell a new type of widget”) 2. Updates to existing technologies (“We need to patch our platform’s security hole ASAP”) 3. New technologies (“This database doesn’t support our needs, we need to move to a NoSQL db”) 4. New non-functional needs (Yah, our business is booming. Oh SH*T, our business is booming!)
  • 24. Principle - Evolvability as First Class Concern
  • 25. Principle - Evolvability as First-Class Architectural Concern Architecture involves a series of trade-offs. There are many different concerns that you need to juggle. Non-functional requirements (NFRs) like scalability, performance, security. As well there are business features are the point of the application. The requirement to deliver quickly, and to be able to evolve our application over time should prioritized against our need for performance, etc. They because “first class citizens” in all architectural tradeoffs. Alongside concerns such as scalability, performance, security, etc. Frequent Delivery and Evolvability and should be primary concern.
  • 27. Principle: Changeable/Deferred Decisions Changeable Decisions Whenever possible we want to make our decisions changeable. If we can change our decisions it protects us from the risk of future unknowns. Deferred Decisions For changes that are hard to reverse, figure out ways that we can defer the decisions as much as possible. The longer we wait the more we know about what we actually need.
  • 29. Pattern: Sacrificial Architecture Since we understand that it is difficult and expensive to get our architecture perfect up front, be prepared to throw away any architectural element. A great example is Twitter. They started with Ruby on Rails, which allowed them to quickly get into the market. When they needed to scale they changed their architecture. Yes it was painful to change, but they were able to get into the market quickly, and as they scaled they had a much better idea of their needs.
  • 31. Pattern: Build Throwaway Prototypes In order to see if a technology decision is correct, make a quick prototype. We stress that they should be throwaway, because we need to keep them light, and just do the minimum that we need in order to learn if it is suitable. If you are faced with a choice between several architectures, do prototypes for both and learn which works best for you. Do “set-based” design, where you explore multiple alternatives at once.
  • 32. Pattern - Invest In Practices
  • 33. Pattern: Invest in Practices Delivering frequently requires discipline and heavy investment in modern technical practices. You will need This might require: ! Creating new “Devops” infrastructure ! Training/coaching/mentoring in the new practices ! Hiring new people with the new skills ! Slowing down a little until you gain the ability to speed up (relief from deadlines)
  • 35. Exercise: The Process of Architecture Find a different person from a different organization than yours. In this pair, share how your org ensures good architecture happens. You have 5 minutes.
  • 37. What is an Evolutionary Architecture? "An evolutionary architecture supports guided, incremental change across multiple dimensions." Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change
  • 38. What is an Evolutionary Architecture?
  • 40. Evolutionary Architecture vs. Emergent Design In Emergent design the code guides you on where to go next based on learning In Evolutionary architecture you guide the system on where to go based on business objectives
  • 41. Architecture Is A Balancing Act
  • 42. Architecture Is A Balancing Act Architects are constantly faced with trade-offs. There are many, many different aspects to architecture, and often improving one results in a reduction of another.
  • 43. learnability maintainability manageability modifiability modularity operateability orthogonality portability precision predictability producibility probability recoverability relevance reliability repeatability reproducibility resilience The Architecture Qualities (“-ilities”) dependability deployability discoverability distributability durability effectiveness efficiency usability extensibility failure- transparency fault-tolerance fidelity flexibility inspectability Installability Integrity interoperability accessibility accountability accuracy adaptability administrability affordability auditability autonomy availability compatibility composability configurability correctness credibility customizability debugability degradability determinability responsiveness reusability robustness safety scalability seamlessness self-sustainability serviceability secureability simplicity stability standards-compliance survivability sustainability tailorability testability timeliness traceability List from “Building Evolutionary Architectures”
  • 45. Double Loop Architecture Double loop architecture is a process that you can use to ensure that your architecture continues to satisfy the business needs of your product.
  • 46. Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change A Fitness Function "... is an objective function used to summarize how close a prospective design solution is to achieving the set aims.”
  • 47. Fitness Functions For Architecture Define a set of criteria by which we can measure the fitness of our architecture. These can be qualitative or quantitative. Qualitative functions can be automated. They might also be atomic or holistic. An atomic fitness function can be tested in isolation. For example, modular coupling. Holistic functions must be tested with other functions. For example performance and reliability might impact each other.
  • 48. Example Tools for Fitness Functions ! Static code analysis ! Unit test frameworks ! penetration testing tools ! load testing tools ! monitoring tools ! logging tools ! run through CI/CD pipeline ! trigger based on an event
  • 49. Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change Fitness Function for "Coupling" public void testMatch() { DependencyConstraint constraint = new DependencyConstraint(); JavaPackage persistence = constraint.addPackage("com.xyz.persistence"); JavaPackage web = constraint.addPackage("com.xyz.web"); JavaPackage util = constraint.addPackage("com.xyz.util"); persistence.dependsUpon(util); web.dependsUpon(util); jdepend.analyze(); assertEquals("Dependency mismatch", true,
 jdepend.dependencyMatch(constraint)); }
  • 50. Ford, Neal; Parsons, Rebecca; Kua, Patrick. Building Evolutionary Architectures: Support Constant Change Fitness Functions in CI/CD Pipeline
  • 53. http://wirfs-brock.com/blog/2011/07/20/introducing-landing-zones/ Attribute Minimum Target Outstanding Battery life – standby 300 hours 320 hours 420 hours Battery life – in use 270 minutes 300 minutes 380 minutes Footprint in inches 2.5 x 4.8 x .57 2.4 x 4.6 x .4 2.31 x 4.5 x .37 Screen size (pixels) 600 x 400 600 x 400 960 x 640 Digital camera resolution 8 MP 8 MP 9 MP Weight 5 oz. 4.8 oz. 4.4 oz. Landing Zone for Smart Phone
  • 54. Quality Min Target Outstanding Recovery 12h 15m Immediate Availability 99.9 99.99 99.999 Landing Zone for Availability
  • 55. Double Loop Architecture - Example Business goals Build Architecture measures Architecture decisions Architecture guidance Architecture qualities
  • 56. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Architecture decisions Architecture guidance Architecture qualities
  • 57. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Architecture decisions Architecture guidance Availability
  • 58. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Architecture decisions Availability Min Target Outstanding Recovery 12h 30m Immediate Availability 99.9 99.99 99.999 Fitness Function Landing Zone
  • 59. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Stories added to backlog Availability Fitness Function Landing Zone • Provision rep. db • Monitor service • Automated switch Min Target Outstanding Recovery 12h 30m Immediate Availability 99.9 99.99 99.999
  • 60. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Stories added to backlog Availability Fitness Function Landing Zone • Provision rep. db • Monitor service • Automated switch Min Target Outstanding Recovery 12h 30m Immediate Availability 99.9 99.99 99.999
  • 61. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Stories added to backlog Availability Fitness Function Landing Zone • Provision rep. db • Monitor service • Automated switch • Product availability measures • Deliberate fail (simian army) Min Target Outstanding Recovery 12h 30m Immediate Availability 99.9 99.99 99.999
  • 62. Double Loop Architecture - Example Customers can work whenever they want Build Architecture measures Stories added to backlog Availability Fitness Function Landing Zone • Provision rep. db • Monitor service • Automated switch • Product availability measures • Deliberate fail (simian army) Min Target Outstanding Recovery 12h 30m Immediate Availability 99.9 99.99 99.999
  • 63. Double Loop Architecture - Example 2 Business goals Build Architecture measures Architecture decisions Architecture guidance Architecture qualities
  • 64. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Architecture decisions Architecture guidance Architecture qualities
  • 65. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Architecture decisions Architecture guidance Security
  • 66. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Architecture decisions Fitness function landing zone Security Min Target Outstanding encrypt data Passwords encrypted databases Encrypted logs
  • 67. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Stories added to backlog Fitness function landing zone Security Min Target Outstanding encrypt data Passwords encrypted databases Encrypted logs • Add hashing to password field in user table • …
  • 68. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Stories added to backlog Fitness function landing zone Security Min Target Outstanding encrypt data Passwords encrypted databases Encrypted logs • Add hashing to password field in user table • …
  • 69. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Stories added to backlog Fitness function landing zone Security Min Target Outstanding encrypt data Passwords encrypted databases Encrypted logs • Add hashing to password field in user table • … Tests to validate database is encrypted
  • 70. Double Loop Architecture - Example 2 We want to safeguard customer data Build Architecture measures Stories added to backlog Fitness function landing zone Security Min Target Outstanding encrypt data Passwords encrypted databases Encrypted logs • Add hashing to password field in user table • … Tests to validate database is encrypted
  • 72. learnability maintainability manageability modifiability modularity operateability orthogonality portability precision predictability producibility probability recoverability relevance reliability repeatability reproducibility resilience The Architecture Qualities (“-ilities”) dependability deployability discoverability distributability durability effectiveness efficiency usability extensibility failure- transparency fault-tolerance fidelity flexibility inspectability Installability Integrity interoperability accessibility accountability accuracy adaptability administrability affordability auditability autonomy availability compatibility composability configurability correctness credibility customizability debugability degradability determinability responsiveness reusability robustness safety scalability seamlessness self-sustainability serviceability secureability simplicity stability standards-compliance survivability sustainability tailorability testability timeliness traceability List from “Building Evolutionary Architectures”
  • 73. Double Loop Architecture Business goals Build Architecture measures Architecture decisions Architecture guidance Architecture qualities
  • 74. Double-loop Architecture Tips Define your fitness functions early. Collaborate with the team and the business to prioritize architectural improvements. Continually refine the fitness functions as you learn more about the architectural needs, as you improve, or as your goals evolve.
  • 76. Principle - People First As technologists we have an instinct to try to solve our problems through processes or tools. Unfortunately a lot of our problems are only solvable through individuals and interactions. ! Good architecture can’t be done in a isolation ! Different perspectives make a better product ! Avoid the us against them mentality “Business doesn’t know what they’re talking about”, instead work together to reach your shared goal
  • 77. Pattern - Shared Prioritization
  • 78. Pattern - Shared Prioritization We make an artificial distinction between “business features” and “architecture.” In reality both are necessary to deliver value to our customers. Prioritize architectural concerns (such as performance, security, technical quality, evolvability, etc), UX requirements (usability, accessibility), alongside business requirements as peers. This is fractally collaborative - it applies at team, product, and portfolio level.
  • 79. Pattern - Architect as Mentor
  • 80. Being the repository of all knowledge and decision making makes them into a dependency, and an impediment to teams delivering rapidly. Architects might struggle with finding their new role in an environment where autonomous feature teams are rapidly delivering. They need to transition to being a coach and mentor. They need to teach teams how to create good architecture, and eventually empower the teams to make their own architectural decisions. Pattern - Architect as Mentor
  • 81. Architect as Mentor - Story A mutual colleague of Declan’s and I once had an opportunity to work at an organization where one of the architects in the department he was working in....
  • 83. Pattern: Lightweight Collaborative Design While we want to minimize up-front design, we still have to think about the architecture. Create lightweight, collaborative, living design. For example, do it in front of a white-board with the entire team.
  • 86. Architect Community of Practice Your architects will be spending more time with the team. This means that they need to find a way to coordinate with each other. Avoid introducing “governance” with accompanying hierarchy and process. Instead create a community of practice which is empowered to provide architectural oversight. It should be self-organizing and open to people other then just the “architects.” This encourages architecture over architects. It allows everyone to have a say in the architecture, and provides a path for everyone to improve their architectural knowledge and experience.
  • 87. Architecture community - Story Nulogy architecture community. Shawn was the first architect and wanted to share that responsibility. At first this was challenging since developers kept deferring to his decisions. We use a tool from Management 3.0 called delegation poker to help determine the level of responsibility people should have and build our community
  • 88. Architect community of practice - Story Guidewire Architect group Teams made many of their own decisions Architects provided a broader view of the systems Architects from different groups provided insight in how they solved similar problems
  • 91. Architecture Workshops Regular Architecture Workshops: • Allow everyone to contribute to the architecture, ensuring the best possible solutions • Spreads knowledge from the architect, and within the team • Allows the architect and product owner to co-prioritize between feature and architectural delivery • Ensures that everyone understands the business goals behind architectural decisions.
  • 93. Conway’s law “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.” - Melvin Conway
  • 94.
  • 95. Consequence of Conway’s Law Your company’s organization structures will exert pressure on the architecture of your applications. For example, if you have “back-end,” “middle-tier,” and “front-end” hierarchies, and you are attempting trying to move to a micro-service architecture you will find it difficult. And in fact you might end up building “micro-services” that are “middle- tier” and “back-end” services, rather than being organized around your domain.
  • 96. Principle - Organize to take advantage of Conway’s Law.
  • 97. Principle - Organize to take advantage of Conway’s Law. Define an org structure that supports your real or desired application structure. Minimize dependencies between teams (which slow you down) by organizing to match your architecture.
  • 99. Pattern - Autonomous Feature Teams A feature team has all of the necessary resources, skills and autonomy to complete end-to-end customer features on their own. They work across all components and disciplines. (As opposed to a “component team” that only delivers one of many pieces that are needed to deliver customer value). By organizing into feature teams you lessen the dependencies that will slow down delivery.
  • 100. Key Take Aways • Drive architecture qualities from business goals • Guide architecture through double loop architecture • Share architecture responsibilities through the organization
  • 102. Patterns of Evolutionary Architecture Chris Gow and Shawn Button Agile and Beyond 2018