Web Application Performance Design Inspection Questions
From Guidance Share
- J.D. Meier, Srinath Vasireddy, Ashish Babbar, Rico Mariani, and Alex Mackman
Contents |
[edit]
Deployment and Infrastructure
- Do you need a distributed architecture?
- What distributed communication should you use?
- Do you have frequent interaction across boundaries?
- What restrictions does your infrastructure impose?
- Do you consider network bandwidth restrictions?
- Do you share resources with other applications?
- Does your design support scaling up?
- Does your design support scaling out?
[edit]
Caching
- Do you cache data?
- Do you know which data to cache?
- Do you cache volatile data?
- Have you chosen the right cache location?
- What is your expiration policy?
[edit]
Class Design Considerations
- Does your class own the data that it acts upon?
- Do your classes expose interfaces?
- Do your classes contain virtual methods?
- Do your classes contain methods that take variable parameters?
[edit]
Communication
- Do you use chatty interfaces?
- Do you make remote calls?
- How do you exchange data with a remote server?
- Do you have secure communication requirements?
- Do you use message queues?
- Do you make long-running calls?
- Could you use application domains instead of processes?
[edit]
Concurrency
- Do you need to execute tasks concurrently?
- Do you create threads on a per-request basis?
- Do you design thread safe types by default?
- Do you use fine-grained locks?
- Do you acquire late and release early?
- Do you use the appropriate synchronization primitive?
- Do you use an appropriate transaction isolation level?
- Does your design consider asynchronous execution?
[edit]
Coupling and Cohesion
[edit]
Data Access
- How do you pass data between layers?
- Do you use stored procedures?
- Do you process only the required data?
- Do you need to page through data?
- Do your transactions span multiple data stores?
- Do you manipulate BLOBs?
- Are you consolidating repeated data access code?
[edit]
Data Structures and Algorithms
- Do you use appropriate data structures?
- Do you need custom collections?
- Do you need to extend IEnumerable for your custom collections?
[edit]
Exception Management
- Do you use exceptions to control application flow?
- Are exception handling boundaries well defined?
- Do you use error codes?
- Do you catch exceptions only when required?
[edit]
Resource Management
[edit]