| Creator | [name] |
| Squad Lead | [name] |
| Jira Link | [url] |
| Technical Architecture | [name] |
| PRD | [url] |
| Developer | [name] |
[ Explain problem statement that currently happened ]
Good problem explanation:
- Explain current situation
- Explain the problem and that why it matters
- Differentiate fact from opinion
- Would be great if you can state the data
[ Explain conditions that you want to achieve ]
Good goals explanation:
- Describe how thins should work
- Explain the impact after the goals have been reached
Example:
- Reduce API calls to X from 3x to 1x
- Decrese cost of redis from $300 to $150
[ Explain conditions that are not included in development scope but considered to be a potential improvement ]
Good non-goals explanation:
- State potential question that related to the development
Example:
- Vendor will be requested to change URL after this IP whitelisting has been done
[ Explain system requirements that need to be addressed ]
Example:
- Expected RPS to handle: XX RPS
- Maximum latency: XX ms
[ Explain changes that need to be done ]
Good solution explanation:
- State any option that you have, 2 alternatives solutions at max with each benefits and drawbacks
- For table/DB design changes, please incorporate SQL that will be executed
- Explain current flow and solution flow
- State flow that you need to change
Example: Option 1
- Create http handler mountian_scoring.go that will accept 1 parameter; mountain_id, token
- Authenticate request
- Validate input
- Call service
- Render response
- Crete service mountain_scoring.go
- Check if mountain_id already exists in database
- No: throw error
- Yes: continue to step b
- ...
- Check if mountain_id already exists in database
- ...
[ Sequence diagram or Flowchart ]
[ Explain impact that potentially exists after development done ]
Example:
- Potential growth of database size usage of mountain-fun to 100GB after several days
- Potential CPU increase on database mountain-fun if someone export data from inhouse dashboard
[ Explain how we can test the feature ]
Example:
- Call API get mountain scoring
- Check scoring result
- Validate with planned formula
[ Explain how we plan deployment ]
- Does this feature has backward compability? Yes/No
- Can we make partial deployment? Yes/No
- Who needs to be notified about this deployment?
- What configuration chages that need to be prepared?
- Is there any DDL or DML needed before deployment?
[ A plan that if your changes goes wrong in production ]
- Notify the cause to slack channel
- [If needed] Toggle of feature flag
- Stop deployment
- Revert / Fix Changes
- [If needed] Prepare a script to fix inserted data
- Metrics
- Business metrics: number of success requests, error rate, etc
- Tech metrics: max latency, avg latency, rps, max rps, etc
- Alerting
- Success rate:
- Warning: < 99%
- Danger: <= 95%
- Missing data / timeout:
- Warning: >= 5 minutes
- Danger: >= 1 hour
- Success rate:
- Technical Architech: [name]
- Technical Leader: [name]
- Peers: [name]
- Peers: [name]
- Peers: [name]
- Peers: [name]