Projektprinciper - Golf - Juniortävlingar
Detta dokument beskriver de övergripande principer som ska styra utveckling, drift och förvaltning av Golf - Juniortävlingar.
1. Produkten ska vara självdokumenterande
All central information om systemets arkitektur, drift, releaseprocess, teststrategi och utvecklingsmodell ska finnas i systemets egen dokumentationsportal.
Ingen ska behöva läsa gamla chattar för att förstå systemet.
2. En enda källa till sanningen
Systeminformation ska inte dupliceras i flera filer eller hårdkodas i HTML, Python eller dokumentation.
Exempel:
- Versionsinformation ska komma från
VERSIONoch Git. - Källkod ska komma från Git.
- Driftmiljö ska beskrivas av lokal konfiguration och miljövariabler.
- Data ska ligga i datakatalogerna, inte i Git.
3. Dokumentation är en del av leveransen
En funktion är inte färdig förrän relevant dokumentation är uppdaterad.
Det gäller exempelvis:
- systemdokumentation,
- driftinstruktioner,
- release notes,
- roadmap,
- arkitekturbeslut,
- användarhjälp.
4. Test är en del av leveransen
En funktion är inte färdig förrän den är testbar och har relevanta tester.
När automatiserad CI/CD är införd ska en funktion inte anses färdig förrän CI-pipelinen är grön.
5. Git är sanningen för källkod
Alla ändringar ska gå via Git.
Inga experiment ska göras direkt i produktion.
6. Data och kod ska hållas isär
Data ligger utanför Git och utanför releasepaket.
Det gäller exempelvis:
- uppladdade filer,
- rankingcache,
- SQLite-databas,
- loggar,
- temporära filer.
7. Releaser ska vara reproducerbara
En release ska kunna återskapas från Git, versionsnummer och releasepaket.
Releasepaket ska innehålla:
- version,
- manifest,
- release notes,
- installationsscript,
- rollbackscript,
- dokumentation,
- checksumma.
8. Test och produktion ska använda samma artefakt
Det som verifieras i test ska vara samma kod och samma Docker-image som senare används i produktion.
Miljöskillnader ska styras via konfiguration, inte genom olika kod.
9. Designbeslut ska dokumenteras
Viktiga tekniska beslut ska dokumenteras som ADR:er.
Då går det i efterhand att förstå inte bara hur systemet fungerar, utan också varför det byggdes på ett visst sätt.
10. Automatisera återkommande moment
Moment som görs mer än en gång bör automatiseras.
Exempel:
- bygga releasepaket,
- deploy till test,
- deploy till prod,
- kontrollera syntax,
- köra tester,
- skapa checksumma,
- generera systeminformation.