Software Architecture Rules of Thumb

Shared Nothing

The desire for command and control

Using the shared-nothing rule of thumb

  • Rather than calling another service, post data on a queue
  • Each service has its own database
  • Generate a unique id on the client rather than use the database to generate ids
  • Evolve interfaces in a backward-compatible way rather than requiring everyone upgrade to a new version in lock-step
  • Use optimistic concurrency to detect conflicts
  • Train technical leaders on each team so they can review designs without centralized approval
  • Allow each component to be deployed independently
  • Don’t create agile teams that span locations or continents
  • Remote teams have their own product owner and can make their own decisions for their features
  • Distribute expertise across teams rather than have centralized teams (e.g. for UX, UI, data management, ops and so on)




Architect at eBay, but still learning who I really am

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

AWS Session Manager Walk Through

About Small, Stable, Dedicated, Cross-Functional Teams

Algorithm Analysis(1) — Binary search

Aggressive Enemy Type

Using Argo CD with vclusters

Bulk Create Google Drive Folder Structures & Files

Personalizing GitHub Profile

Flash Stock Rom on Celkon a67

Flash Android phone

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
David Van Couvering

David Van Couvering

Architect at eBay, but still learning who I really am

More from Medium

Documentation before coding software

Does GitFlow fit in an Agile team?

Nimble Software Development

How Agile helps Developer Productivity

How Agile helps Developer Productivity