Agile Architecture

Preview:

DESCRIPTION

Agile Architecture. XP Days 2012 Johannes Brodwall, Chief scientist Exilesoft Global. What is an architect? From greek Arkhi-Tecton Tecton : Builder Arkhi : Chief. Like “Arch angel” Or “Arch villain”. What is an architect? “Chief builder”. What is an architect? - PowerPoint PPT Presentation

Citation preview

Agile Architecture

XP Days 2012Johannes Brodwall, Chief scientist

Exilesoft Global

What is an architect?From greek Arkhi-Tecton

Tecton: BuilderArkhi: Chief.

Like “Arch angel”Or “Arch villain”

What is an architect?“Chief builder”

What is an architect?(Exilesoft definition)

A solution architect is someone who understands the problem of

the customerand uncovers and communicates

a feasible solution

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)

Uncover problemvision, stakeholders, usage flow

Describe problemcontext and domain model

Describe solutiondeployment, implementation

model

• Describing architecture• Simplifying architecture• Delivering architecture

• Delivering software

• Delivering architecture

Part I:

Describing architecture

• Understanding problem• Uncovering solution

• Communicating architecture

Understanding the problem

(Tool time)

For some stakeholderWho has a responsibility

The Bare-bones architecture workshopIs a type of activity

Which gives a capability.

Unlike most relevant alternativeThis has a distinguishing attribute.

For __________________Who ________________The _________________Is a _________________

Which ________________.

Unlike ______________________This _______________________.

Participant?

Who are they?

What do they do?

Why do they care?

???

Description

Duties

Values

???Description

Duties

Values

Example«Smidig» conference application

Example vision statement

For Agile practitionersWho need to expand on their experience and

networkThe Smidig conference

Is a networking eventWhich connects you with other Agile practitioners.

Unlike traditional conferencesThis presents the experience of many people

through lightning talks.

For Conference organizersWho want to organize a good conference

The Smidig conference appIs a web application

Which eliminates unnecessary work.

Unlike commercial conference appsThis is optimized for the large number of talks we have and allows us to make changes fast.

Example stakeholders

Speaker

Description• Experienced• New speaker• PassionateDuties• Register talk• Upload slide• Give talkValues• Constructive feedback

on talk• Easy CfP• Fast answer

AttendeeDescription• Knows about agile• Works in project• NorwegianDuties• Pay for conference• Get approval to go

Values• Easy registration

OrganizerDescription• Volunteer• Works in evenings• Has networkDuties• Select talks• Follow up

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

Sponsor

Description• Busy• Manager• Not very interested

Duties• Provide logo• Pay sponsorship

Values• Informal

communication• Easy evaluation

Example usage flow

Attendance

1. Agile project practitioner wants to learn2. Attendee goes to Smidig website3. Attendee registers4. Attendee pays using Paypal5. Attendee receives confirmation mail6. Organizer can see the registration7. Organizer sends reminder email to attendee to come8. Organizer prints badges for attendees with Print

Company9. Attendee shows up at Smidig and has an excellent

time

Speaker

1. Agile experts wants to share knowledge2. Potential speaker goes to Smidig website3. Potential speaker registers personal info4. Potential speaker registers talk5. Potential speaker receives registration confirmation email6. Organizer sees registered talk and can market speaking

opportunities7. Organizer accepts talk for confence8. Speaker receives acceptance email

– Alternative: Speaker withdraws talk – organizer updates the talk and selects another

9. Organizer prints badges for speakers10. Speaker shows up at Smidig and gives talk

/Understanding the problem

Uncovering a solution

Example context model

Smidig2011.no

Participant Speaker

Organizer

Printing company

Paypal

Example domain model

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

*

Example deployment model

HerokuSmtp.dreamhost.com

Paypal

PostgreSQL

Smidig-conference

(Rails)

Web user

Developer

smidigdb

git.herokugithub

git pushgit pushgit pull

html/http

http

smtp

Example implementation

diagram

Router

Controller

1. Find controller

2. Dispatch action

Model class3. Find model

Model4. Manipulate model

5.? Save model

Database

View template View template

6. Render model with view template

Router

/app/controllersUsersController

1. Find UserController

2. update(id)

/app/modelsUser class

3. find(id)

app/modelsUser

5. update_attr(params)

6. save

Database

8. Redirect /users/<id>

POST /users/<id>

4. SELECT … FROM users

7. UPDATE users SET …

Router

/app/controllersUsersController

1. Find UsersController

2. show(id)

/app/modelsUser class

3. find(id)

UserDatabase

/app/views/usersshow.html.erb

5. Render

GET /users/<id>

4. SELECT … FROM users

6. Get attributes

Alternative

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

/Uncovering a solution

Communicating a solution

VisionStakeholders

Usage flowContext

Domain modelDeployment

Implementation

Does the architect have to do this

herself?

Team effort

/Communicating a solution

/Describing architecture

Part II:

Finding the requirements

I need a volunteer

For some stakeholderWho has a responsibilty

The system nameIs a type of system

Which gives a capability.

Unlike most relevant alternativeThis has a distinguishing attribute.

Participant?

Who are they?

What do they do?

What do they care about?

???

Description

Duties

Values

???Description

Duties

Values

….

1. Something happens in the real world2. The event is communicated to the system3. The system does something4. Someone does something with the system5. …6. …7. …8. …9. …10. Some goal is achieved

/Finding requirements

Part III:

Describe architecture

Frugalflights.com1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight

offers3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel

preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS

• Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS

1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted

offers on the system website10. The customer enjoys a cheap vacation!

UserWho are they• …What do they do?• …What do they value?• …

UserWho are they• …What do they do?• …What do they value?• …

UserWho are they• …What do they do?• …What do they value?• …

UserWho are they• …What do they do?• …What do they value?• …

Example context model

What actors did you mention in scenario?

Context: Frugalflights.com1. A customer wants cheap vacations2. The customer signs up for daily or weekly notifications of special flight

offers (where?)3. Periodically the System checks which customers should get

notifications4. The System checks for offers that matches the customer’s travel

preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS

• Variation: The System notifies customer of any matching offers via email6. The customer accepts the offer via SMS

1. Variation: The customer accepts the offer on the system website7. The System books the tickets on behalf of the customer (where?)8. The system confirms the booking by sending an SMS to the customer9. The customer can at any point see their active offers and accepted

offers on the system website10. The customer enjoys a cheap vacation!

Domain: Frugalflights.com1. A customer wants cheap vacations2. The customer signs up (?) for daily or weekly notifications of special

flight offers (=> “create a subscription”?)3. Periodically the System checks which customers should get notifications4. The System checks for offers that matches the customer’s travel

preference by looking up flights with the travel provider system5. The System notifies customer of any matching offers via SMS (=>

“sends notification”?)• Variation: The System notifies customer of any matching offers via email

6. The customer accepts the offer via SMS (=> “send acceptance”)1. Variation: The customer accepts the offer on the system website

7. The System books the tickets on behalf of the customer8. The system confirms the booking by sending an SMS to the customer

(=> “sends confirmation”?)9. The customer can at any point see their active offers and accepted

offers on the system website10. The customer enjoys a cheap vacation!

Example domain model

What concepts did you mention in

scenario?

Example deployment model

Which servers are involved in

production?

Example implementation

diagram

How does the code work?

Statnett electricity reserves1. Grid operator want to maintain balance of electric production and consumption2. Power producer sends unused capacity (reserves) per hour for each power plant to

LARM using EDIFACT via Sterling Integrator– Detail: The capacity “line” has a price– Detail: Each plant may have several capacities at different prices– Detail: Capacity may be to increase or to decrease production

3. A spike occurs in the consumption or production4. Grid operator sees list of available reserves per power plant

1. Alternative: Operator filters the list by grid market area5. Grid operator selects a reserve to regulate for spike6. Grid operator enters power usage on the regulation

1. Alternative: The system verifies that regulation is valid7. Grid operator communicates the regulation to producer’s operation center using phone

1. Future: The system sends the regulation to the producer as XML/http 8. Balance is restored9. At end of hour, system sends usage to pricing system (NOIS) (XML/http) via Sterling

Integrator10. Some time later, pricing system sends price for usage via SI11. System sends price capacity usage to accounting system via SI12. Accounting system pays producer for usage

/Describe architecture

What surprised you?

Your plan to change how you work?

What did you learn?

Conclusion:

Tomorrow: Make your system shine!

Thank youjbr@exilesoft.com

http://johannesbrodwall.comhttp://exilesoft.com

http://twitter.com/jhannes

• Vision• Stakeholders• Usage flows

• Lasagna architecture• Feature oriented architecture

• Deployment constraints

Lasagna architecture

Person-Controller

Person-Controller-

Impl

Person-Service

Person-ServiceImpl

Person-Repository

Person-Repository

Impl

PersonDao

PersonDaoImpl

Session-Factory

Controllers

Services

Managers

Workers

Repositories

Controllers

Services

Managers

Workers

Repositories

DTO

Domain

Mapping

Customer

Invoice

Order

Product

Tidying up art (Ursus Wehrli)

Feature oriented architecture

Coherence• What changes together

lives together

Tolerance• What should be different

can be different

Meaning• What is central in domain

is central in code

Your thinking is contrained by

technology fashion:

Controllers

Services

Managers

Workers

Repositories

DTO

Domain

Mapping

Your solution is constrained by

deployment

Web Application

Web user

Database

Browser

JSON/http

Web Service

SOAP

Web ServiceService

Consumer

DTO?DTO

DTO

Controller

Web Application

Web user

html/http

Database

Controller

DAO

Web Application

Web user

html/http

Database

Reverse proxy

html/http

Controller

DAO

Web Application

Web user

Database

Browser

JSON/http

DTO?Controller

DAO

Web Application

Web user

Database

Rich client

Web service

DTO

DTO

Service

Consumer

Controller

Web Application

Web user

Database

Rich client

Objects over http

DTO

DTOController

Web Application

Web user

Database

Browser

JSON/http

Web Service

SOAP

Service

Consumer

DTO?DTO

DTO

External client

Controller

DAO

Web Application

Web user

Database

Browser

JSON/http

Service

External client

DTOController

DAO