Golf - Juniortävlingar

Dokumentationsportal

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 VERSION och 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.