> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/devops1/infrastructure/non-functional-attributes.md).

# Non functional Attributes (Quality Attributes)

* infrastructure services can be well defined as a function, like providing disk space, or routing network messages.
  * Functional Attributes
* Non-functional attributes, on the other hand, describe the qualitative behavior of a system, rather than specific functionalities.
* Examples of non-functional attributes are:
  * Availability
  * Scalability
  * Reliability
  * Stability
  * Testability
  * Recoverability
* NFAs important for the successful implementation and use of an IT infrastructure,
  * but in projects, they rarely get the same attention as the functional services
* When NFAs are not meant they have a direct impact on the business
  * Slow to deploy features to customers
  * Cannot maintain and users experience more bugs
  * Regulations cannot be met, and fines and reputational damage occurs
  * User experience is slow, buggy or outdated, and users will leave to competitors (clients or employees)
* NFAs are  functional indeed, but they are not directly related to the primary functionalities of a system
  * Better term would be quality attributes
  * This leads to important stakeholders of a business (ones with money and influence) to not have the same feelings about NFAs and focus more on functionality.
    * They conisder NFAs as hygiene factor and taken for granted
    * They dont mention them, or state them explicitly
    * But they have expectations of them

## Non functional Requirements (NFRs)

* Architects and engineers job is to find out these NFRs
* the acceptance of a system is largely dependent on the implemented non-functional requirements.
  * A website can be very beautiful and functional, but if loading the site (performance, a non-functional requirement) takes 30 seconds, most customers are gone!
* A large part of the budget for building an infrastructure is usually spent in fulfilling non-functional requirements that are not always clearly defined
* Infrastructure delivers manyof the NFRs
  * Examples
    * An application using an IT infrastructure built with several single points of failure will probably not reach very high availability figures, no matter how well the application is built
    * when the IT infrastructure is not designed to be scalable, the applications built upon it cannot introduce scalability as an afterthought. Will need to redesign and reimplement a new infrastructure which can be costly
    * When an IT infrastructure is setup to be highly available, a badly designed application can make the end result highly unreliable
    * security flaws on the processes level can undo all
* not unusual to have conflicting non-functional requirements in a system
  * Example
    * security versus user friendliness.
      * Users expect highly secured systems, but really don’t want to be bothered by password changes, smart card authentication, and other annoying security measures.
    * performance and cost.
      * Getting a high-performance system usually means getting more and faster hardware, and using strict implementation rules (which takes time to do and dependent on needs high cost engineers)
*
