the role of the architect

41
s mPsychology GmbH Jonathan Holloway Co-Founder I CTO CTO Meetup The Role of The Architect

Upload: humly

Post on 15-Jan-2017

473 views

Category:

Software


0 download

TRANSCRIPT

Page 1: The Role of the Architect

s

mPsychology GmbHJonathan Holloway Co-Founder I CTO

CTO MeetupThe Role of The Architect

Page 2: The Role of the Architect

s

Welcome….

Page 3: The Role of the Architect

s

Tonight

1

Few points in the presentation where would like some feedback

Questions - At the end please : ) or maybe at the end of each section…

Page 4: The Role of the Architect

s

Some caveats

Architecture is contentious - various perspectives

Basis for presentation is on:

• TOGAF architecture framework training/certification

• Company based experience - over one or two companies

• Based on various books (will list at the end):

• Ambler - agile modelling

• Brown - architecture for software developers

Page 5: The Role of the Architect

s

Architecture - Scope

Role of the Architect Solution Mapping

Technical Architecture Non Functional Requirements

Page 6: The Role of the Architect

s

Before I Start…

Just a quick survey, straw person poll

How many people here code?

How many people are involved in an architectural role?

Page 7: The Role of the Architect

s

Role of the Architect

Page 8: The Role of the Architect

s

What does an architect do?

It depends…

Let’s look at some common architecture definitions

1 2 3 4 5

Page 9: The Role of the Architect

s

Architecture Definitions

Enterprise Architecture - huh?

Map business drivers and strategy onto projects, optimise processes etc..

Solutions Architecture

Business analysis, plan to a component level

Technical Architecture

Design of components, how they interact (with the solutions architect)

1 2 3 4 5

Page 10: The Role of the Architect

s

What does an architect do?

Role taken up by someone in a team? < I like this one

Understand the architectural drivers, design a technical strategy

Understand things which are costly to change

Understand how things evolve and how difficult that is

Know how to map between what’s there today and a target architecture

Understand the bigger picture

Communicate

Mitigate risks on a project

1 2 3 4 5

Page 11: The Role of the Architect

s

Where does an architect fit on a project?

1. Product Owner - what

2. Architect Owner - how

3. Project Manager - when

A conversation and negotiation between all three on a project is important

1 2 3 4 5

Page 12: The Role of the Architect

s

We use productboard.com currently to plan:

• Feature Development and Release Management

• Roadmap - visual generation of a roadmap (no more powerpoints)

That covers the functional side, how do we cover the other aspects?

• Design the framework into which the features fit

• Maybe the feature doesn’t fit yet

As an architect define how your system will evolve

1 2 3 4 5

Page 13: The Role of the Architect

s

Do you end up with a consistent structure that people agree on?

Do features get implemented in the same way?

What is the impact to software quality?

Are the non-functionals well understood?

Are people communicating?

Is there governance around what to do technically?

What happens if you don’t have the architect role?

1 2 3 4 5

Page 14: The Role of the Architect

s

Architecture Frameworks

There are frameworks that aim to map business drivers onto technology implementation at various different levels

TOGAF, Zachman provide enterprise architecture guidance

Overkill? For most projects - probably. Good principles.

Lightweight frameworks also available (e..g LEAF)

But these do not describe technical architecture

or how to run the project

1 2 3 4 5

Page 15: The Role of the Architect

s

Architect Anti Patterns

Some anti-patterns

The Ivory Tower/Seagull Architect

• No coding experience or detached from system

• Draw a diagram and throw it over the wall

Technical Architect/Developer Forever

• Just code, don’t communicate, everybody else is wrong : )

There has to be a balance between design and code

1 2 3 4 5

Page 16: The Role of the Architect

s

Solutions, Modelling and Stuff

Page 17: The Role of the Architect

s

Mapping High Level Solutions

Knowing how to map a problem onto a high level solution,

There are some important architectural aspects to consider:

• Infrastructure - Hosted, Cloud, Hybrid

• Platform - Monolith, Microservice (Big difference)

• Architectural Style - Pipes and Filters, Transaction Script, Domain Driven

• Application Packaging - application, infrastructure, util

• Naming Conventions - so so important, should match

1 2 3 4 5

Page 18: The Role of the Architect

s

Views

Architecture is about viewpoints

1 2 3 4 5

Page 19: The Role of the Architect

s

BDAT (Split the Architecture into Views)

1 2 3 4 5

Page 20: The Role of the Architect

s

Models

Models help to express the architecture

e.g. User Experience - personas, wireframes and usability testing

Models that are relatively little effort to update are good

e.g. Swagger/Open API specification provides a specification that you can generate code from.

1 2 3 4 5

Page 21: The Role of the Architect

s

How Much Do I Model?

Produce models only when you need them

Bare minimum for requirements - just enough

No Design vs Agile Design vs Big Up Front Design

Agile Modelling provides a good set of principles to follow

1 2 3 4 5

Page 22: The Role of the Architect

s

Agile Modelling - Primer

1 2 3 4 5

Page 23: The Role of the Architect

s

What Do You Want to Convey?

What Diagrams?

• Context Diagram - explains concepts and the bigger picture

• Deployment Diagram - explains main components, how they fit together

• Component Diagram - useful to describe the innards of your application

Use them to form a strawman architecture for people to critique

Quick survey: What other types of diagram do you find really useful?

e.g. State Diagram

1 2 3 4 5

Page 24: The Role of the Architect

s

Example 1 - Context Diagram

1 2 3 4 5

Page 25: The Role of the Architect

s

Example 2 - Deployment Diagram

1 2 3 4 5

Page 26: The Role of the Architect

s

Example 3 - Component Diagram

1 2 3 4 5

Page 27: The Role of the Architect

s

Models are good, but we need more context

Grounded in some sort of design

Linked to our user stories

Providing the how to the what

1 2 3 4 5

Page 28: The Role of the Architect

s

What goes in a design doc/software guidebook?

Lots of Confusion Here

What problem are your solving?

Terminology - define acronyms

Risks

Deployment and Ops Concerns

Components

Use Cases

Interfaces/API’s - Internal and External

Item Overview

Design Diagram

Collaborators

System Qualities

Test Harnesses (if required)

1 2 3 4 5

Page 29: The Role of the Architect

s

How do you represent your design?

Few options:

• Github Wiki - link to tickets and user stories

• Confluence - keep design and requirements together

• Google Docs?

Any other solutions that people want to share?

1 2 3 4 5

Page 30: The Role of the Architect

s

Technical Architecture

Page 31: The Role of the Architect

s

Technical Architecture

Some items that come up in technical architecture include:

• Architectural Styles - what they are, some reading points…

• Architecture Anti-Patterns - knowing what to avoid…

• Technology Selection - how to do it or what happens when somebody has an idea?

1 2 3 4 5

Page 32: The Role of the Architect

s

Architectural Styles

Know some basic architectural styles, three important ones:

Transaction Script (Fowler) - services that build DTO’s call DAO’s

Domain Driven (Evans) - operations and data together

Pipes and Filters (Fowler) - set of processing steps

Patterns of enterprise application architecture is decent

1 2 3 4 5

Page 33: The Role of the Architect

s

Some Examples

• Big Ball of Mud

• Speculative Generality and Useless Abstractions

• Efferent and Afferent Coupling

• Single Responsibility Principle and SOLID principles

Great ResourceSource Making

Architecture Anti Patterns

1 2 3 4 5

Page 34: The Role of the Architect

s

Technology Selection

What are your dev team familiar with language wise?

How widely is the library/framework being proposed used?

Is it under active development - Github stars, number of commits

How much training/learning/time is involved to upskill the team?

Don’t just agree, spike/build prototype and get to know what you’re about to adopt

Ohloh/Openhub.net is decent for research

1 2 3 4 5

Page 35: The Role of the Architect

s

Technology Selection

1 2 3 4 5

Page 36: The Role of the Architect

s

Non Functional Requirements

1 2 3 4 5

Page 37: The Role of the Architect

s

Non Functional Requirements

Why are they important?

Define the qualities you want your system to have,

• Performance, usability, robustness, security

• How do people know if you don’t specify them?

It was meant to support 1000 users concurrently with one action?

Lots of projects #fail due to mis-understanding of these or non

1 2 3 4 5

Page 38: The Role of the Architect

s

Non Functional Requirements

Various models

FURPS+ • Came from HP

ISO 25010• Defines a product quality model based on eight characteristics

1 2 3 4 5

Page 39: The Role of the Architect

s

Testing NFR’s

If you don’t specify - you don’t get

Non functional requirements are good to specify

Test engineers/QA’s have hooks to test the system for

Can ask developers how it meets those requirements

• Chaos Monkey - simulate failure

• Performance Tests - measure RPS using JMeter/Locust/BlazeMeter

• Can work with devops engineers on this or ideally do it themselves

1 2 3 4 5

Page 40: The Role of the Architect

s

Resources

Page 41: The Role of the Architect

sMarket

Questions?