Unit 11 – Agile Architectures

Open Agile Architecture Practitioner Certification

Pasted image 20220923155548.png
Pasted image 20220923155602.png

11.1 Explain Operations Architecture Decisions in particular through the AR example

Outward view that specifies the operational capabilities that products need.
challenge - trial and error not possible when costs of change are too high

AR Apparel Retailer

11.2 Explain Software Architecture

11.3 Describe Event-Driven Architecture and its benefits

An architecture that centers around events:

11.4 Explain Hexagonal Architecture and its benefits:

Hexagonal achitecture decouples the domain, application, and infrastructure logic. Inbound ports and adapters on the left side, outbound on the left

Domain, Application, and Infrastructure Code

Domain Code - code dealing with domain concepts and relate behavior
Application Code - Code interacting with the external world

Inside and Outside Ports and Adapters

The "domain core" of an application must be protected from the outside. Application and infrastructure logic change very rapidly.

Hexagonal architecture makes heavy us of interface/implementation decoupling mechanisms.

Inbound Ports and Adapters

Entry points to the domain. the domain reacts to requests coming from inbound ports. Inbound adapter is something like an API, GUI, or CLI.

Outbound Ports and Adapters

Exit points invoked from the domain. Driven by the domain to perform infrastructure tasks. Outbound adapter examples are DB repository, Message-Oriented Middleware, IAM systems, and other external systems the domain depends on.

11.5 Describe Non-Functional Software Requirements:

Security

Auth, monitoring, audit logs, data security, integrity, vulnerability

Reliability

Probability of failure-free software in a specified time in a given environment.

  1. Maturity
    • Decreasing the failure rate of software
    • Mitigation of negative side effects that change can introduce
  2. Recoverability
    • Minimizing duration to get system back up and running
  3. Fault-tolerance
    • Continue operating properly with a failure in one of its components

Performance

  1. Scalability
    1. Cope with increased load
  2. Performance
    1. Throughput and latency
  3. Efficiency
    1. Quantity of resources used by the app to process its tasks

Operability

  1. Observability
    1. Expose high-level observation metrics of health, state, context
  2. Documentation
    1. Provide good documentation and be well-understood to be production ready
  3. Deployability
    1. Ease of deploying a new version of software in a target environment

Maintainability

Capacity of software to be modified.

  1. Testability
    1. Validate software behavior against acceptance criteria
  2. Coupling, Modularity, and Stability
    1. Coupling - dependencies between components of a system
    2. Modularity - topology of the architecture with number of components dependent on a particular component
    3. Stability - Ability of a product to avoid side effects from changes

Interoperability

Ability to exchange data and use common protocols to do so.

11.6 Describe Software Cross-Cutting Concerns

There are many cross-cutting concerns that go through the different NFRs: