In this project we capture important decisions with architectural decision records.
These records provide context, trade-offs, and reasoning taken at our community & technical cross-roads. Our goal is to preserve the understanding of how the project has grown, and capture enough insight to effectively revisit previous decisions.
Get started created a new decision record with the template:
cp template.md NN-title-with-dashes.md
Conway's Law posits that software design is a function of organizational design. Emblem was developed by a group of core contributors working on a single team within a large software company (Google), with supporting contributions from members of other teams both internal and external to the company.
While we've done our best to make Emblem applicable to a wide variety of organizational structures, Emblem may require some adaptation to properly account for aspects unique to your organization.
Many decisions build on each other, a driver of iterative change and messiness in software. By laying out the "story arc" of a particular system within the application, we hope future maintainers will be able to identify how to rewind decisions when refactoring the application becomes necessary.
Here are a few story arcs of decisions made in the project.
Step through our decisions that led to hosting on Cloud Run.
We have a hybrid model of terraform for infrastructure, gcloud & continuous delivery for shipping code, and additional decisions on how we handle the necessary automation and orchestration.
- Using Terraform vs. Using gcloud
- Use Cloud Build to manage resources
- Canary Rollouts
- How to Rollback
- Manage Ops resources via a central project
- Automate dependency updates
Getting end-user authentication right was a challenge. The current implementation extends from the write-up in Auth Design. There were several decisions and reversals to reach it.