# Design Document: Template

_This template should support you writing design documents. Treat this as a guide and not as a hard rule. If the suggested headlines don’t match your design content, fill them with “Not applicable” or add respective chapters._

# High-level Overview

| **Change in 1 or 2 sentence\*\***s\*\*   | _too long; didn't read of you\*\*r_ _change._<br>*E.g. “*We want to rebuild the Kafka cluster setup in Google Cloud in order to improve the general reliability and time-to-restore in case of an outage._”_ <br>*or “*Project Firestorm is a REST API that acts as a middleware, processing newsletter subscription requests from Price Search (and, in future, Leeloo) to Salesforce, in order to centralize subscriber management at Salesforce and encapsulate Salesforce. Project Firestorm will replace the current REST API Project Herald.” |
| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Change size**                          | _How big is your change in impact, effort or complexity?_<br>_Options_ _could be “small”, “medium” or “large”._                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Affected applications**                | _List the applications you know that are affected by this design/change._<br>_E.g. “Workday”, “HS Gateway” or “All applications that run on tCS”_                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Affected Teams**                       | _List all teams you know that are affected by this design/change._<br>_E.g. “HS Interface”, “Data Engineering” or “All people On-Call”_                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Owner**                                | _Person responsible for organization and potentially the final decision maker._                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Participants** **driving this change** | _Name(s) of the person who are driving this change. This could also be a list of people\*\*._ **\*I**n this ca**s**e, highlight the main driver.\*                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Observers**                            | _Parties interested in observing the process but who won’t be actively participating._                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

# Summary

_Describe the current status, the challenge and what the perfect outcome should look like._

Useful to mention:

- Motivation - what is the problem you are looking to solve.
  - _What is the problem right now?_
  - _Why are we doing this?_
  - _What do we want to achieve?_
- Summarize and/or link to use-cases where applicable.

# Proposed solution

_Pro-tip: Design for realistic present\*\*-_ _and future use**-**cases, and_ _don’t_ _over-optimize for edge cases or unlikely_ _scenarios\*\*._

## Key Considerations

- _Important points to consider when taking a decision._

## Architecture Overview

- _Describe the architecture before (current status) and after the change._
- _Start with diagrams (when applicable) and a concise summary, ideally in bullet form, to make it easy for others to follow and understand\*\*._
- _Focus on the design proposal, not the detailed solution nor the coding level._ _\*\*Don't document the exact solution, i.e. at the code level._

_One or multiple diagrams are helpful for this section._

_Useful to mention:_

- _dependencies on other systems and how they may be impacted_

## Potential risks/drawbacks

_N\*\*ote potential risks and/or drawbacks of the proposed solution_

# Alternatives considered

_Describe various alternatives you have considered during your thought process._
_Add reasoning why you discarded those, also._

# Timeline

_High-level timeline for the design, in terms of key milestones and an estimate of effort in weeks for each._

# Outcome

_What was the final outcome in terms of decision taken and why was it determined to be the optimal solution?_

# Impact

_What is the resulting impact of the decision taken?_

# Appendix

_Add everything you think is useful in context of this change / design document._
_This could be_

- _Meeting notes_
- _Links to external resources like blog posts, talks, entries in forums, etc._
- _more detailed information that are not 100% required to understand the design proposal, but are helpful if the reader want to get more in-depth information_
- _Everything that you think don’t fit into the main document_
