Upload
jalen
View
38
Download
0
Embed Size (px)
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 [email protected]
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