commonplace
  • Commonplace
  • AWS
    • Control Tower
      • Building a Scalable and Secure Multi-VPC AWS Network Infrastructure
    • Talks / Articles
      • Encrypting Everything with AWS (SEP402)
      • The Tension Between Absolutes & Ambiguity in Security (SEC310)
      • Best practices for authoring AWS CloudFormation (DOP302-R1)
    • Useful Links
    • Notes
      • awscli
      • Cloudformation
        • Using Parameters
  • Infrastructure Security
    • Amazon Web Services
      • Tools
    • Tools
  • Security
    • Articles
      • If You're Not Doing Continuous Asset Management You're Not Doing Security | Daniel Miessler
      • Living Off the Land
        • Living Off The Land: Part 2
    • Cryptography
      • Shamir Secret Sharing Algorithm
    • Distros
      • REMnux
    • DoD
    • Email
    • GPG
    • Shodan
    • SSH
  • Resources
    • AWS Toolbox
    • CTF
      • AWS
    • Dev Setup
      • Windows Terminal
    • Documentation
      • MOCK Press Release Template
      • Design Document Template
    • Docker
      • Notes
      • Configure Docker w/TLS for WSL
    • Kubernetes
      • Raspberry Pi 4 (4GB) Cluster
    • Linux
      • zsh config
      • Users and Groups
    • Python
      • AWS
        • Lambda
      • Random Strings
    • Security News
    • Tools
    • Unity SSDLC
    • vscode
      • Cloudformation
    • Windows
      • WSL2
        • Scratchpad
        • Install a GUI (xfce)
        • Creating Additional WSL2 Instances
    • Youtubers
      • youtube-dl snippets
  • Lab
    • Building a Better Workstation
      • Notes / Guide
  • Misc
    • Notes
      • youtube-dl
  • Recipes
Powered by GitBook
On this page

Was this helpful?

  1. Resources
  2. Documentation

Design Document Template

PreviousMOCK Press Release TemplateNextDocker

Last updated 5 years ago

Was this helpful?

Google Link:

As someone who has written a lot of documentation, I can tell you my approach

First, start with a high level summary of what the thing is does, as well as what it is supposed to do. The second part should outline things like the problem it’s solving, the challenges faced, the assumptions made. This way the reader can understand the why better

I then go through the major components at a high level - here I used an relational data as because xyz requirement, here I used a firewall with xyz ports open because requirements, I used xyz for DNS, etc

Then tackle lower level stuff - database designs, throughout requirement, record sizes, service discovery, failover strategies

Then a config section where I document any touchy or special configs that are relevant

Then a section on operations - what are some common operations tasks this thing may need, or things the oncall folks may need (how to stop/start. Where logs are, how to access things, how to scale, what the limits are of the system), any caveats or ugliness that exists, where the code is, how to deploy with teraform etc

Finally, I include some test results that are relevant - how many writes you can do, how fast we reconverge on failover, how many things per unit we can do with the design

I have a template I’ve built up over the years that I use - I just open it up and start filling in sections, removing irrelevant parts. But the overall idea is to start very high level and drill down into the parts that most need describing. Don’t go into detail on common elements or well understood tech, just the stuff that the intended audience would need, but always with an eye to “what details will we all forget in 3 years when we have to fix this thing”

And always lots of pictures/diagrams

update - link to a re-created template as a Google doc:

https://docs.google.com/document/d/13_F8_nAIrYj3c_L9LVTMS7pZrP66O1fUAvRfonAE9Gk/edit?usp=sharing
https://docs.google.com/document/d/13_F8_nAIrYj3c_L9LVTMS7pZrP66O1fUAvRfonAE9Gk/edit?usp=sharing