Archived post: posted sometime between 2016 and 2022.

Architecting Large Scale Software Systems

These are notes on architecting large scale systems. (Is architecting even a word?) The notes came out of a series of recent conversations with trusted colleagues.

Large software systems have several axes to manage

Monitoring

Monitoring > Logging

Monitoring > Notifications

Deployment

Scaling

Distributed Transactions

                       HasStarted    HasCompleted

database1.someTable        1              1
database2.someTable        1              0 // problem!
database3.someTable        1              1

Event Sourcing

Redis

Lots of Data - Paging, Filtering

Back 1 2 3 4 5 6 7 8 9 10 .. 11,320 Next // no!
Back 1 2 3 4 5 6 7 8 9 10 Next // yes

Message Queue

Message Bus

Managing Thousands of Lines of Code

Traffic Localization, Distributed Systems

Challenge: region specific transactions

MonoRepos vs MicroRepos

Politics in Large Organizations