# ATAM workshop
---
## Agenda
- ATAM 101
- Business drivers
- Architecture
- Identify approaches
- Quality scenarios
- Review architecture against scenarios
- Risks & Debt
---
# ATAM
- Architecture Tradeoff Analysis Method
- Architectures COME with tradeoffs
- An arch. is the primary input for all of us to communicate about the product
- It is both prescriptive and descriptive
- It is for business managers, PMs and engineers
---

---
- Architecture is not about basic functionality, we already discussed that
- We address QUALITY in this workshop
- What does it mean that our product does it job WELL
- Secure against what? Fault tolerant in what environment? How fast? How cheap?
- No need for tech jargon, the architect (me) is responsible to address that
---
```plantuml
@startuml
usecase bd as "Business drivers"
usecase arch as "Architecture characteristics"
usecase tradeoff as "Trade-offs"
bd -> arch
note bottom of bd: Time-to-market
arch -> tradeoff
note bottom of arch: Decoupling
tradeoff -> arch
note bottom of tradeoff: Performance vs Deployability
arch -> bd
@enduml
```
---
## Business drivers
---
## The Architecture
```plantuml
@startuml 7pi.xyz Architecture
skinparam monochrome true
skinparam shadowing false
skinparam linetype ortho
skinparam nodesep 60
skinparam ranksep 80
package "Backend" {
[Database] as DB
[REST API] as API
[LD Privacy] as LDP
}
package "Frontend" {
[End-user Frontend] as fe
[Admin Frontend] as adminfe
[Advertizer dashboard] as advfe
}
package "Web3 Workers" as web3 {
[Event parser] as events
[Secure TX proxy] as txproxy
[Cron service] as cron
}
package "AI" {
[Inference service] as inference
[Cron service] as aicron
}
Frontend <-d--> Backend
API <--> DB
web3 <-l-> Backend
web3 <-u-> Frontend
AI <-l-> Backend
@enduml
@enduml
```
---
## Approaches
- Fast experimentation
- Cloud-native scaling
- Synchronous (REST) communicatons
- Social-network like UX
- Data sovereignity
- Service-based framework
---
## Quality tree
- Let's all propose business and tech requirements
- Let's try to attribute them to an architecture approach
- Priorize scenarios
- Do the priorities match the quality tree?
- Are all of them addressed?
---
## Example quality scenario
- Actor: user
- Environment: Accepted and completed a challenge
- Stimulus: Clicks "Complete" but the app says "You haven't completed this challenge yet"!
- Response: Show a progress status dialog on exactly what is missing from completion.
- Response metric: TTR (Time to Resolution)
---
## Every stakeholder can be an actor
- Actor: 7pi legal team
- Environment: average wednesday in work, raining outside :)
- Stimulus: Strava announces that they are going to close their API for AI training uses
- Response: Change into an alternative data aggregation layer
- Response metric: Time to Market, TTR
---
## Risks and debt
(in order of importance :upside_down_face: )
- What points business feels miserable about?
- What points project management feels miserable about?
- What points engineering feels miserable about?
---
Matt: Usability, Scalability, Privacy
Norbert Kneifel: Usability, Privacy, Scalability
Roland: Usability, Efficiency, Reliability
Usability
Roland: EOU, Functional completeness, acessibility
Norbert: Ease of Use, Accesibility, Appearance
Matt: Ease of Use, functional completeness, compatibility
Scalability:
2x Performance, cost effectiveness, dev. velocity
Reliability:
Error handling, compat, compliance
Compat, HA, compliance
error handling, compliance, HA
---
```plantuml
@startuml
usecase Holistic
usecase Reliability
usecase Scalability
usecase Usability
usecase "a11y"
usecase "Ease of use"
usecase "Functional"
usecase "Cost effectivity"
usecase "Dev. Velocity"
usecase "Performance"
usecase "Error handling"
usecase "Compliance"
usecase "HA"
Holistic -d-> Usability
Holistic -d-> Scalability
Holistic -d-> Reliability
Usability -d-> "Ease of use"
Usability -d-> "Functional"
Usability -d-> "a11y"
Scalability -d-> Performance
Scalability -d-> "Cost effectivity"
Scalability -d-> "Dev. Velocity"
Reliability -d-> "Error handling"
Reliability -d-> "Compliance"
Reliability -d-> "HA"
@enduml
```
---
# QS 1
- Actor: User
- Environment: On a screen-reader, web frontend, blindness
- Stimulus: a11y Difficulties on the frotend
- Response: Q/A, A/B Testing, user engagement
- Metric: # of ADA complaints? Analytics?
---
# QS 2
- Actor: User
- Env: 2 devices under 1 account
- Stimulus: starting a challenge
- Response: ask dialog to select device
- Metric: correlation analysis, anomalies in the DB
---
# QS 3
- Actor: Dev team
- Env: SSH access to the prod server
- Stimulus: health data anomalies, high timeseries correlation
- Response: data cleanup cronjob
- Metric: piecewise pearson correlation of timeseries
---
# QS 3
- Actor: Dev team
- Env: SSH access to the prod server
- Stimulus: health data anomalies, high timeseries correlation
- Response: data cleanup cronjob
- Metric: piecewise pearson correlation of timeseries
---
# QS 4
- Actor: User
- Env: Native app insalled, no account
- Stimulus: Intent to onboard to the app
- Response: Mobile-native Oauth Login flow
- Metric: [analytics] - Mean Reg flow time
---
# QS 5
- Actor: User
- Env: Reward token accumulated in the token
- Stimulus: Intent to sell the token for :moneybag:, but no gas coverage
- Response: Onramp, gas sponsorship
- Metric: # of withdraw open events with an empty wallet
---
# QS 6
- Actor: Brand
- Env: End of the year is coming, CSR responsibilities
- Stimulus: Request CSR report
- Response: Automated CSR generation, email tasks
- Metric: # of CSR report engagement from the OP team
Microsoft access export? Web frontend to "assemble your report"?
<u>**Is there an ISO standard?**</u>
---
# QS 7
- Actor: Brand
- Env: Successful product
- Stimulus: Intent to list product to the marketplace
- Response: Legacy DB connectors to import inventory
- Metric: # of direct integration requests
---
- Dev velocity?
- Performance?
- Privacy?
- ~~Interop~~?
- Compliance?
---
# QS 8
- actor: investor
- env: invests into the liquidity pool 1M USD a year
- stimulus: requires to show the impact of the amount of investment made throughout the year in terms of health and also return
- response: need to measure the investment made by the 1M USD into rewards, etc., plus we need to show the overall return on the 1M USD investment as per the agreed terms included in the investor contract
- metric: tracking of each USD incoming to and outgoing from the liquidity pool
---
ADA
{"title":"ATAM workshop","description":"ATAM 101","contributors":"[{\"id\":\"f4d4af67-750e-4c99-b33e-c04b6d99a6c6\",\"add\":13359,\"del\":11852}]"}