Here I’ve listed a few characteristics (with their descriptions, if needed) which can be used while thinking about an architecture of the system:
Scalability
Usually it is about horizontal scalability of independent services.
Elasticity
If a system can scale up or down automatically.
Availability
It is how much time it must be available. Some systems can be down over nights, others must be available all the time.
Performance
How fast the system is. It’s about measuring how much time an action takes.
Responsivness
How good is user experience.
Security
How secure the system is. Authorization. Authentication. Database encryption.
Reliability
How critical is the correct working of the system. For example medical systems or airplane applications must be super reliable.
Recoverability
How quickly the system can get online agains in case of disaster. This is about backups and duplicated hardware.
Extensibility
How easy for developers is to extend the system.
Agility
Robustness/Fault tolerant
How good the system deals with errors and for example Internet or power outage.
Interoperability
Localization/Internationalization
Does system support muliple languages, zones, currencies well?
Legal
Howe well the system complies with the laws.
Feasibility
Whether a system can be practically designed, implemented, and maintained given constraints such as cost, time, resources, and technological limitations.
Maintainability
How easy is to maintain the system.
Observability
It’s about logs, metrics, traces.
Data integrity and consistency
Data is not corrupted.
Auditability
The ability to track and review changes, actions, or events within a system.
Adaptability
How easy is to adapt to changing requirements.
Interoperability
How good the system can integrate with other systems.
Deployability
How easy is to deploy the system.
Testability
The degree to which a system can be tested.
Configurability/Customizability
If the system can be configured without changing the code base.