More historical architectural guidelines

Here are more architecture guidelines from my work with a product development department in a Fortune 50 company five years ago. I wrote about “Optimize for last mile” previously. Some of the guidelines have survived the test of time, others clearly have not. Some are boilerplate now. But they’re interesting because they show how the company saw the future at that time- correctly, incorrectly, and business-as-usual.

Printed on a big poster in front of the common area, the guidelines read:

  • Simplify system designs
  • Build loosely coupled systems that may evolve independently
  • Design systems for 100% availability
  • Build to survive in hostile and unreliable environments
  • Scale horizontally
  • Centralize and consolidate
  • Keep state in reliable and scalable centralized stores, not tied to physical instances or locations
  • Design around performance bottlenecks, e.g. CPU, network IO
  • Design for least privilege
  • Design for simple, non-intrusive upgrades & rollbacks
  • Build for re-use
  • Prefer standard protocols and commodity platforms
  • Build in telemetry and monitoring
  • Embrace modern automated tool and practices throughout product lifecycle
  • Strive for maximum human readability in data and logging
  • Enable customer self-care
  • Optimize scale economics for CRAN/last mile network capacity & data center power/cooling
Posted in Uncategorized