About the Application Architecture Guidance 2.0 Project
The purpose of the Application Architecture Guide 2.0 project is to improve your effectiveness building applications on the Microsoft platform. The primary audience is solution architects and developer leads. It provides design-level guidance for the architecture and design of applications built on the .NET Framework. It focuses on the most common types of applications, partitioning application functionality into layers, components, and services, and walks through their key design characteristics. The guidance is a collaborative effort between patterns & practices, product teams, and industry experts. The project consists of a Knowledge Base (KB) and a guide.
The Application Architecture Guide 2.0 is a map of the terrain and a way to frame and name the space for meaningful conversations. It's not a step-by-step, tutorial in application architecture. That's an important distinction.
Results at a Glance
It’s 3 ½ months into the project. Here’s the key results so far:
v Shipped Beta 1 of App Arch Guide 2.0 on 10/27.
v Top 10 downloads in CodePlex since launch.
v 110,000 views of the App Arch KB since launch.
v Featured on ServerSide.NET.
It’s early but here’s a sampling of the verbatums from some of our customers:
v “Patterns and Practices is about to release what I consider one of the best Architectural Guides I’ve seen for Microsoft’s platform”
v This guide just rocks!!! Awesome stuff. I just finished browsing through the whole guide and I concurred with one of my TSPs… it is what we were waiting for!”
v “I find this sort of stuff hugely valuable, not just for my own understanding and reference, but in discussions with customers. The p&p deliveries give us a perfect answer for the eternal customer question 'how does Microsoft do it?' or 'what does Microsoft recommend?'.”
v “You've done a really nice job logically laying out the whole thing in a technology agnostic way. I plan to leverage your work and apply it to my projects.”
v “Do you have hard copy of the Guide which I can borrow? Xxxx is my Dev Lead and he wants everyone in his team to go through it”
Application Architecture Guide 2.0 Beta 1 Release
We released Beta 1 of the Application Architecture Guide 2.0 on October 27th. Within days, it climbed to the top 10 downloads in CodePlex, where it’s remained there since.
Here’s a summary of the key features of the guide:
v Canonical app frame - describes at a meta-level, the tiers and layers that an architect should consider.
v App Types - Canonical application archetypes to illustrate common application types. Each archetype will be described in terms of the target scenarios, technologies, patterns and infrastructure it contains.
v Arch Frame - a common set of categories for hot spots for key engineering decisions.
v Quality Attributes - a set of qualities/abilities that shape your application architecture: performance, security, scalability, manageability, deployment, communication, etc.
v Principles, patterns and practices - Using the frames as backdrops, the guide overlays relevant principles, patterns, and practices.
v Technologies and capabilities - a description/overview of the Microsoft custom app dev platform and the main technologies and capabilities within it.
App Arch Knowledge Base (KB)
The Application Architecture KB is where we put our modular prescriptive guidance. It includes step-by-step How Tos, as well as Guidelines, Videos … etc. It’s a supplement to the Application Architecture Guide 2.0.
The KB allows us to ship modules out of band, as well as test and vette the guidance as we go. The main focus so far has been on modules that directly support the guide, but we’re making a wish list of future modules to add to the KB.
App Arch Poster
To build awareness of the project, Javed Sikander, Ajoy Krishnamoorthy, and David Hill created a full-sized poster to spread the word. The poster is a mash up of some of the key ideas. For example, you can see how the heart of the poster is the reference architecture. Attached to the layered architecture are various clients, including a Web app front end, as well as a mobile client. The business logic is exposed as a service. Most importantly, the super hero promises in the lower left gives you confidence that you too can design an effective architecture for your scenario.
One of the best ways to share the heart of a project is a metaphor. Here’s some of the favorite metaphors used to explain the guide:
v “How to put the legos together.”
v “… Microsoft playbook for application architecture!”
v “Stand on the shoulders of giants.”
Photo by Michale.
Stand on the Shoulders of Giants
Don’t go it alone. One of the main ideas behind the guide is that you can stand on the shoulders of giants. Rather than start from scratch, you can build on the insights and experience from others. The guide is a consolidation of many of the best principles, patterns and practices from people inside and outside of Microsoft. Here’s a snapshot of the extended team ….
Adwait Ullal; Andy Eunson; Christian Weyer; David Guimbellot; David Weller; Derek Greer; Eduardo Jezierski; Evan Hoff; Gajapathi Kannan; Jeremy D. Miller; Keith Pleas; Kent Corley; Mark Baker; Paul Ballard; Norman Headlam; Ryan Plant; Sam Gentile; Ted Neward; Udi Dahan
Microsoft Contributors / Reviewers
Ade Miller; Anoop Gupta; Bob Brumfield; Brad Abrams; Brian Cawelti; Bhushan Nene; Burley Kawasaki; Carl Perry; Chris Keyser; Chris Tavares; Clint Edmonson; David Hill; Denny Dayton; Diego Dagum; Dmitri Martynov; Dmitri Ossipov; Don Smith; Dragos Manolescu; Elisa Flasko; Eric Fleck; Erwin van der Valk; Faisal Mohamood; Francis Cheung; Gary Lewis; Glenn Block; Gregory Leake; Ian Ellison-Taylor; Ilia Fortunov; J.R. Arredondo; John deVadoss; Joseph Hofstader; Koby Avital; Loke Uei Tan; Manish Prabhu; Mehran Nikoo; Michael Puleio; Mike Walker; Mubarak Elamin; Nick Malik; Nobuyuki Akama; Ofer Ashkenazi; Pablo Castro; Pat Helland; Phil Haack; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Serena Yeoh; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski
Architecture Meta Frame
As part of the App Arch Guidance project, we've created an organizing frame to help think about application architecture. We use the frame to explore and gain insight into different aspects of application architecture. App arch is a big space. We'll be using the frame to catalog and organize our various principles, patterns, practices, and assets.
Anatomy of the App Arch Meta Frame
You can see from the figure, we have a few parts that work together:
v Scenarios - You can't evaluate an architecture in a vacuum. Scenarios are the backdrop and the context.
v Quality Attributes / Qualities - This is your classic set of reliability, security, performance, flexibility, maintainability ... etc.
v Requirements / Constraints - These are the user, business, and technical rules that shape your architecture.
v App Types - This is your overall shape. This includes Web app, Rich Client, Mobile, ... etc. While the line may blur, there's important distinctions among application types.
v Architecture Styles - This includes architectural patterns such as N-tier, client-server, SOA, ... etc. You can see shifts in styles over the years such as from object-orientation to message-orientation.
v Architecture Frame - These are the architectural "hot spots." This is where your key engineering decisions happen.
Keep in mind that this is a meta-frame (so it's a frame of frames.) We'll have a collection of frames that shine the spotlight on more focused areas.
Reference Application Architecture
One of the most common questions we’ve heard is, what are the layers and tiers of a typical application and what goes in each layer. To address this question, we created reference application architecture. It’s a simple blueprint or map of the layers and which components go into each layer.
How can you more effectively design your architecture? One of the most important innovations in the project is a meta-process for designing architecture. We call it the Agile Architecture Method. As part of the Agile Architecture Method, you scope and focus your architecture exercise. You use scenarios to drive the design and evaluate potential solutions. This method helps you think through your choice of application type, deployment, architectural style and technologies. Most importantly, it helps you quickly iterate through potential solutions.
Agile Architecture Method Steps
Here’s a summary of the key steps:
· Step 1. Identify Objectives.
· Step 2. Key Scenarios.
· Step 3. Application Overview.
· Step 4. Key Hot Spots.
· Step 5. Candidate Solutions.
Application Architecture Guidance Team
The core Application Architecture Guidance team includes:
J.D. Meier , Alex Homer, David Hill, Jason Taylor , Prashant Bansode , Lonnie Wall, Rob Boucher Jr, and Akshay Bogawat.
Follow Along At ….
You can follow along the project at the following sites:
· App Arch Guide 2.0 Site (CodePlex) – http://www.codeplex.com/AppArchGuide
· App Arch KB (CodePlex) – http://www.codeplex.com/AppArch
· J.D. Meier’s Blog – http://blogs.msdn.com/jmeier