Skip to content

Latest commit

 

History

History
342 lines (212 loc) · 7.4 KB

index.adoc

File metadata and controls

342 lines (212 loc) · 7.4 KB

Architecture characteristics

External sources

Use below sources as inspiration when searching for the characterictics of your system.

Characteristics library


Accessibility

Does your system need to consider users with a wide range of disabilities?

For example:

  • Colorblindness

  • Hearing loss

  • Disabilities associated with age

Related characteristics:

  • Legal - Do you have legal requirements for accessibility in the countries where your system works?

  • Compliance - Do you have rules or regulations that you need to comply with?


Adaptability

Does your system need to adapt to:

  • different hardware

  • different screen sizes

  • different operating systems

  • different public cloud providers?

Does your system need to adapt automatically, by human operator, by the user?


Accountability


Availability

How much downtime is acceptable?

99.9% - 10m 4s per week
99.99% - 4m 22s per month
99.999% - 5m 15s per year

Can you handle incidents manually or do you need automated way to bring your system back to life?

Does your system depend on other systems, and what is their availability?

What "available" means for the users of your system?

Can you afford to have planned downtime?

Do you have multiple tenants in the system that require different level of availability?

Related characteristics:

  • Legal - Do you have legal requirements about availability?

  • Fault tolerance - For high availability you may need the system to be operational even if something fails.

  • Recoverability - For high availability you probably need the system to recover itself after a failure.

  • Reliability - For high availability you usually need high reliability.

  • Robustness - If the system erodes with time, the high availability may be harder and harder to achieve.

See also


Capacity

How much traffic does your system need to support? How many users/calls/gigabytes of data?

Related characteristics:

  • Scalability - if the capacity of your system needs to grow or shrink, automatically or manually

  • Elasticity - if the capacity of your system needs to grow and shrink rapidly and automatically


Co-existence

Related characteristics:


Compatibility

Related characteristics:


Compliance

Are there any standards, laws or regulations that you need to follow, either from the industry or from standarization bodies?

Related characteristics:

  • Accessibility - Do you have rules or regulations that you need to comply with?

  • Configurability - Do you have rules, regulations or industry standards that you need to comply with?

  • Legal

  • Security - Are there security rules or regulations that you need to comply with?


Concurrency


Confidentiality

Does your system store or process personal data that only owners should have access to? Does your system store or process sensitive data that can be used against people if made available for unauthorized parties?

Related characteristics:

  • Legal - Are there any legal rules to keep data confidential? Do you operate your system in Europe and need to follow GDPR, or similar regulations in other places?

  • Security - More general term for Confidentiality, Integrity and other related characteristics.

  • Integrity - Does your system need to keep data intact, not only secret?


Configurability

Does your system need to be configurable in any way?

Who is expected to configure it:

  • final user;

  • operator on the client side;

  • developers?

Is the configuration done in the runtime, in deployment time, in build time?

If the configuration is changed in runtime, when does it become effective? Immediately, after restart?

Related characteristics:

  • Compliance - Are there any configuration standards your system needs to follow? SNMP, CLI, HTTP?


Continuity


Deployability


Durability

Related characteristics:


Ease of integration


Elasticity

Does the capacity of your system need to grow and shrink rapidly and automatically? If there is a breaking news related to your domain, do you need to handle the sudden peak in your system?

Note: in Kubernetes world scaling the cluster to more nodes is also known as "elasticity".

Related characteristics:


Evolvability


Extensibility


Fault tolerance

Related characteristics:


Feasibility


Integrity

Does your system need to keep the data intact, so that user know it’s genuine and hasn’t been tampered with?

Related characteristics:

  • Confidentiality - Do you need to keep the data secret, or maybe only intact?


Interoperability

Related characteristics:


Latency


Related characteristics:


Localization


Modifiability


Non-repudiation

Related characteristics:


Performance


Portability

Related characteristics:


Privacy


Recoverability

Related characteristics:


Reliability

Related characteristics:

See also:


Repudiation

Related characteristics:


Resilience

Related characteristics:


Robustness

Related characteristics:


Safety

Does your system affect people’s lives or large amounts of money? If it fails, can someone be hurt?

Related characteristics:


Scalability

Does your system’s capacity need to grow or shrink? Does it happen periodically in time, daily, weekly, monthly, yearly? Does it happen randomly in unpredictable moments?

Related characteristics:

  • Capacity - Scalability is usually defined in terms of changes in system’s capacity.

  • Elasticity - If the amount of scaling is huge and unpredictable, maybe you need elasticity.


Security

Should the access to your system be limited to authorized users? Does your system need to protect the data at rest and in transit? Can your system rely on external systems to protect the data on its behalf?

Related characteristics:


Testability


Throughput


Usability