SlideShare a Scribd company logo
1 of 46
APPLICATION
ARCHITECTURE
JUMPSTART
Clint Edmonson
Polaris Solutions
clinted@polarissolutions.com
Who the heck needs architecture?
ARCHITECTURE
“A unifying or coherent form or structure.”
merriam-webster.com
DESIGN
“Design, at its most fundamental, is about finding solutions.”
Garr Reynolds
THE GOAL OF ARCHITECTURE
Eliminate the things you don’t want to think
about.
Keep complexity at bay!
How do we tackle this complexity?
Abstraction Layering
Partitioning
CONQUERING COMPLEXITY
• Abstraction
• Layering
• Partitioning
• Occam’s Razor
ITERATIVE ARCHITECTURE & DESIGN
Page 41
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
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
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.
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.
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.
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.
3. Create an application overview
A. Determine your application type(s)
• Web
• Mobile
• Rich client
• RIA
• Web service
• Some combination of the above
B. Identify your deployment constraints
C. Determine your relevant technologies
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
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
FUNDAMENTAL DESIGN TOOLS
• Layers
• Assemblies
• Namespaces
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
COMMON APPLICATION
ARCHITECTURE
Page 10
CASE STUDY
A naïve approach…
BASELINE LAYERED ARCHITECTURE
Tailspin Backoffice
Admin
Tailspin Backoffice
Admin
Email Server
Tailspin.Core
Payment
Processor
Payment
Processor
Tailspin.Database
Tailspin.Domain
Browser
Tailspin.Web Tailspin.WebJob
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
COMPONENT DESIGN
Database Server
Website
Tailspin.Web
Tailspin.Domain Tailspin.Core
Tailspin.WebJob
Tailspin.Database
SendGrid Stripe
PHYSICAL ARCHITECTURE
Azure Data Center
:Website
Azure Load
Balancer
User
:Website
:SQL Azure
Database
:Payment
Processor
:Search Service
...
:Webjob
:SendGrid
https
https
TDS
https
https
TDS
https
https
CASE STUDY
Something more reasonable…
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!
Rinse, repeat, refactor…
Page 41
ANALYSIS & DESIGN ARTIFACTS
• Sketch
• Blueprint
• Executable
• They are artifacts, not documentation!
• Don’t be afraid to throw them away and draw new ones!
More case studies…
CHARACTERISTICS of a GOOD
ARCHITECTURE
• Form Follows Function
Evolutionary not pre-ordained or predicted
• Functional alignment & partitioning
• One right place for non-trivial code
• Obvious where the next line of code needs to go
• Keeps complexity in check
• Facilitates/accelerates feature delivery
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?
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
Q & A
Clint Edmonson
Polaris Solutions
clinted@polarissolutions.com
Stop by our booth and chat!

More Related Content

Similar to Application architecture jumpstart

Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Karen Thompson
 
Unify Your Selling Channels in One Product Catalog Service
Unify Your Selling Channels in One Product Catalog ServiceUnify Your Selling Channels in One Product Catalog Service
Unify Your Selling Channels in One Product Catalog Service
MongoDB
 
Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...
Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...
Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...
Tom Williams
 
Ds03 data analysis
Ds03   data analysisDs03   data analysis
Ds03 data analysis
DotNetCampus
 
Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...
Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...
Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...
MongoDB
 
Retail Reference Architecture
Retail Reference ArchitectureRetail Reference Architecture
Retail Reference Architecture
MongoDB
 
Expose Yourself Without Insecurity: Cloud Breach Patterns
Expose Yourself Without Insecurity: Cloud Breach PatternsExpose Yourself Without Insecurity: Cloud Breach Patterns
Expose Yourself Without Insecurity: Cloud Breach Patterns
Rob Ragan
 

Similar to Application architecture jumpstart (20)

(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
 
Unify Your Selling Channels in One Product Catalog Service
Unify Your Selling Channels in One Product Catalog ServiceUnify Your Selling Channels in One Product Catalog Service
Unify Your Selling Channels in One Product Catalog Service
 
AWS Summit Seoul 2015 - AWS 최신 서비스 살펴보기 - Aurora, Lambda, EFS, Machine Learn...
AWS Summit Seoul 2015 -  AWS 최신 서비스 살펴보기 - Aurora, Lambda, EFS, Machine Learn...AWS Summit Seoul 2015 -  AWS 최신 서비스 살펴보기 - Aurora, Lambda, EFS, Machine Learn...
AWS Summit Seoul 2015 - AWS 최신 서비스 살펴보기 - Aurora, Lambda, EFS, Machine Learn...
 
Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...
Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...
Autodesk Knowledge Network: A Knowledge Ecosystem Approach to Integrated Cont...
 
Ds03 data analysis
Ds03   data analysisDs03   data analysis
Ds03 data analysis
 
Oracle Endeca 101 Developer Introduction High Level Overview
Oracle Endeca 101 Developer Introduction High Level OverviewOracle Endeca 101 Developer Introduction High Level Overview
Oracle Endeca 101 Developer Introduction High Level Overview
 
Cloud Customer Architecture for Big Data and Analytics
Cloud Customer Architecture for Big Data and AnalyticsCloud Customer Architecture for Big Data and Analytics
Cloud Customer Architecture for Big Data and Analytics
 
Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...
Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...
Retail Reference Architecture Part 1: Flexible, Searchable, Low-Latency Produ...
 
Retail Reference Architecture
Retail Reference ArchitectureRetail Reference Architecture
Retail Reference Architecture
 
Agile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven DesignAgile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven Design
 
Prepare for Peak Holiday Season with MongoDB
Prepare for Peak Holiday Season with MongoDBPrepare for Peak Holiday Season with MongoDB
Prepare for Peak Holiday Season with MongoDB
 
Aleksey Denysiuk «Document Management in SW Projects – Recommendations and Hi...
Aleksey Denysiuk «Document Management in SW Projects – Recommendations and Hi...Aleksey Denysiuk «Document Management in SW Projects – Recommendations and Hi...
Aleksey Denysiuk «Document Management in SW Projects – Recommendations and Hi...
 
Structured Authoring for Business-Critical Content
Structured Authoring for Business-Critical ContentStructured Authoring for Business-Critical Content
Structured Authoring for Business-Critical Content
 
Data Warehouse approaches with Dynamics AX
Data Warehouse  approaches with Dynamics AXData Warehouse  approaches with Dynamics AX
Data Warehouse approaches with Dynamics AX
 
Object Oriented System Design
Object Oriented System DesignObject Oriented System Design
Object Oriented System Design
 
MediaGlu and Mongo DB
MediaGlu and Mongo DBMediaGlu and Mongo DB
MediaGlu and Mongo DB
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQL
 
SQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The MoveSQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The Move
 
Expose Yourself Without Insecurity: Cloud Breach Patterns
Expose Yourself Without Insecurity: Cloud Breach PatternsExpose Yourself Without Insecurity: Cloud Breach Patterns
Expose Yourself Without Insecurity: Cloud Breach Patterns
 

More from Clint Edmonson

Visual Studio 2010 Ultimate
Visual Studio 2010 UltimateVisual Studio 2010 Ultimate
Visual Studio 2010 Ultimate
Clint Edmonson
 

More from Clint Edmonson (20)

New Product Concept Design.pptx
New Product Concept Design.pptxNew Product Concept Design.pptx
New Product Concept Design.pptx
 
Lean & Agile Essentials
Lean & Agile EssentialsLean & Agile Essentials
Lean & Agile Essentials
 
MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?
MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?
MICROSOFT BLAZOR - NEXT GENERATION WEB UI OR SILVERLIGHT ALL OVER AGAIN?
 
Flow, the Universe and Everything
Flow, the Universe and EverythingFlow, the Universe and Everything
Flow, the Universe and Everything
 
Code smells and Other Malodorous Software Odors
Code smells and Other Malodorous Software OdorsCode smells and Other Malodorous Software Odors
Code smells and Other Malodorous Software Odors
 
State of agile 2016
State of agile 2016State of agile 2016
State of agile 2016
 
Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015Lean & Agile DevOps with VSTS and TFS 2015
Lean & Agile DevOps with VSTS and TFS 2015
 
Agile Metrics That Matter
Agile Metrics That MatterAgile Metrics That Matter
Agile Metrics That Matter
 
Advanced oop laws, principles, idioms
Advanced oop laws, principles, idiomsAdvanced oop laws, principles, idioms
Advanced oop laws, principles, idioms
 
ADO.NET Entity Framework
ADO.NET Entity FrameworkADO.NET Entity Framework
ADO.NET Entity Framework
 
Windows 8 - The JavaScript Story
Windows 8 - The JavaScript StoryWindows 8 - The JavaScript Story
Windows 8 - The JavaScript Story
 
Windows Azure Jumpstart
Windows Azure JumpstartWindows Azure Jumpstart
Windows Azure Jumpstart
 
Introduction to Windows Azure Virtual Machines
Introduction to Windows Azure Virtual MachinesIntroduction to Windows Azure Virtual Machines
Introduction to Windows Azure Virtual Machines
 
Peering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to MasterPeering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to Master
 
Architecting Scalable Applications in the Cloud
Architecting Scalable Applications in the CloudArchitecting Scalable Applications in the Cloud
Architecting Scalable Applications in the Cloud
 
Windows Azure jumpstart
Windows Azure jumpstartWindows Azure jumpstart
Windows Azure jumpstart
 
Windows Azure Virtual Machines
Windows Azure Virtual MachinesWindows Azure Virtual Machines
Windows Azure Virtual Machines
 
A Force of One - Agile and the Solo Developer
A Force of One - Agile and the Solo DeveloperA Force of One - Agile and the Solo Developer
A Force of One - Agile and the Solo Developer
 
Agile is as Agile Does
Agile is as Agile DoesAgile is as Agile Does
Agile is as Agile Does
 
Visual Studio 2010 Ultimate
Visual Studio 2010 UltimateVisual Studio 2010 Ultimate
Visual Studio 2010 Ultimate
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 

Application architecture jumpstart

  • 2.
  • 3. Who the heck needs architecture?
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. ARCHITECTURE “A unifying or coherent form or structure.” merriam-webster.com
  • 12. DESIGN “Design, at its most fundamental, is about finding solutions.” Garr Reynolds
  • 13. THE GOAL OF ARCHITECTURE Eliminate the things you don’t want to think about. Keep complexity at bay!
  • 14.
  • 15. How do we tackle this complexity?
  • 18. CONQUERING COMPLEXITY • Abstraction • Layering • Partitioning • Occam’s Razor
  • 19. ITERATIVE ARCHITECTURE & DESIGN Page 41
  • 20. 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
  • 21. 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
  • 22. 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.
  • 23. 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.
  • 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 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.
  • 25. 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.
  • 26. 3. Create an application overview A. Determine your application type(s) • Web • Mobile • Rich client • RIA • Web service • Some combination of the above B. Identify your deployment constraints C. Determine your relevant technologies
  • 27. 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
  • 28. 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
  • 29. FUNDAMENTAL DESIGN TOOLS • Layers • Assemblies • Namespaces
  • 30. 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
  • 32. CASE STUDY A naïve approach…
  • 33. BASELINE LAYERED ARCHITECTURE Tailspin Backoffice Admin Tailspin Backoffice Admin Email Server Tailspin.Core Payment Processor Payment Processor Tailspin.Database Tailspin.Domain Browser Tailspin.Web Tailspin.WebJob
  • 34. 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
  • 35. COMPONENT DESIGN Database Server Website Tailspin.Web Tailspin.Domain Tailspin.Core Tailspin.WebJob Tailspin.Database SendGrid Stripe
  • 36. PHYSICAL ARCHITECTURE Azure Data Center :Website Azure Load Balancer User :Website :SQL Azure Database :Payment Processor :Search Service ... :Webjob :SendGrid https https TDS https https TDS https https
  • 37. CASE STUDY Something more reasonable…
  • 38. 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!
  • 40. ANALYSIS & DESIGN ARTIFACTS • Sketch • Blueprint • Executable • They are artifacts, not documentation! • Don’t be afraid to throw them away and draw new ones!
  • 42. CHARACTERISTICS of a GOOD ARCHITECTURE • Form Follows Function Evolutionary not pre-ordained or predicted • Functional alignment & partitioning • One right place for non-trivial code • Obvious where the next line of code needs to go • Keeps complexity in check • Facilitates/accelerates feature delivery
  • 43. 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?
  • 44. 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
  • 45. Q & A

Editor's Notes

  1. Photo credits: http://www.flickr.com/photos/cogdog/2708223050/ Creative Commons Attribution License
  2. Photo credits: http://www.flickr.com/photos/dullhunk/2859826117/ Creative Commons Attribution License
  3. Photo credits: http://www.flickr.com/photos/rutlo/4094249840/ Creative Commons Attribution License
  4. Photo credits: http://www.flickr.com/photos/annahape-gallery/ Creative Commons Attribution License
  5. Photo credits: http://www.flickr.com/photos/wwarby/2460644803/ Creative Commons Attribution License
  6. Photo credits: http://www.flickr.com/photos/paalia/3582759194/ Creative Commons Attribution License
  7. Photo credits: http://www.flickr.com/photos/paalia/3582759194/ Creative Commons Attribution License
  8. Photo credits: http://www.flickr.com/photos/paalia/3582759194/ Creative Commons Attribution License
  9. Photo credits: http://www.flickr.com/photos/emilysoo/3863285545/ Creative Commons Attribution License
  10. BICC Polaris Website
  11. 10/19/2018 8:25 PM