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

The Role of the Architect

Jan 15, 2017

Download

Software

humly
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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?