application architecture jumpstart
TRANSCRIPT
![Page 1: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/1.jpg)
APPLICATION ARCHITECTURE JUMPSTARTClint EdmonsonPolaris [email protected]
![Page 2: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/2.jpg)
Platinum Sponsors
Silver Sponsors
Gold Sponsors
![Page 3: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/3.jpg)
![Page 4: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/4.jpg)
Who the heck needs architecture?
![Page 5: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/5.jpg)
![Page 6: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/6.jpg)
![Page 7: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/7.jpg)
![Page 8: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/8.jpg)
![Page 9: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/9.jpg)
![Page 10: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/10.jpg)
![Page 11: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/11.jpg)
![Page 12: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/12.jpg)
ARCHITECTURE
“A unifying or coherent form or structure.” merriam-webster.com
![Page 13: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/13.jpg)
DESIGN
“Design, at its most fundamental, is about finding solutions.” Garr Reynolds
![Page 14: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/14.jpg)
THE GOAL OF ARCHITECTURE
Eliminate the things I don’t want to think about.
Keep complexity at bay!
![Page 15: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/15.jpg)
![Page 16: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/16.jpg)
How do we tackle this complexity?
![Page 17: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/17.jpg)
Abstraction Layering
![Page 18: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/18.jpg)
Partitioning
![Page 19: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/19.jpg)
CONQUERING COMPLEXITY
• Abstraction
• Layering• Partitioning
• Occam’s Razor
![Page 20: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/20.jpg)
ITERATIVE ARCHITECTURE & DESIGN
Page 41
![Page 21: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/21.jpg)
1. Identify architecture objectivesA. 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
![Page 22: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/22.jpg)
2. Identify key scenariosA. 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
![Page 23: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/23.jpg)
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.
![Page 24: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/24.jpg)
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.
![Page 25: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/25.jpg)
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.
![Page 26: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/26.jpg)
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 - CheckoutCheck an order statusCancel an orderGet a refund on an orderView order historyReceive shipping notificationsReceive special offers and coupons - "registered" customers onlyRate toysWrite reviews of toys
Process open orders - View list of open orders - Fulfill an order (ship & close it) - Cancel and refund an orderView sales reports - conversions, abandonments, etc.Send special offers to "registered" customersManage customer accounts - Reset passwords - Delete accountsManage inventory - Manage product categories - Manage inventory levels - Place products on back order
Generate monthly sales reportsSend 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.
![Page 27: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/27.jpg)
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 constraintsC. Determine your relevant technologies
![Page 28: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/28.jpg)
4. Identify key issues
A. Cross-cutting concerns• Configuration• Security• Communication• Compression• Encryption• Logging & instrumentation• Validation• Error management
B. Quality attributes• Run-time performance • Scalability• Disaster recovery
![Page 29: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/29.jpg)
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
![Page 30: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/30.jpg)
FUNDAMENTAL DESIGN TOOLS
• Layers
• Assemblies
• Namespaces
![Page 31: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/31.jpg)
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
![Page 32: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/32.jpg)
COMMON APPLICATION ARCHITECTURE
Page 10
![Page 33: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/33.jpg)
CASE STUDY
A naïve approach…
![Page 34: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/34.jpg)
BASELINE LAYERED ARCHITECTURE
Tailspin BackofficeAdmin
Tailspin BackofficeAdmin
Email Server
Tailspin.Core
PaymentProcessorPayment
ProcessorTailspin.Database
Tailspin.Domain
Browser
Tailspin.Web Tailspin.WebJob
![Page 35: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/35.jpg)
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
![Page 36: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/36.jpg)
COMPONENT DESIGN
Database Server
Website
Tailspin.Web
Tailspin.Domain Tailspin.Core
Tailspin.WebJob
Tailspin.DatabaseSendGrid Stripe
![Page 37: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/37.jpg)
PHYSICAL ARCHITECTUREAzure Data Center
:Website
Azure Load Balancer
User
:Website
:SQL Azure Database
:Payment Processor
:Search Serv ice
...
:Webjob
:SendGrid
https
https
TDS
https
https
TDShttps
https
![Page 38: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/38.jpg)
CASE STUDY
Something more reasonable…
![Page 39: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/39.jpg)
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!
![Page 40: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/40.jpg)
Rinse, repeat, refactor…
Page 41
![Page 41: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/41.jpg)
ANALYSIS & DESIGN ARTIFACTS• Sketch• Blueprint• Executable
• They are artifacts, not documentation!• Don’t be afraid to throw them away and draw new ones!
![Page 42: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/42.jpg)
More case studies…
![Page 43: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/43.jpg)
CHARACTERISTICS of a GOOD ARCHITECTURE
• Form Follows FunctionEvolutionary not pre-ordained or predicted
• Functional alignment & partitioning
• One right place
• Keeps complexity in check
• Facilitates/accelerates feature delivery
![Page 44: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/44.jpg)
STUDY OTHERS’ ARCHITECTURES
Open Source ProjectsHighScalability.com
Is it easy to understand?Is it easy to find things?How would you have done it differently?
![Page 45: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/45.jpg)
LAW OF PARSIMONY
“Reduce everything to its essence so that form harmonizes with function.” Chris Kobryn
![Page 46: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/46.jpg)
REFERENCES• Microsoft Application Architecture Guide 2nd Edition
by Microsoft Patterns & Practices Group
• Microsoft .NET: Architecting Application for the Enterpriseby Dino Esposito & Andrea Saltarello
• Domain Driven Design by Eric Evans
• Framework Design Guidelines by Krzysztof Cwalina & Brad Abrams
![Page 47: Application Architecture Jumpstart](https://reader035.vdocuments.site/reader035/viewer/2022062522/5887faf21a28ab554e8b48e3/html5/thumbnails/47.jpg)
Q & A