Software Architecture in Golang: Quality Attributes, Non-Functional Requirements and ilities

Опубликовано: 31 Октябрь 2024
на канале: Mario Carrion
1,878
60

In Software Architecture, regarding Requirements, there are two types: "Functional Requirements" and "Non-Functional Requirements"

"Functional Requirements" indicate how a system should function, for example:

"System must do XYZ"
"System should encode images in different sizes"

"Non-Functional Requirements" indicate how a system should be, for example:

"System must be ABC"
"System should be able to respond to spikes of traffic" - Elasticity

When discussing features with stakeholders I prefer using "Quality Attributes" instead to clearly indicate the importance of those properties.

In the end "Business Requirements" and "Product Expectations" drive the technical architecture of a system and the "Quality Attributes" to consider when implement the architecture.

Some examples of those "Quality Attributes" or "ilities":

Observability: How easy is to know what's happening? Using OpenTelemetry could answer that question.
Scalability: How easy is to grow over time? For example will the selected datastore support new users over time?
Agility: How easy/quickly can we deliver new features to our servers? Is deployment a complicated process?
Security: Are we preventing unauthorized access? Is network connectivity encrypted? How much information services share?
Availability: What's the probability our system will be available for our systems? 99% 99.9% 99.99% Service Level Indicators (SLI) and Service Level Objectives (SLO) are used for this property.
Localizability: Internationalization (i18n) and Localization (l10n). Can the system be adapted to support different regions? Countries? Languages? Currency: USD, CAD, EUR, MXN?
Fault Tolerance: Can the system be operated in some event of failure? Does it degrade gracefully?
Elasticity: Can the system adapt to workload changes automatically? Does it scale-out / scale horizontally?
Extensibility: How easy/difficult is to add new functionality? Is our code idiomatic? Well organized? With proper abstractions? Or a big ball of mud?

---

RELEVANT LINKS

https://en.wikipedia.org/wiki/List_of...

Previous Episode: "Learning Golang: Interface Types - Part 1":    • Learning Golang: Interface Types - Pa...  

Playlist "Software Architecture in Go":    • Software Architecture and System Desi...  
Playlist "Learning Go":    • Learning Go/Golang  
Playlist "Building Microservices in Go":    • Building Microservices in Golang/Go  
Playlist "GoTools and Packages":    • Golang/Go Tools and Packages  
Playlist "Testing in Go":    • Testing in Golang/Go  

  / mariocarrion  
  / mario.carrion  

00:00 - Start
00:10 - What are Quality Attributes / Non-Functional Requirements in Software Architecture?
00:22 - What are Functional Requirements in Software Architecture?
00:33 - Examples of both Functional and Non-Functional Requirements?
01:17 - Requirements as how the user sees them
01:38 - Referring as Quality Attributes instead of Non-Functional Requirements
02:09 - Software Architecture ilities
04:21 - There are a lot of ilities
04:44 - How to determine ilities or Quality Attributes?
06:45 - Conclusions

---

Who am I:

Hello👋🏼! I'm Mario, a Hands-on Software Architect and Lead Backend Engineer with more than 16 years of professional experience building all kinds of software including on-premise Industrial Automation Systems, Linux Accessibility Desktop and Browser Components as well as Distributed Advertising Microservices.

Every week I will share with you different topics I've learned while working for small startups and large companies including the processes I've followed over the years for successfully delivering complex enterprise systems from start to end.

Subscribe if you like Software Development, Software Architecture and Systems Design!

Keep it up. Don't give up!

#golang #microservices #softwarearchitecture

--- Our affiliate links below

Shop our Amazon favorites → https://www.amazon.com/shop/rubycarrion
Shop my IG feed on my LIKEtoKNOWit (LTK) page → https://www.liketoknow.it/RubyCarrion
Shop Top Deals and Featured Offers at Best Buy → https://bestbuy.7tiv.net/c/2558226/68...
Get a 30 day FREE Trial of Epidemic Sound → https://www.epidemicsound.com/referra...
Try Amazon Prime 30-day FREE Trial → https://amzn.to/3yf9a0f
I love getting Cash Back and think you will too! Join for FREE and get $30 when you spend $30. https://www.rakuten.com/r/RUBYRA132?e...

--- Our Vlog Channel

   / rubycarrion