- Scalability: how many users or transactions can it process concurrently?
- Performance: how fast does it respond? what is the max throughput?
- Recoverability: how does the application recover from a fault?
- Security: can it sustain attacks? is data protected?
- Maintainability: how easy is it to maintain?
- Operability: how easy is it to use and managed? how is it operated?
- Availability: is it available 24x7? and is it 99.9% or 99.99%?
Scalability
- Horizontal and Vertical Scalability
- Vertical: Add resources to a single computer (more CPU/RAM). vertical scaling is cheaper
- Horizontal: Add more boxes of similar memory & CPU
Performance
- Parallel Processing, Asynchronous Processing, Caching, multithreading
Recoverability
- Session replication - ability to replicate the user sessions to a secondary server in the cluster
- Backup
- Business Continuity or Disaster Recovery Infrastructure Requirements
Security
- Authentication & Authorization (LDAP, single sign-on), encryption
Maintainability
- Application complexity has direct correlation to maintainability. It is relatively easy to maintain a system with less dependencies.
- Logging
- Robust Error Handling - will keep the system's availability & uptime high
- No direct access to server
- Layered web application is easy to maintain. but multi-threaded application is hard to maintain
- KISS (simple design)
Operability
- Understands the purpose of the system
- Ask users what they really want and design accordingly
- Consistency - standard look & feel
Availability
- Is the amount of time that the system is up and running
- Robust Error Handling - will keep the system's availability & uptime high
- Backups & recovery
- Fault recovery
Backward error recovery (implementing transactions)
System is restored to a previous known valid state
- Exception Handling
No comments:
Post a Comment