SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Eberhard Wolff, adesso AG


Ten Advices for Architects
About me
•    Eberhard Wolff
•    Architecture & Technology Manager at adesso
•    adesso is a leading IT consultancy in Germany
•    Speaker
•    Author (e.g. first German Spring book)
•    Blog: http://ewolff.com
•    Twitter: @ewolff
•    http://slideshare.com/ewolff
•    eberhard.wolff@adesso.de
Why?
•  Educating architects internally at adesso

•  What should they know?

•  What is the bare minimum?
Software Architect
Software architect is a general term
with many accepted definitions
which refers to a broad range of roles.
        Not really well defined…
Software Architecture
The software architecture of a system is the set of
                        structures
needed to reason about it, which comprise
                   software elements,
              relations among them, and
                   properties of both.
Why We Care
    Defines
Structures                    Performance
Software elements

non-functional
Relations
Properties
                              Availability


                              Productivity


requirements &
      Software
     Architecture
                             Maintainability



    quality                       Security


                              Operations
Software Architect:
              Responsibilities
•  Manager
•  Responsibility: non-functional
   requirements / quality
•  Tool: Define and enforce
   architecture

•  Functional requirements covered
   by requirements process
•  Functional requirements influence
   the architecture
YOU ARE NOT AN
ARCHITECT!
Agile Development i.e. Scrum
Where is    Scrum Master
          Removes obstacles
            Enforces rules


  the
Architect         Stories




   ?
   Product
    Owner
Creates stories
                                     Team
                                Self-organizing
                              Implements stories
You Are Not An Architect!
•    No manager
•    Need to convince not manage
•    Therefore: Not that different from a developer
•    More experienced
•    More knowledge
Is “Architect” a Good Metaphor?
•  Buildings are physical entities
   –  Hard to change

•  Construction industry is established
•  …and has a long history

•  Buildings can be fully specified
•  Software can’t (see Agility)

•  Clear separation: Architect vs.
   construction worker
•  Common for a Software Architect to
   be a former developer
•  …or even doing some coding
Different Way to Think About
  1999
           Roles
                     2001
Software Craftsmanship Manifesto
             (2009)
•  As aspiring Software Craftsmen we are raising the bar
   of professional software development by practicing it
   and helping others learn the craft. Through this work
   we have come to value:

•  Not only working software,
   –  but also well-crafted software
•  Not only responding to change,
   –  but also steadily adding value
•  Not only individuals and interactions,
   –  but also a community of professionals
•  Not only customer collaboration,
   –  but also productive partnerships
Architect as a Master Craftsman
•  More experienced
•  Knows the tools very
   well
•  Guides and helps others
•  Incorporates feedback
•  Improves the craft
•  Quality

•  Will work on code
•  But knows the bigger
   picture of the project

•  Education and work on
   the project at hand
YOUR OPINION MATTERS!
Your Opinion Matters!
•  You need to have your own opinion
•  …about technologies
•  …about architecture approaches

•  Listen to opinions of others
•  …but come up with your own
•  Your responsibility
•  http://lemmings.mytrash.tv/
Your Opinion Matters!
•  This applies to this conference
•  …and this talk
•  If it does not make sense to you
  –  say so


•  Your opinion – your responsibility
•  Even if someone is a speaker – he might still
   be wrong
•  Never be intimidated!
PEOPLE WANT TO IMPROVE!
People Want to Improve!
•  Technical people take pride in
   their skills
•  …often also quality

•  They want to improve and create
   great quality!

•  Guide the way
•  Define what quality is
What You Can Do…
•    Education
•    Review
•    Pairing
•    Talks
•    …
What If They Don’t Want to
              Improve?
•  You are screwed
•  No way to create high quality with
   those people

•  Ensure that they know what
   quality is and what is expected
ARCHITECTURE = TRADE OFF
Architecture = Trade Off
•  There are numerous ways to architect
   each system
•  There is no one single right
   architecture
•  Each architecture has strength and
   weaknesses

•  Think about architecture in terms of
   Trade Offs
•  Do they match your requirements?
Example for Trade Off:
            Persistence
•  Option: SQL
  –  More control
  –  Less infrastructure
•  Option: O/R mapper
  –  Seemingly easier to use
  –  But a complex piece of technology
•  Option: NoSQL
  –  A lot of options with individual strength and
     weaknesses
IMPROVE YOUR
VOCABULARY
Vocabulary
•  Approaches to architecting a
   system
•  Defines what kind of architectures
   and systems you can express

•  The more you know the better you
   can do trade offs
•  Will offer new perspectives on what
   you doing
•  Also it is interesting to learn what
   others do
How to Improve Your Vocabulary
•  Patterns
  –  Fowler: Patterns of Enterprise
     Application Architecture
  –  Gamma et al: Design Patterns
  –  Buschmann et al: Patterns-
     Oriented Software Architecture
  –  Hohpe: Pattern of Enterprise
     Integration
•  Evans: Domain Driven Design
How to Improve Your Vocabulary
•  Technologies
  –  How many Persistence
     approaches do you know?
  –  Should at least have a high level
     overview
  –  There is life beyond standards
  –  Can save a lot of time and effort
•  Conferences
•  Web Sites
•  Reviews
Again: Persistence
•  “Patterns of Enterprise Application
   Architecture” lists persistence approaches

•  Ruby on Rails uses Active Record (i.e.
   objects can store themselves)
•  myBATIS for easy persistence using SQL
   (Java / .NET)
•  …
EAT YOUR OWN DOG FOOD!
Eat Your Own Dog Food!
•  Defining an architecture is easy
•  It is hard to create the right
   architecture

•  Need feedback

•  Eat your own dog food: Develop
   code yourself
•  Do pair programming
•  To become grounded
NO BROKEN WINDOWS
Broken Windows Theory
•  Once windows are not
   repaired…
•  …vandals will break more
•  …break into the building
•  …

•  Accepting compromises on
   quality is risky
•  …but if you strive for ultimate
   quality everywhere, you will fail

•  In particular with legacy
   software
Broken Windows in Architecture
•  Compromises on quality will
   become out of hand
•  Might speed up a project for
   a limited time
•  But: Will hurt productivity in
   the long run
•  …and ultimately slow it down
•  Higher quality can mean less
   cost and quicker delivery
•  Metaphor: Technical debt
•  Much like debt in real life
But…
•  There might still be broken windows
•  There might be more and less skilled
   developers

•  What do I do?
STRATEGIC DESIGN
Domain Driven Design
•  “Tackling Complexity
   in the Heart of
   Software”

•  E.g. Ubiquitous
   Language
   for Code, Developers
   and Customers
Strategic Domain Driven Design
•  Bounded Context:
   Model used only in a specific
   part of the system

•  Context Map:
   Translate models from
   different parts of the system

•  Anti-Corruption Layer:
   Make sure the core domain
   is not corrupted
Strategic Domain Driven Design
•  Can be used to manage
   quality
•  What are the core business
   domains?
•  Focus on quality of those
•  Isolate them from the rest of
   the system
•  Let the best developer work
   on the most important parts
Strategic Domain Driven Design
•  Acknowledges that not all developers are
   equals
•  …and not all parts of a system will have the
   same quality

•  Allows you to steer which parts will be better
CARE ABOUT ARCHITECTURE
AND CODE
Care About Architecture and Code
•  You can draw diagrams until the end of time
•  It’s the code and the architecture in the code
   that matters
•  Architectures is only used to influence code
MEASURE AND REDUCE
Measure and Reduce
•  No way to know all code by heart
•  Still: You and the team need to understand
   the state of the project
•  Need tools to measure and reduce
   information
Sonar
•    Server that integrates a lot of systems
•    Static code analysis (Findbugs, PMD etc)
•    Lines of Code, classes
•    Test code coverage
•    Complexity
•    Historized i.e. easy to spot trends
•    Easy to install
•    Visit http://nemo.sonarsource.org/ for
     examples
Draw Conclusions!
•  Do not try to enforce a certain value for a
   metric!
•  Metrics are used to reduce information and
   get warning signs
•  Use them to improve quality
•  If you enforce a value mindlessly problems
   will be avoided – not solved
•  …and measurements will become worthless
DEPENDENCIES MATTER!
Dependency Management
•  Essential for measuring architecture
•  i.e. what is the structure in the code?

•  Why are Dependencies so important?
What is Architecture?
•  Architecture is the decomposition of systems
   in parts

•  No large or complex parts
•  No cyclic dependencies
Normal Dependencies
•  A and B might be
   packages or classes
                             Component A

•  B depends on A, i.e. it
   uses classes, methods
   etc.
                             Component B
•  Changes in A impact B
•  Changes in B do not
   impact A
Cyclic Dependency
•  B depends on A and A on
   B
                              Component A
•  Changes in A impact B
•  Changes in B impact A
•  A and B can only be
   changed as one unit        Component B
•  …even though they should
   be two separate units
Bigger cyclic dependencies

 Component A


                Component B


 Component C
Measure Dependencies!
•  …otherwise they will get out of hand
•  Cyclic dependencies mean:
  –  It should be separated according to the
     architecture
  –  …but it is not


•  JDepend – rather outdated
•  Structure 101
•  Sonargraph
Care about
                You are Not an    Architecture is
 Code and                                           Quality
                  Architect         Trade Off
Architecture


  Measure and      Eat your own                     No Broken
                                      Vocabulary
    Reduce          Dog Food                        Windows



 Dependencies      People Want                       Strategic
    Matter          To Improve                        Design



 And Remember: Your Opinion Matters!
Wir suchen Sie als
Ø    Software-Architekt (m/w)
Ø    Projektleiter (m/w)
Ø    Senior Software Engineer (m/w)


Ø    Kommen Sie zum Stand und gewinnen Sie ein iPad 2!

  jobs@adesso.de
  www.AAAjobs.de

Más contenido relacionado

La actualidad más candente

Cqrs and Event Sourcing Intro For Developers
Cqrs and Event Sourcing Intro For DevelopersCqrs and Event Sourcing Intro For Developers
Cqrs and Event Sourcing Intro For Developerswojtek_s
 
Design Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The WorldDesign Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The WorldSaurabh Moody
 
Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)IT Arena
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in phpLeonardo Proietti
 
Software Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesSoftware Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesGanesh Samarthyam
 
Hexagonal architecture - message-oriented software design
Hexagonal architecture  - message-oriented software designHexagonal architecture  - message-oriented software design
Hexagonal architecture - message-oriented software designMatthias Noback
 
How I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsHow I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsAndy Maleh
 
Solid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven DesignSolid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven DesignIrwansyah Irwansyah
 

La actualidad más candente (8)

Cqrs and Event Sourcing Intro For Developers
Cqrs and Event Sourcing Intro For DevelopersCqrs and Event Sourcing Intro For Developers
Cqrs and Event Sourcing Intro For Developers
 
Design Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The WorldDesign Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The World
 
Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in php
 
Software Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and PracticesSoftware Architecture: Principles, Patterns and Practices
Software Architecture: Principles, Patterns and Practices
 
Hexagonal architecture - message-oriented software design
Hexagonal architecture  - message-oriented software designHexagonal architecture  - message-oriented software design
Hexagonal architecture - message-oriented software design
 
How I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsHow I Learned To Apply Design Patterns
How I Learned To Apply Design Patterns
 
Solid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven DesignSolid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven Design
 

Destacado

Redesigning the organization
Redesigning the organizationRedesigning the organization
Redesigning the organizationRobert Leneway
 
Material Information for Architects
Material Information for ArchitectsMaterial Information for Architects
Material Information for ArchitectsHeather Seneff
 
IBS Builder's Show 2017 Review
IBS Builder's Show 2017 ReviewIBS Builder's Show 2017 Review
IBS Builder's Show 2017 ReviewWhizard Strategy
 
Bacons Architectural Sun Shades
Bacons Architectural Sun ShadesBacons Architectural Sun Shades
Bacons Architectural Sun Shadesrodvb
 
Talking to Architects: How Social Media Can Help - RIBA CPD Providers Networ...
Talking to Architects: How Social Media Can Help -  RIBA CPD Providers Networ...Talking to Architects: How Social Media Can Help -  RIBA CPD Providers Networ...
Talking to Architects: How Social Media Can Help - RIBA CPD Providers Networ...Su Butcher
 
What architects want - getting your construction product specified
What architects want - getting your construction product specifiedWhat architects want - getting your construction product specified
What architects want - getting your construction product specifiedCompetitive Advantage
 
Broken Window Theory
Broken Window TheoryBroken Window Theory
Broken Window Theorysinghajay92
 
Ready-Mix Concrete
Ready-Mix ConcreteReady-Mix Concrete
Ready-Mix ConcreteUzma Zaki
 
So you want to be a pre sales architect or consultant
So you want to be a pre sales architect or consultantSo you want to be a pre sales architect or consultant
So you want to be a pre sales architect or consultantK.Mohamed Faizal
 
The Architect's Clue Bucket
The Architect's Clue BucketThe Architect's Clue Bucket
The Architect's Clue BucketRuth Malan
 

Destacado (11)

Redesigning the organization
Redesigning the organizationRedesigning the organization
Redesigning the organization
 
Material Information for Architects
Material Information for ArchitectsMaterial Information for Architects
Material Information for Architects
 
IBS Builder's Show 2017 Review
IBS Builder's Show 2017 ReviewIBS Builder's Show 2017 Review
IBS Builder's Show 2017 Review
 
Bacons Architectural Sun Shades
Bacons Architectural Sun ShadesBacons Architectural Sun Shades
Bacons Architectural Sun Shades
 
Talking to Architects: How Social Media Can Help - RIBA CPD Providers Networ...
Talking to Architects: How Social Media Can Help -  RIBA CPD Providers Networ...Talking to Architects: How Social Media Can Help -  RIBA CPD Providers Networ...
Talking to Architects: How Social Media Can Help - RIBA CPD Providers Networ...
 
What architects want - getting your construction product specified
What architects want - getting your construction product specifiedWhat architects want - getting your construction product specified
What architects want - getting your construction product specified
 
Broken Window Theory
Broken Window TheoryBroken Window Theory
Broken Window Theory
 
How to Sell Architects
How to Sell ArchitectsHow to Sell Architects
How to Sell Architects
 
Ready-Mix Concrete
Ready-Mix ConcreteReady-Mix Concrete
Ready-Mix Concrete
 
So you want to be a pre sales architect or consultant
So you want to be a pre sales architect or consultantSo you want to be a pre sales architect or consultant
So you want to be a pre sales architect or consultant
 
The Architect's Clue Bucket
The Architect's Clue BucketThe Architect's Clue Bucket
The Architect's Clue Bucket
 

Similar a Ten Advices for Architects

Software is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeSoftware is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeCantina
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1gururguru01
 
Tech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PMTech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PMProduct School
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2Jim Brisson
 
The Profession Of IT Architecture
The Profession Of IT ArchitectureThe Profession Of IT Architecture
The Profession Of IT ArchitectureChristopher Grant
 
Agile methodology in cloud computing
Agile methodology in cloud computingAgile methodology in cloud computing
Agile methodology in cloud computingAhmed M. Abed
 
The role of the architect in agile
The role of the architect in agileThe role of the architect in agile
The role of the architect in agileDror Helper
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
 
An introduction to fundamental architecture concepts
An introduction to fundamental architecture conceptsAn introduction to fundamental architecture concepts
An introduction to fundamental architecture conceptswweinmeyer79
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignJeremy Miller
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & TestQualitest
 
Modern Software Architecture
Modern Software Architecture Modern Software Architecture
Modern Software Architecture Ahmed Marzouk
 
Software architecture in a DevOps world
Software architecture in a DevOps worldSoftware architecture in a DevOps world
Software architecture in a DevOps worldBert Jan Schrijver
 
Coding Standard And Code Review
Coding Standard And Code ReviewCoding Standard And Code Review
Coding Standard And Code ReviewMilan Vukoje
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture IntroductionSARCCOM
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introductionFreddy Munandar
 

Similar a Ten Advices for Architects (20)

Software is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for ChangeSoftware is not a Building - Designing Technical Architecture for Change
Software is not a Building - Designing Technical Architecture for Change
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1
 
Tech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PMTech and Product Management by Foursquare's PM
Tech and Product Management by Foursquare's PM
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
The Profession Of IT Architecture
The Profession Of IT ArchitectureThe Profession Of IT Architecture
The Profession Of IT Architecture
 
Introduction
IntroductionIntroduction
Introduction
 
Agile methodology in cloud computing
Agile methodology in cloud computingAgile methodology in cloud computing
Agile methodology in cloud computing
 
The role of the architect in agile
The role of the architect in agileThe role of the architect in agile
The role of the architect in agile
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
An introduction to fundamental architecture concepts
An introduction to fundamental architecture conceptsAn introduction to fundamental architecture concepts
An introduction to fundamental architecture concepts
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & Test
 
Modern Software Architecture
Modern Software Architecture Modern Software Architecture
Modern Software Architecture
 
Software architecture in a DevOps world
Software architecture in a DevOps worldSoftware architecture in a DevOps world
Software architecture in a DevOps world
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
Coding Standard And Code Review
Coding Standard And Code ReviewCoding Standard And Code Review
Coding Standard And Code Review
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
Software architecture introduction
Software architecture introductionSoftware architecture introduction
Software architecture introduction
 

Más de Eberhard Wolff

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and AlternativesEberhard Wolff
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryEberhard Wolff
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncEberhard Wolff
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with JavaEberhard Wolff
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!Eberhard Wolff
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for MicroservicesEberhard Wolff
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into MicroservicesEberhard Wolff
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileEberhard Wolff
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?Eberhard Wolff
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesEberhard Wolff
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityEberhard Wolff
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesEberhard Wolff
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology StackEberhard Wolff
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for InnovationEberhard Wolff
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryEberhard Wolff
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with JavaEberhard Wolff
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support AgileEberhard Wolff
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale AgileEberhard Wolff
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsEberhard Wolff
 

Más de Eberhard Wolff (20)

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and Alternatives
 
Beyond Microservices
Beyond MicroservicesBeyond Microservices
Beyond Microservices
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous Delivery
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, Async
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with Java
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into Microservices
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale Agile
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for Microservices
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=Maintainability
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to Microservices
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology Stack
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for Innovation
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous Delivery
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with Java
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support Agile
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale Agile
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
 

Último

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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
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)
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
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!
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Ten Advices for Architects

  • 1. Eberhard Wolff, adesso AG Ten Advices for Architects
  • 2. About me •  Eberhard Wolff •  Architecture & Technology Manager at adesso •  adesso is a leading IT consultancy in Germany •  Speaker •  Author (e.g. first German Spring book) •  Blog: http://ewolff.com •  Twitter: @ewolff •  http://slideshare.com/ewolff •  eberhard.wolff@adesso.de
  • 3. Why? •  Educating architects internally at adesso •  What should they know? •  What is the bare minimum?
  • 4. Software Architect Software architect is a general term with many accepted definitions which refers to a broad range of roles. Not really well defined…
  • 5. Software Architecture The software architecture of a system is the set of structures needed to reason about it, which comprise software elements, relations among them, and properties of both.
  • 6. Why We Care Defines Structures Performance Software elements non-functional Relations Properties Availability Productivity requirements & Software Architecture Maintainability quality Security Operations
  • 7. Software Architect: Responsibilities •  Manager •  Responsibility: non-functional requirements / quality •  Tool: Define and enforce architecture •  Functional requirements covered by requirements process •  Functional requirements influence the architecture
  • 8. YOU ARE NOT AN ARCHITECT!
  • 9. Agile Development i.e. Scrum Where is Scrum Master Removes obstacles Enforces rules the Architect Stories ? Product Owner Creates stories Team Self-organizing Implements stories
  • 10. You Are Not An Architect! •  No manager •  Need to convince not manage •  Therefore: Not that different from a developer •  More experienced •  More knowledge
  • 11. Is “Architect” a Good Metaphor? •  Buildings are physical entities –  Hard to change •  Construction industry is established •  …and has a long history •  Buildings can be fully specified •  Software can’t (see Agility) •  Clear separation: Architect vs. construction worker •  Common for a Software Architect to be a former developer •  …or even doing some coding
  • 12. Different Way to Think About 1999 Roles 2001
  • 13. Software Craftsmanship Manifesto (2009) •  As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: •  Not only working software, –  but also well-crafted software •  Not only responding to change, –  but also steadily adding value •  Not only individuals and interactions, –  but also a community of professionals •  Not only customer collaboration, –  but also productive partnerships
  • 14. Architect as a Master Craftsman •  More experienced •  Knows the tools very well •  Guides and helps others •  Incorporates feedback •  Improves the craft •  Quality •  Will work on code •  But knows the bigger picture of the project •  Education and work on the project at hand
  • 16. Your Opinion Matters! •  You need to have your own opinion •  …about technologies •  …about architecture approaches •  Listen to opinions of others •  …but come up with your own •  Your responsibility
  • 18. Your Opinion Matters! •  This applies to this conference •  …and this talk •  If it does not make sense to you –  say so •  Your opinion – your responsibility •  Even if someone is a speaker – he might still be wrong •  Never be intimidated!
  • 19. PEOPLE WANT TO IMPROVE!
  • 20. People Want to Improve! •  Technical people take pride in their skills •  …often also quality •  They want to improve and create great quality! •  Guide the way •  Define what quality is
  • 21. What You Can Do… •  Education •  Review •  Pairing •  Talks •  …
  • 22. What If They Don’t Want to Improve? •  You are screwed •  No way to create high quality with those people •  Ensure that they know what quality is and what is expected
  • 24. Architecture = Trade Off •  There are numerous ways to architect each system •  There is no one single right architecture •  Each architecture has strength and weaknesses •  Think about architecture in terms of Trade Offs •  Do they match your requirements?
  • 25. Example for Trade Off: Persistence •  Option: SQL –  More control –  Less infrastructure •  Option: O/R mapper –  Seemingly easier to use –  But a complex piece of technology •  Option: NoSQL –  A lot of options with individual strength and weaknesses
  • 27. Vocabulary •  Approaches to architecting a system •  Defines what kind of architectures and systems you can express •  The more you know the better you can do trade offs •  Will offer new perspectives on what you doing •  Also it is interesting to learn what others do
  • 28. How to Improve Your Vocabulary •  Patterns –  Fowler: Patterns of Enterprise Application Architecture –  Gamma et al: Design Patterns –  Buschmann et al: Patterns- Oriented Software Architecture –  Hohpe: Pattern of Enterprise Integration •  Evans: Domain Driven Design
  • 29. How to Improve Your Vocabulary •  Technologies –  How many Persistence approaches do you know? –  Should at least have a high level overview –  There is life beyond standards –  Can save a lot of time and effort •  Conferences •  Web Sites •  Reviews
  • 30. Again: Persistence •  “Patterns of Enterprise Application Architecture” lists persistence approaches •  Ruby on Rails uses Active Record (i.e. objects can store themselves) •  myBATIS for easy persistence using SQL (Java / .NET) •  …
  • 31. EAT YOUR OWN DOG FOOD!
  • 32. Eat Your Own Dog Food! •  Defining an architecture is easy •  It is hard to create the right architecture •  Need feedback •  Eat your own dog food: Develop code yourself •  Do pair programming •  To become grounded
  • 34. Broken Windows Theory •  Once windows are not repaired… •  …vandals will break more •  …break into the building •  … •  Accepting compromises on quality is risky •  …but if you strive for ultimate quality everywhere, you will fail •  In particular with legacy software
  • 35. Broken Windows in Architecture •  Compromises on quality will become out of hand •  Might speed up a project for a limited time •  But: Will hurt productivity in the long run •  …and ultimately slow it down •  Higher quality can mean less cost and quicker delivery •  Metaphor: Technical debt •  Much like debt in real life
  • 36. But… •  There might still be broken windows •  There might be more and less skilled developers •  What do I do?
  • 38. Domain Driven Design •  “Tackling Complexity in the Heart of Software” •  E.g. Ubiquitous Language for Code, Developers and Customers
  • 39. Strategic Domain Driven Design •  Bounded Context: Model used only in a specific part of the system •  Context Map: Translate models from different parts of the system •  Anti-Corruption Layer: Make sure the core domain is not corrupted
  • 40. Strategic Domain Driven Design •  Can be used to manage quality •  What are the core business domains? •  Focus on quality of those •  Isolate them from the rest of the system •  Let the best developer work on the most important parts
  • 41. Strategic Domain Driven Design •  Acknowledges that not all developers are equals •  …and not all parts of a system will have the same quality •  Allows you to steer which parts will be better
  • 43. Care About Architecture and Code •  You can draw diagrams until the end of time •  It’s the code and the architecture in the code that matters •  Architectures is only used to influence code
  • 45. Measure and Reduce •  No way to know all code by heart •  Still: You and the team need to understand the state of the project •  Need tools to measure and reduce information
  • 46. Sonar •  Server that integrates a lot of systems •  Static code analysis (Findbugs, PMD etc) •  Lines of Code, classes •  Test code coverage •  Complexity •  Historized i.e. easy to spot trends •  Easy to install •  Visit http://nemo.sonarsource.org/ for examples
  • 47. Draw Conclusions! •  Do not try to enforce a certain value for a metric! •  Metrics are used to reduce information and get warning signs •  Use them to improve quality •  If you enforce a value mindlessly problems will be avoided – not solved •  …and measurements will become worthless
  • 49. Dependency Management •  Essential for measuring architecture •  i.e. what is the structure in the code? •  Why are Dependencies so important?
  • 50. What is Architecture? •  Architecture is the decomposition of systems in parts •  No large or complex parts •  No cyclic dependencies
  • 51. Normal Dependencies •  A and B might be packages or classes Component A •  B depends on A, i.e. it uses classes, methods etc. Component B •  Changes in A impact B •  Changes in B do not impact A
  • 52. Cyclic Dependency •  B depends on A and A on B Component A •  Changes in A impact B •  Changes in B impact A •  A and B can only be changed as one unit Component B •  …even though they should be two separate units
  • 53. Bigger cyclic dependencies Component A Component B Component C
  • 54. Measure Dependencies! •  …otherwise they will get out of hand •  Cyclic dependencies mean: –  It should be separated according to the architecture –  …but it is not •  JDepend – rather outdated •  Structure 101 •  Sonargraph
  • 55. Care about You are Not an Architecture is Code and Quality Architect Trade Off Architecture Measure and Eat your own No Broken Vocabulary Reduce Dog Food Windows Dependencies People Want Strategic Matter To Improve Design And Remember: Your Opinion Matters!
  • 56. Wir suchen Sie als Ø  Software-Architekt (m/w) Ø  Projektleiter (m/w) Ø  Senior Software Engineer (m/w) Ø  Kommen Sie zum Stand und gewinnen Sie ein iPad 2! jobs@adesso.de www.AAAjobs.de