110
Agile Architecture Odessa Johannes Brodwall, Chief scientist Exilesoft Global

Agile Architecture in Odessa

Embed Size (px)

DESCRIPTION

Agile Architecture as shown on Odessa Java Tech Talks

Citation preview

Page 1: Agile Architecture in Odessa

Agile Architecture

OdessaJohannes Brodwall, Chief scientist

Exilesoft Global

Page 2: Agile Architecture in Odessa

What is an architect?From greek Arkhi-Tecton

Tecton: Builder

Arkhi: Chief.

Like “Arch angel”

Or “Arch nemesis”

Page 3: Agile Architecture in Odessa

What is an architect?“Chief builder”

Page 4: Agile Architecture in Odessa

What is an architect?(Exilesoft definition)

Page 5: Agile Architecture in Odessa

A solution architect is someone who understands the problem of

the customerand uncovers and

communicatesa feasible solution

Page 6: Agile Architecture in Odessa

A solution architect is someone who understands the customer’s problem

(including contraints, context, domain knowledge) and uncovers (though a

team effort) and communicates (with credibility) a feasible solution

(primarily, but not exclusively technical)

Page 7: Agile Architecture in Odessa

Uncover problemvision, stakeholders, usage flow

Describe problemcontext and domain model

Describe solutiondeployment, implementation model

Simplify architecturefeature oriented structure

Deliver softwarerainbow plans

Page 8: Agile Architecture in Odessa

• Describing architecture• Simplifying architecture• Delivering architecture

• Delivering software

• Delivering architecture

Page 9: Agile Architecture in Odessa

Part I:

Page 10: Agile Architecture in Odessa

Describing architecture

Page 11: Agile Architecture in Odessa

• Understanding problem• Uncovering solution

• Communicating architecture

Page 12: Agile Architecture in Odessa

Understanding the problem

Page 13: Agile Architecture in Odessa

(Tool time)

Page 14: Agile Architecture in Odessa

For some stakeholder

Who has a goal

The Odessa agile user group (?)

Is a type of activity

Which gives a capability.

Unlike most relevant alternative

This has a distinguishing attribute.

Page 15: Agile Architecture in Odessa

For __________________

Who ________________

The Odessa agile user group (?)

Is a _________________

Which ________________.

Unlike ______________________

This _______________________.

Page 16: Agile Architecture in Odessa

Example«Smidig» conference application

Page 17: Agile Architecture in Odessa

Example vision statement

Page 18: Agile Architecture in Odessa

For Agile practitioners

Who need to expand on their experience and network

The Smidig conference

Is a networking event

Which connects you with other Agile practitioners.

Unlike traditional conferences

This presents the experience of many people through lightning talks.

Page 19: Agile Architecture in Odessa

For Conference organizers

Who want to organize a good conference

The Smidig conference app

Is a web application

Which eliminates unnecessary work.

Unlike commercial conference apps

This is optimized for the large number of talks we have and allows us to make changes fast.

Page 20: Agile Architecture in Odessa
Page 21: Agile Architecture in Odessa

Example stakeholders

Page 22: Agile Architecture in Odessa

Speaker

Description• Experienced• New speaker• Passionate

Duties• Register talk• Upload slide• Give talkValues• Constructive feedback

on talk• Easy CfP• Fast answer

Attendee

Description• Knows about agile• Works in project• Norwegian

Duties• Pay for conference• Get approval to go

Values• Easy registration

Organizer

Description• Volunteer• Works in evenings• Has network

Duties• Select talks• Follow up

paymentsValues• Easy selection process• Good information overview• Never lose a participant• Financial transparency

Page 23: Agile Architecture in Odessa

Sponsor

Description• Busy• Manager• Not very interested

Duties• Provide logo• Pay sponsorship

Values• Informal

communication• Easy evaluation

Page 24: Agile Architecture in Odessa

Example usage flow

Page 25: Agile Architecture in Odessa

Attendance

1. Agile project practitioner wants to learn

2. Attendee goes to Smidig website

3. Attendee registers

4. Attendee pays

5. Attendee receives confirmation mail

6. Organizer can see the registration

7. Organizer sends reminder email to attendee to come

8. Organizer prints badges for attendees

9. Attendee shows up at Smidig and has an excellent time

Page 26: Agile Architecture in Odessa
Page 27: Agile Architecture in Odessa

Speaker

1. Agile experts wants to share knowledge

2. Potential speaker goes to Smidig website

3. Potential speaker registers personal info

4. Potential speaker registers talk

5. Potential speaker receives registration confirmation email

6. Organizer sees registered talk and can market speaking opportunities

7. Organizer accepts talk for confence

8. Speaker receives acceptance email– Alternative: Speaker withdraws talk – organizer updates the talk

and selects another

9. Organizer prints badges for speakers

10. Speaker shows up at Smidig and gives talk

Page 28: Agile Architecture in Odessa

/Understanding the problem

Page 29: Agile Architecture in Odessa

Uncovering a solution

Page 30: Agile Architecture in Odessa

Example context model

Page 31: Agile Architecture in Odessa

Smidig2011.no

Participant Speaker

Organizer

Printing company

Paypal

Page 32: Agile Architecture in Odessa

Example domain model

Page 33: Agile Architecture in Odessa

User• Name• Email• Company• Phone• Password• Accepts email?

Registration• Ticket type• Price• Paid amount• Paypal ref• Payment date• Invoice address [optional]

Talk• Title• Description• Tags[]• Slide file• Status : {pending, accept,

reject}• Email_sent• Position

Speaker*

*

Comment• Title• Text• Created date

*

*

Period• Stage• Title• Time of day• Day

Page 34: Agile Architecture in Odessa

Example deployment model

Page 35: Agile Architecture in Odessa

Heroku

Smtp.dreamhost.com

Paypal

PostgreSQL

Smidig-conference

(Rails)

Web user

Developer

smidigdb

git.herokugithub

git pushgit pushgit pull

html/http

http

smtp

Page 36: Agile Architecture in Odessa

Example implementation

diagram

Page 37: Agile Architecture in Odessa

Browser Smidig2012.no Paypal.com

1. POST /users

2. Redirect to paypalwith return_url and notify_url

3. Perform payment

4. POST /payment_notifications

5. Redirect to return_url

5. GET /user/<id>

Update user info

Show user info

Save user info

Page 38: Agile Architecture in Odessa

/Uncovering a solution

Page 39: Agile Architecture in Odessa

Communicating a solution

Page 40: Agile Architecture in Odessa
Page 41: Agile Architecture in Odessa

Vision

Stakeholders

Usage flow

Context

Domain model

Implementation

Deployment

Page 42: Agile Architecture in Odessa

Does the architect have to do this

herself?

Page 43: Agile Architecture in Odessa

Team effort

Page 44: Agile Architecture in Odessa
Page 45: Agile Architecture in Odessa

/Communicating a solution

Page 46: Agile Architecture in Odessa

/Describing architecture

Page 47: Agile Architecture in Odessa

Part II:

Page 48: Agile Architecture in Odessa

Simplifying architecture

Page 49: Agile Architecture in Odessa

• Lasagna architecture• Feature oriented architecture

• Deployment constraints

Page 50: Agile Architecture in Odessa

Lasagna architecture

Page 51: Agile Architecture in Odessa

Person-Controller

Person-Controller-

Impl

Person-Service

Person-ServiceImpl

Person-Repository

Person-Repository

Impl

PersonDao

PersonDaoImpl

Session-Factory

Page 52: Agile Architecture in Odessa

Controllers

Services

Managers

Workers

Repositories

Page 53: Agile Architecture in Odessa

Controllers

Services

Managers

Workers

Repositories

DTO

Domain

Mapping

Page 54: Agile Architecture in Odessa
Page 55: Agile Architecture in Odessa

Customer

Invoice

Order

Product

Page 56: Agile Architecture in Odessa

Tidying up art (Ursus Wehrli)

Page 57: Agile Architecture in Odessa
Page 58: Agile Architecture in Odessa
Page 59: Agile Architecture in Odessa

Feature oriented architecture

Page 60: Agile Architecture in Odessa

Coherence• What changes together

lives together

Page 61: Agile Architecture in Odessa
Page 62: Agile Architecture in Odessa

Tolerance• What should be different

can be different

Page 63: Agile Architecture in Odessa
Page 64: Agile Architecture in Odessa

Meaning• What is central in domain

is central in code

Page 65: Agile Architecture in Odessa
Page 66: Agile Architecture in Odessa

Your thinking is contrained by

technology fashion:

Page 67: Agile Architecture in Odessa

Controllers

Services

Managers

Workers

Repositories

DTO

Domain

Mapping

Page 68: Agile Architecture in Odessa

Your solution is constrained by

deployment

Page 69: Agile Architecture in Odessa

Web Application

Web user

Database

Browser

JSON/http

Web Service

SOAP

Web ServiceService

Consumer

DTO?

DTO

DTO

Controller

Page 70: Agile Architecture in Odessa

Web Application

Web user

Database

Browser

JSON/http

DTO?Controller

DAO

Page 71: Agile Architecture in Odessa

Web Application

Web user

html/http

Database

Controller

DAO

Page 72: Agile Architecture in Odessa

Web Application

Web user

html/http

Database

Reverse proxy

html/http

Controller

DAO

Page 73: Agile Architecture in Odessa

Web Application

Web user

Database

Rich client

Objects over http

DTO

DTOController

Page 74: Agile Architecture in Odessa

Web Application

Web user

Database

Rich client

Web service

DTO

DTO

Service

Consumer

Controller

Page 75: Agile Architecture in Odessa

Web Application

Web user

Database

Browser

JSON/http

Web Service

SOAP

Service

Consumer

DTO?

DTO

DTO

External client

Controller

DAO

Page 76: Agile Architecture in Odessa

Web Application

Web user

Database

Browser

JSON/http

Service

External client

DTOController

DAO

Page 77: Agile Architecture in Odessa

/Simplifying architecture

Page 78: Agile Architecture in Odessa

Part III:

Page 79: Agile Architecture in Odessa

Delivering software

Page 80: Agile Architecture in Odessa

• Common sprint problems• Demo driven development

• Rainbow plans

Page 81: Agile Architecture in Odessa

Common Sprint problems

Page 82: Agile Architecture in Odessa

User stories without context

Page 83: Agile Architecture in Odessa

Every feature must be perfect at first try

Page 84: Agile Architecture in Odessa

Users don’t understand the demo

Page 85: Agile Architecture in Odessa

One-sentence Scrum

Page 86: Agile Architecture in Odessa

We demonstrate progress at regular intervals

Page 87: Agile Architecture in Odessa

It’s all about the demo

Page 88: Agile Architecture in Odessa

We demonstrate progress at regular intervals

Page 89: Agile Architecture in Odessa

Progress towards what?

Page 90: Agile Architecture in Odessa

Usage flow

1. Something happens in the real world

2. The event is communicated to the system

3. The system does something

4. Someone does something with the system

5. …

6. …

7. …

8. …

9. …

10. Some goal is achieved

Page 91: Agile Architecture in Odessa
Page 92: Agile Architecture in Odessa
Page 93: Agile Architecture in Odessa

Rainbow plan

Page 94: Agile Architecture in Odessa

Usage flow: frugalflights.com1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 95: Agile Architecture in Odessa

What would you do in Sprint 1?

Page 96: Agile Architecture in Odessa

Usage flow: frugalflights.com1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 97: Agile Architecture in Odessa

Sprint 1: Walking skeleton1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 98: Agile Architecture in Odessa

Sprint 2: SMS support1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 99: Agile Architecture in Odessa

Sprint 3: Complete workflow1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 100: Agile Architecture in Odessa

Sprint 4: Complete SMS1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 101: Agile Architecture in Odessa

Sprint 5: Web pages1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 102: Agile Architecture in Odessa

Sprint 7: Integration1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 103: Agile Architecture in Odessa

Sprint 8: Spit-and-polish1. A customer wants cheap vacations

2. The customer signs up for daily or weekly notifications of special flight offers

3. Periodically the System checks which customers should get notifications

4. The System checks for offers that matches the customer’s travel preference by looking up flights with the travel provider system

5. The System notifies customer of any matching offers via SMS• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer

8. The system confirms the booking by sending an SMS to the customer

9. The customer can at any point see their active offers and accepted offers on the system website

10. The customer enjoys a cheap vacation!

Page 104: Agile Architecture in Odessa

/Delivering software

Page 105: Agile Architecture in Odessa

Conclusion:

Page 106: Agile Architecture in Odessa

Travel light – 7 perspectives

Domain oriented architecture

Sprint with a (rainbow) plan

Page 107: Agile Architecture in Odessa

What’s the common theme?

Page 108: Agile Architecture in Odessa

Usage flow

Page 109: Agile Architecture in Odessa

Good architecture comes from

understanding usage

Page 110: Agile Architecture in Odessa

Thank [email protected]

http://johannesbrodwall.com

http://exilesoft.com

http://twitter.com/jhannes

• Vision• Stakeholders

• Usage flows – rainbow plans• Context• Domain

• (Simple) Deployment• (Feature oriented) implementation