Infrastructure and Deployment: Problem and Goals
What is the problem?
- Need Fast Deployment process
- Need all environments to be as close to live as possible.
- Goal is to be able to go live on a push and automate all dev->qa->live with a single button press
- Need to be able continually evaluate and change live deployment configuration.
- Needs to have a controlled monthly cost.
- Need good logging for evidence based deployment decisions.
- When all goes wrong need to be able to revert to earlier version ASAP.
Pie In Sky Goals
- 5 minutes to deploy (This is in addition to building / cooking assets etc.).
- If whole process starts to take more than 10 minutes then it seriously effects iteration speed.
- When something breaks the ideal is to have a pipeline that allows fixing it and deploying rather rather than spend time scrambling to recover and then fixing it.
- Blue - Green deployments.
- Cost is a real issue, building up in a way that greatly limits cost initially, expands organically.
- This will mean being v clear about redundancy vs resiliency.
- Focus on discovering requirements on one machine, diminishing returns with load.
- Dev and QA environments basically being the same as live.
- Clarity surrounding resources available for redundancy and simply redundant resources.
Initial thoughts:
- Windows is both expensive and due to image sizes slow to deploy.
- This makes .net a less than ideal choice (core and standard libraries volatile - been burnt by mono in the past and about to be superseded by core)
- Using framework choices that are both efficient, license minimal seems v prudent.
- This has led me straight into thinking about language choices and CI options - which is exactly what i wanted to avoid any decisions on.
kubernetes
services seem to give me what I want. More to come