This presentation distills the best industry guidance into a hands-on approach to designing application architectures. Along the way, we'll examine the key decisions that must be made when choosing our architectural styles and designing our layers and show how those decisions turn into real shippable code on a project.
21. 1. Identify architecture objectives
A. Determine goals based on size, scope, time
• Complete application
• Prototype
• Solving a technical risk
• Exploring potential options
• Building shared, reference models
B. Identify target audience
• Other architects
• Developers & Maintainers
• Testers
• Operations
22. 2. Identify key scenarios
A. Define the solution’s boundaries
B. Identify who will impacted by the solution
C. Discover what valuable activities will be automated
D. Uncover constraints that will limit the solution
E. Identify activities that are most important to the
success of your application
F. Highlight those that are architecturally significant
23. CONTEXT DIAGRAM
Tailspin Toys
Tailspin Toys is a small brick and mortar model
airplane shop that wants an online store front to
supplement in-store sales.
24. CONTEXT DIAGRAM
Tailspin Toys
Non-functional Requirements & Constraints
- Web based solution to achieve customer reach
- Support mobile browsers
- Hosted by a third party web hosting provider
- Must integrate with existing inventory database and administrative tools
Tailspin Toys is a small brick and mortar model
airplane shop that wants an online store front to
supplement in-store sales.
25. CONTEXT DIAGRAM
Tailspin Toys
Non-functional Requirements & Constraints
- Web based solution to achieve customer reach
- Support mobile browsers
- Hosted by a third party web hosting provider
- Must integrate with existing inventory database and administrative tools
Customer
Store Manager
Time
Tailspin Toys is a small brick and mortar model
airplane shop that wants an online store front to
supplement in-store sales.
26. CONTEXT DIAGRAM
Payment ProcessorTailspin Toys
Non-functional Requirements & Constraints
- Web based solution to achieve customer reach
- Support mobile browsers
- Hosted by a third party web hosting provider
- Must integrate with existing inventory database and administrative tools
Customer
Store Manager
Time
Shop for Toys
- Browse by category
- Browse by price range
- Search by name
- View list of best sellers
- View toy details
- Read reviews of toys
- Add toys to shopping cart
- Add toys to wishlist
- View shopping cart contents
- View other customers' wishlists
- Checkout
Check an order status
Cancel an order
Get a refund on an order
View order history
Receive shipping notifications
Receive special offers and coupons
- "registered" customers only
Rate toys
Write reviews of toys
Process open orders
- View list of open orders
- Fulfill an order (ship & close it)
- Cancel and refund an order
View sales reports
- conversions, abandonments, etc.
Send special offers to "registered"
customers
Manage customer accounts
- Reset passwords
- Delete accounts
Manage inventory
- Manage product categories
- Manage inventory levels
- Place products on back order
Generate monthly sales reports
Send coupons to "infrequent" customers
Tailspin Toys is a small brick and mortar model
airplane shop that wants an online store front to
supplement in-store sales.
27. 3. Create an application overview
A. Determine your application type
• Web
• Mobile
• Rich client
• RIA
• Web service
• Some combination of the above
B. Identify your deployment constraints
C. Determine your relevant technologies
29. 5. Define candidate solution(s)
A. Choose an architecturally significant scenario
B. Design a candidate baseline architecture
C. Build out the scenario to prove it out
31. LAY(ER)ING IT ALL OUT
• Describe the application at a high level
• Identify major functional units of the design and their
interdependencies
• Each layer represents a logical group of projects,
namespaces, and/or other artifacts
35. Physical deployment
• Visualize the physical structure of a system
• Executables
• Libraries
• Services
• Focus on components of the system, their relationships, interfaces,
and ports
• Highlight the service behavior that they provide and consume
through interfaces
39. Grouping layers into assemblies
• Prefer fewer, larger assemblies
• Faster load time
• Reduced working set
• Better NGEN optimization
• If several assemblies are always loaded together, consider
combining them into one
• Partition into separate assemblies based on
• Deployment
• Versioning
• Data access
• Security and access control
• Contributions from disparate sources
• Avoid the one dll per namespace anti-pattern!
41. ANALYSIS & DESIGN ARTIFACTS
• Sketch
• Blueprint
• Executable
• They are artifacts, not documentation!
• Don’t be afraid to throw them away and draw new ones!
43. CHARACTERISTICS of a GOOD
ARCHITECTURE
• Form Follows Function
Evolutionary not pre-ordained or predicted
• Functional alignment & partitioning
• One right place
• Keeps complexity in check
• Facilitates/accelerates feature delivery
44. STUDY OTHERS’ ARCHITECTURES
Open Source Projects
HighScalability.com
Is it easy to understand?
Is it easy to find things?
How would you have done it differently?
45. LAW OF PARSIMONY
“Reduce everything to its essence so that form
harmonizes with function.”
Chris Kobryn
46. REFERENCES
• Microsoft Application Architecture Guide 2nd Edition
by Microsoft Patterns & Practices Group
• Microsoft .NET: Architecting Application for the Enterprise
by Dino Esposito & Andrea Saltarello
• Domain Driven Design
by Eric Evans
• Framework Design Guidelines
by Krzysztof Cwalina & Brad Abrams