Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Agile Architecture                               Odessa      Johannes Brodwall, Chief scientist                      Exile...
What is an architect?  From greek Arkhi-Tecton           Tecton: Builder             Arkhi: Chief.        Like “Arch angel...
What is an architect?          “Chief builder”
What is an architect?      (Exilesoft definition)
A solution architect is someone who understandsthe problem of the customer         and uncovers and             communicat...
A solution architect is someone who         understands the customer’s                     problem (includingcontraints, c...
Uncover problem   vision, stakeholders, usage flow                 Describe problem         context and domain model      ...
• Describing architecture• Simplifying architecture  • Delivering architecture    • Delivering software
Part I:
Describingarchitecture
• Understanding problem       • Uncovering solution•   Communicating architecture
Understanding the         problem
(Tool time)
For some stakeholder                Who has a goal The Odessa agile user group (?)             Is a type of activity      ...
For __________________       Who ________________ The Odessa agile user group (?)       Is a _________________     Which _...
Example«Smidig» conference application
Example vision    statement
For Agile practitionersWho need to expand on their experience and network                             The Smidig conferenc...
For Conference organizers    Who want to organize a good conference                The Smidig conference app              ...
Examplestakeholders
Speaker             Attendee                OrganizerDescription           Description            Description• Experienced...
SponsorDescription• Busy• Manager• Not very interestedDuties• Provide logo• Pay sponsorshipValues• Informal   communicatio...
Example usage flow
Attendance1.   Agile project practitioner wants to learn2.   Attendee goes to Smidig website3.   Attendee registers4.   At...
Speaker1.        Agile experts wants to share knowledge2.        Potential speaker goes to Smidig website3.        Potenti...
/Understanding the          problem
Uncovering a    solution
Example context         model
Participant       Speaker                                       OrganizerPaypal                 Smidig2011.no             ...
Example domain         model
User                   •   Name                     Registration                   •   Email                    •    Ticke...
Exampledeployment model
Web user     Developer                 html/httpgit push         git pushgit pull                                Smidig-  ...
Exampleimplementation      diagram
Browser                Smidig2012.no                  Paypal.com          1. POST /users                                  ...
/Uncovering a     solution
Communicating a       solution
Vision  Stakeholders    Usage flow       Context Domain modelImplementation   Deployment
Does the architect  have to do this          herself?
Team effort
/Communicating a        solution
/Describingarchitecture
Part II:
Simplifyingarchitecture
• Lasagna architecture•   Feature oriented architecture     • Deployment constraints
Lasagnaarchitecture
Person-       Person-       Person-                                         PersonDaoController     Service      Repositor...
Controllers  Services Managers  WorkersRepositories
Controllers                DTO  Services     Mapping               Domain Managers  WorkersRepositories
CustomerInvoiceOrderProduct
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 bytechnology fashion:
Controllers                DTO  Services     Mapping               Domain Managers  WorkersRepositories
Your solution is constrained by    deployment
Web user      Browser                   JSON/httpController DTO? Web ApplicationConsumer   DTO                   SOAPServi...
Web user     Browser             JSON/http         DTO?ControllerWeb Application  DAO      Database
Web user       html/httpControllerWeb Application  DAO      Database
Web user              html/http Reverse proxy              html/httpControllerWeb Application  DAO      Database
Web userController    Rich client             DTO             Objects             over http                   DTOWeb Appli...
Web userController    Rich clientConsumer     DTO             Web             serviceService   DTOWeb Application      Dat...
Web userExternal client         Browser                                      JSON/http                  Controller DTO?   ...
Web userExternal client           Browser                                 JSON/http                  Service        Contro...
/Simplifyingarchitecture
Part III:
Delivering software
• Common sprint problems• Demo driven development         • Rainbow plans
Common Sprint    problems
User stories without             context
Every feature must be    perfect at first try
Users don’t understand the                     demo
One-sentence      Scrum
We demonstrate progress      at regular intervals
It’s all about the demo
We demonstrate progress at           regular intervals
Progress towards           what?
Usage flow1.    Something happens in the real world2.    The event is communicated to the system3.    The system does some...
Rainbow plan
Usage flow: frugalflights.com1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly n...
What would you do      in Sprint 1?
Usage flow: frugalflights.com1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly n...
Sprint 1: Walking skeleton1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly noti...
Sprint 2: SMS support1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly notificat...
Sprint 3: Complete workflow1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly not...
Sprint 4: Complete SMS1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly notifica...
Sprint 5: Web pages1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly notificatio...
Sprint 7: Integration1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly notificat...
Sprint 8: Spit-and-polish1.       A customer wants cheap vacations2.       The customer signs up for daily or weekly notif...
/Delivering software
Conclusion:
Travel light – 7 perspectivesDomain oriented architecture Sprint with a (rainbow) plan
What’s the common            theme?
Usage flow
Good architecture        comes fromunderstanding usage
Thank you                jbr@exilesoft.com   http://johannesbrodwall.com             http://exilesoft.com        http://tw...
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Agile Architecture in Odessa
Upcoming SlideShare
Loading in …5
×

Agile Architecture in Odessa

535 views

Published on

Agile Architecture as shown on Odessa Java Tech Talks

  • Be the first to comment

  • Be the first to like this

Agile Architecture in Odessa

  1. 1. Agile Architecture Odessa Johannes Brodwall, Chief scientist Exilesoft Global
  2. 2. What is an architect? From greek Arkhi-Tecton Tecton: Builder Arkhi: Chief. Like “Arch angel” Or “Arch nemesis”
  3. 3. What is an architect? “Chief builder”
  4. 4. What is an architect? (Exilesoft definition)
  5. 5. A solution architect is someone who understandsthe problem of the customer and uncovers and communicates a feasible solution
  6. 6. A solution architect is someone who understands the customer’s problem (includingcontraints, context, domain knowledge) and uncovers (though a team effort) and communicates (with credibility) a feasible solution (primarily, but not exclusively technical)
  7. 7. Uncover problem vision, stakeholders, usage flow Describe problem context and domain model Describe solutiondeployment, implementation model Simplify architecture feature oriented structure Deliver software rainbow plans
  8. 8. • Describing architecture• Simplifying architecture • Delivering architecture • Delivering software
  9. 9. Part I:
  10. 10. Describingarchitecture
  11. 11. • Understanding problem • Uncovering solution• Communicating architecture
  12. 12. Understanding the problem
  13. 13. (Tool time)
  14. 14. For some stakeholder Who has a goal The Odessa agile user group (?) Is a type of activity Which gives a capability. Unlike most relevant alternativeThis has a distinguishing attribute.
  15. 15. For __________________ Who ________________ The Odessa agile user group (?) Is a _________________ Which ________________.Unlike ______________________This _______________________.
  16. 16. Example«Smidig» conference application
  17. 17. Example vision statement
  18. 18. For Agile practitionersWho need to expand on their experience and network The Smidig conference Is a networking event Which connects you with other Agile practitioners. Unlike traditional conferencesThis presents the experience of many people through lightning talks.
  19. 19. 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 appsThis is optimized for the large number of talkswe have and allows us to make changes fast.
  20. 20. Examplestakeholders
  21. 21. Speaker Attendee OrganizerDescription Description Description• Experienced • Knows about agile • Volunteer• New speaker • Works in project • Works in evenings• Passionate • Norwegian • Has networkDuties Duties Duties• Register talk • Pay for conference • Select talks• Upload slide • Get approval to go • Follow up• Give talk paymentsValues Values Values • Easy selection process• Constructive • Easy registration • Good information feedback on talk overview• Easy CfP • Never lose a participant• Fast answer • Financial transparency
  22. 22. SponsorDescription• Busy• Manager• Not very interestedDuties• Provide logo• Pay sponsorshipValues• Informal communication• Easy evaluation
  23. 23. Example usage flow
  24. 24. Attendance1. Agile project practitioner wants to learn2. Attendee goes to Smidig website3. Attendee registers4. Attendee pays5. Attendee receives confirmation mail6. Organizer can see the registration7. Organizer sends reminder email to attendee to come8. Organizer prints badges for attendees9. Attendee shows up at Smidig and has an excellent time
  25. 25. Speaker1. 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 another9. Organizer prints badges for speakers10. Speaker shows up at Smidig and gives talk
  26. 26. /Understanding the problem
  27. 27. Uncovering a solution
  28. 28. Example context model
  29. 29. Participant Speaker OrganizerPaypal Smidig2011.no Printing company
  30. 30. Example domain model
  31. 31. User • Name Registration • Email • Ticket type • Price • Company • Paid amount • Phone • Paypal ref • Password • Payment date • Invoice address [optional] • Accepts email? *Comment *• Title Speaker• Text• Created date * * Talk Period • Title • Description • Stage • Tags[] • Title • Slide file • Time of day • Status : {pending, • Day accept, reject} • Email_sent • Position
  32. 32. Exampledeployment model
  33. 33. Web user Developer html/httpgit push git pushgit pull Smidig- conference http Paypal github git.heroku (Rails) smtp Heroku Smtp.dreamhost.com smidigdb PostgreSQL
  34. 34. Exampleimplementation diagram
  35. 35. Browser Smidig2012.no Paypal.com 1. POST /users Save user info 2. Redirect to paypal with return_url and notify_url 3. Perform payment 4. POST /payment_notifications Update user info 5. Redirect to return_url 5. GET /user/<id> Show user info
  36. 36. /Uncovering a solution
  37. 37. Communicating a solution
  38. 38. Vision Stakeholders Usage flow Context Domain modelImplementation Deployment
  39. 39. Does the architect have to do this herself?
  40. 40. Team effort
  41. 41. /Communicating a solution
  42. 42. /Describingarchitecture
  43. 43. Part II:
  44. 44. Simplifyingarchitecture
  45. 45. • Lasagna architecture• Feature oriented architecture • Deployment constraints
  46. 46. Lasagnaarchitecture
  47. 47. Person- Person- Person- PersonDaoController Service Repository Person- Person- Person- PersonDaoController- Repository ServiceImpl Impl Impl Impl Session- Factory
  48. 48. Controllers Services Managers WorkersRepositories
  49. 49. Controllers DTO Services Mapping Domain Managers WorkersRepositories
  50. 50. CustomerInvoiceOrderProduct
  51. 51. Tidying up art (Ursus Wehrli)
  52. 52. Feature oriented architecture
  53. 53. Coherence• What changes together lives together
  54. 54. Tolerance• What should be different can be different
  55. 55. Meaning• What is central in domain is central in code
  56. 56. Your thinking is contrained bytechnology fashion:
  57. 57. Controllers DTO Services Mapping Domain Managers WorkersRepositories
  58. 58. Your solution is constrained by deployment
  59. 59. Web user Browser JSON/httpController DTO? Web ApplicationConsumer DTO SOAPService DTO Web Service Database
  60. 60. Web user Browser JSON/http DTO?ControllerWeb Application DAO Database
  61. 61. Web user html/httpControllerWeb Application DAO Database
  62. 62. Web user html/http Reverse proxy html/httpControllerWeb Application DAO Database
  63. 63. Web userController Rich client DTO Objects over http DTOWeb Application Database
  64. 64. Web userController Rich clientConsumer DTO Web serviceService DTOWeb Application Database
  65. 65. Web userExternal client Browser JSON/http Controller DTO? Web Application Consumer DTO SOAP Service DTO Web Service DAO Database
  66. 66. Web userExternal client Browser JSON/http Service Controller DTO Web Application DAO Database
  67. 67. /Simplifyingarchitecture
  68. 68. Part III:
  69. 69. Delivering software
  70. 70. • Common sprint problems• Demo driven development • Rainbow plans
  71. 71. Common Sprint problems
  72. 72. User stories without context
  73. 73. Every feature must be perfect at first try
  74. 74. Users don’t understand the demo
  75. 75. One-sentence Scrum
  76. 76. We demonstrate progress at regular intervals
  77. 77. It’s all about the demo
  78. 78. We demonstrate progress at regular intervals
  79. 79. Progress towards what?
  80. 80. Usage flow1. 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
  81. 81. Rainbow plan
  82. 82. Usage flow: 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!
  83. 83. What would you do in Sprint 1?
  84. 84. Usage flow: 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!
  85. 85. Sprint 1: Walking skeleton1. 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!
  86. 86. Sprint 2: SMS support1. 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!
  87. 87. Sprint 3: Complete workflow1. 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!
  88. 88. Sprint 4: Complete SMS1. 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!
  89. 89. Sprint 5: Web pages1. 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!
  90. 90. Sprint 7: Integration1. 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!
  91. 91. Sprint 8: Spit-and-polish1. 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!
  92. 92. /Delivering software
  93. 93. Conclusion:
  94. 94. Travel light – 7 perspectivesDomain oriented architecture Sprint with a (rainbow) plan
  95. 95. What’s the common theme?
  96. 96. Usage flow
  97. 97. Good architecture comes fromunderstanding usage
  98. 98. Thank you jbr@exilesoft.com http://johannesbrodwall.com http://exilesoft.com http://twitter.com/jhannes • Vision • Stakeholders • Usage flows – rainbow plans • Context • Domain • (Simple) Deployment • (Feature oriented) implementation

×