Skip to content
Notes and links useful for Modern Software Architect
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md

README.md

Modern Software Architect

Notes and links useful for Modern Software Architect

Architecture drivers

  • business (goal, requirements)
  • project (budget, deadline, knowledge)
  • qualities (availability, security, reliability)

4 architecture types / styles

  • big ball of mud (not distributed, not modular monolith)
  • modular monolith (not distributed)
  • microservices (distributed, modular)
  • distrubted monoligth (not modular)

Architecture patterns

  • P&A (port & adapters) (hexagonal)
  • CQRS (command query responsibility segregation)

Data models

  • anemic
  • objective

Coupling levels

local method local instance external instance configurable instance notification
How? + - - - -
Where? + + - - -
Who? + + + - -
What? + + + + -

source: Understanding coupling - Łukasz Szydło - wroc_love.rb 2018

Communication in distributed system

  • temporal coupling
  • design for failure
  • asynchronous over synchronous
  • commans (queues) and events (topics)
  • asynchronous principles:
    • persistent
    • at least once delivery
    • exponential retries
  • synchronous only when required
  • timeout ? retry !
  • circuit breaker (fallback)
  • load balancer is single point of failure
  • if service discovery is not available, use cached information about service
  • loose coupling over canonical model
  • contracts between services
  • monitoring is new testing
  • percentiles (P99.95), not average
  • automation as a code, pipeline as a code -> CI/CD
  • infrastructure as a code, configuration as a code
  • CAP theorem:
    • Consistency: Every read receives the most recent write or an error
    • Availability: Every request receives a (non-error) response, without the guarantee that it contains the most recent write
    • Partition tolerance: The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes

source: Boiling Frogs 2019 - Jakub Kubryński - Kuloorporna komunikacja w systemtach rozproszonych

General system architecture

---------------------- API GATEWAY ----------------------
------------------------ filters ------------------------
------------------------ routers ------------------------
---------------------------------------------------------
--- saga -----------------------------authorization------
--- process managager ----------------logging------------
--- workflow -------------------------notifications------
---------------------------------------------------------
---------------------- complex write --------------------
--- kafka ------------ CRUD ----------------- * MQ ------
---------------------- comple read ----------------------
---------------------------------------------------------
----------- hadoop -------- ML -------- spark -----------
---------------------------------------------------------
  • communication between services is done by messages (city metaphor)
  • database is private and under central elements for CRUD, read and write and duplication of data it prefered solution
  • pyramid of tests:
    • for complex write: unit > integration-> e2e (unit the most important)
    • for complex read: e2e > integration > unit (e2e the most important)
    • for complex read: unit = integration = unit (all are important)
  • construction elements:
    • for complex write: commands, events, aggregates, policies
    • for complex read: read models
  • levels of designing from highest to lowest:
    • system
    • services
    • construction elements
    • objects
    • instructions

source: Boiling Frogs 2018 - Łukasz Szydło - Modularity – the final frontier

Architecture decision record

  • context:
    • stable / unstable
    • core / supporting / generic
    • time
    • known change vectors
    • complexity (rules, config, math, versioning, performance)
  • decision
  • cosequences

*source: 4Developers 2019: How does architect know? Łukasz Szydło

Aspects of product

  • implementation: readability, reuse, expand
  • delivery: tests, configuration
  • use: availability, responsivness, security
  • maintenance: stability, reliabilty

Useful articles

Useful books

Useful repositories

You can’t perform that action at this time.