Fundamentals of Software Architecture - Deepstash
Fundamentals of Software Architecture

hei you's Key Ideas from Fundamentals of Software Architecture
by Neal Ford

Ideas, facts & insights covering these topics:

5 ideas

·

5 reads

Explore the World's Best Ideas

Join today and uncover 100+ curated journeys from 50+ topics. Unlock access to our mobile app with extensive features.

First Law Of Software Architecture

There are always trade offs

Achieve least worst architecture

Characteristics

  • Availability
  • Reliability
  • Testability
  • Scalability
  • Security
  • Agility
  • Fault tolerance
  • Elasticity
  • Recoverability
  • Performance
  • Deployability
  • Learn ability

1

3 reads

Identifying Architecture Characteristics

Architecture partitioning

  • Technical / Layered (all repositories, models, controllers in separate folders)
  • Domain / Modular (logic is organised by feature, sliced across models, controllers, repositories)

Conway law

  • Organisations are constrained to produce designs which are copies of communication structures of these organisations

Component Design

  • Action/actors approach
  • Event storming - relies on messages
  • Work flow approach

Architecture style

  • Monolithic
  1. Layered
  2. Pipeline
  3. Microkernel
  • Distributed
  1. Service based
  2. Event driven
  3. Space based
  4. Service oriented
  5. Microservices

1

1 read

Architecture Fallacies

When considering distributed architecture

  1. Network is not always reliable
  2. Latency is never zero
  3. Bandwidth is not infinite
  4. Transport cost is not zero
  5. Network not always secure

1

1 read

Monolithic Architecture

1. Layered / N tiered architecture

  • Components are organised into logical horizontal layers (eg. Presentation layer, business layer, persistence layer, database)

Pros

  • Good for small simple apps or Web sites where budget is tight and time is short

Cons

  • Deployability, Low elasticity and scalability

2. Pipeline Architecture

  • Eg. Filter pipe Filter pipe
  • Pipes form the communication channel, is unidirectional, point to point
  • Filters - producer, transformer, tester, consumer

3. Micro kernel Architecture

Product based applications (packaged for installation on consumer)

Core system and Plug in components

1

0 reads

Distributed Architecture

1. Service based architecture

  • Partitioned/driven by domain
  • Some UI, independent domain services, monolithic database (or multiple)
  • If shared db, then use shared library for database entity objects

2. Event driven

  • Asynchronous, highly scalable, high performance
  • Mediator topology
  • Broker topology - rabbitMQ, no need Central event orchestration

1

0 reads

IDEAS CURATED BY

hei you's ideas are part of this journey:

Music and Productivity

Learn more about books with this collection

How to choose the right music for different tasks

The benefits of listening to music while working

How music affects productivity

Related collections

Read & Learn

20x Faster

without
deepstash

with
deepstash

with

deepstash

Personalized microlearning

100+ Learning Journeys

Access to 200,000+ ideas

Access to the mobile app

Unlimited idea saving

Unlimited history

Unlimited listening to ideas

Downloading & offline access

Supercharge your mind with one idea per day

Enter your email and spend 1 minute every day to learn something new.

Email

I agree to receive email updates