38
APPLICATION ARCHITECTURE JUMPSTART Clint Edmonson Senior Consultant Polaris Solutions [email protected]

Application architecture jumpstart

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Application architecture jumpstart

APPLICATION ARCHITECTURE JUMPSTART

Clint Edmonson

Senior Consultant

Polaris Solutions

[email protected]

Page 2: Application architecture jumpstart

Platinum Sponsors

Silver Sponsors

Gold Sponsors

Page 3: Application architecture jumpstart
Page 4: Application architecture jumpstart

Who the heck needs architecture?

Page 5: Application architecture jumpstart
Page 6: Application architecture jumpstart
Page 7: Application architecture jumpstart
Page 8: Application architecture jumpstart
Page 9: Application architecture jumpstart
Page 10: Application architecture jumpstart
Page 11: Application architecture jumpstart
Page 12: Application architecture jumpstart

CONQUERING COMPLEXITY

• Abstraction• Partitioning

Page 13: Application architecture jumpstart
Page 14: Application architecture jumpstart

ARCHITECTURE

“A unifying or coherent form or structure.” merriam-webster.com

Page 15: Application architecture jumpstart

DESIGN

“Design, at its most fundamental, is about finding solutions.” Garr Reynolds

Page 17: Application architecture jumpstart

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• Testers• Operations

Page 18: Application architecture jumpstart

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

Page 19: Application architecture jumpstart

BRAINSTORMING SCOPE & KEY SCENARIOS

Page 20: Application architecture jumpstart

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

Page 21: Application architecture jumpstart

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 22: Application architecture jumpstart

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 23: Application architecture jumpstart

FUNDAMENTAL DESIGN TOOLS

• Layers

• Assemblies

• Namespaces

Page 25: Application architecture jumpstart

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 26: Application architecture jumpstart

LAYERED ARCHITECTURE DESIGN STEPS

1. Determine layers you require

2. Determine rules for interaction between layers

3. Identify cross-cutting concerns

4. Determine if you need to collapse layers

5. Choose deployment strategy

Page 27: Application architecture jumpstart

BASELINE LAYERED ARCHITECTURE

Page 28: Application architecture jumpstart

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 29: Application architecture jumpstart

Baseline physical deployment

Page 30: Application architecture jumpstart

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 32: Application architecture jumpstart

ANALYSIS & DESIGN ARTIFACTS

• Sketch• Blueprint• Executable

• They are artifacts, not documentation!• Don’t be afraid to throw them away and draw new ones!

Page 33: Application architecture jumpstart

Architecture after several iterations

Page 34: Application architecture jumpstart

BEST PRACTICES• Minimize upfront design

• avoid starting more than one layer/namespace deep

• Analyze and refactor at the beginning of each iteration

• Separate functional areas of concern cleanly

• Avoid duplicating responsibilities

• Minimize dependencies between layers

• Make it obvious where code needs to go!

Page 35: Application architecture jumpstart

LAW OF PARSIMONY

“Reduce everything to its essence so that form harmonizes with function.” Chris Kobryn

Page 36: Application architecture jumpstart

REFERENCES

• Microsoft Application Architecture Guide 2nd Editionby 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 37: Application architecture jumpstart

Q & A

Page 38: Application architecture jumpstart