Checklist: Audit projektu

Abychom mohli držet co nejvyšší možnou kvalitu našich projektů, vytvořili jsme tento checklist, který zajistí, že se projekt nepotýká s nějakým zapomenutým nedostatkem, jako například chybějící části dokumentace, nebo bezpečností nedostatky.

Checklist je součástí každé wiki dokumentace a všichni členové týmu do něj můžou průběžně nahlížet a aktualizovat ho. Samozřejmě každý projekt je specifický a ne každá položka na checklistu musí být relevantní pro všechny projekty, ale to už je na týmu, aby tak rozhodl.

Obecně se checklist bude aktualizovat s každým odevzdaným taskem, stejně tak jako udržujeme dokumentaci. Čili když odevzdám task, tak zkontroluji, jestli je potřeba doplnit dokumentaci/checklist, pokud ano, tak doplním/”zaškrtnu”. Při intenzivnějších fázích vývoje (např. na začátku projektu) se checklist bude kontrolovat pravidelně, např. na konci každého sprintu.

Udržováním tohoto checklistu dle stavu projektu se zajistí, že tým má přehled o tom, které nedostatky ještě projekt má a může pomoct k lepšímu plánování vývoje. Za ideální stav se tedy dá považovat, že před dokončením vývoje je celý checklist zelený  , případně označené nerelevantní položky s odůvodněním v poznámce.

 

Definice hodnocení

✅ – ano
⛔ – ne
😶 – není relevantní

 

Checklist

Kategorie

Hodnocení

Architektura

Existuje aktuální high level diagram, který popisuje interní a externí komponenty systému? interní (vyvíjené TF) – backend, frontend, cloud functions, …,  externí (vyvíjené externími týmy) – 3rd party služby, cloud services, …

 

Je architektura v souladu s aktuálními softwarovými požadavky?

 

Je architektura v souladu se softwarovými požadavky za 3-5 roky podle roadmapy?

 

Jsou všechny softwarové komponenty zdokumentované?

 

Bezpečnost

Jsou aplikační nastavení (secrets) bezpečně uložené v bezpečném úložišti (key vault)?

 

Je zakázané přistupovat k produkční databázi z Internetu?

 

Je zajištěné použití HTTPS a TLS?

 

Má backendová aplikace správně nastavené CORS (domain whitelist)?

 

Jsou autentizační mechanismy nastavené na vhodnou délku platnosti (jwt expiration time)?

 

Dokumentace

Má projekt wiki dokumentaci v souladu se vzorovou dokumentací? (případně odůvodněno proč ne)

 

Jsou v dokumentaci odkazy na všechny externí zdroje? (Figma designy, roadmapy, mindmapy, …)

 

Má projekt definované podporované prohlížeče? (.browserslistrc)

 

Je ve wiki dostatečně popsáno, jaké sw a hw požadavky aplikace má?

 

Je ve wiki dostatečně popsáno, jak spustit lokální dev prostředí?

 

Je v repozitáři nahrán vzorový .env soubor? (.env, appsettings.json)

 

Jsou v .gitignore zahrnuty nerelevantní soubory (produkční konfigurační soubory, temp soubory)?

 

Jsou zdokumentované všechny technické dluhy? Zapisují se pravidelně? Je definován jejich dopad a náročnost na opravu?

 

Licence

Má projekt správně nastavenou licenci?

 

Jsou všechny balíčky zkontrolovány, zde jsou použité v souladu s jejich licencí? (GitHub - TechFides/tf-licence-checker)

 

Verzování, CI/CD a kvalita kódu

Jsou v kódu vyřešeny všechny TODO komentáře?

 

Je kód vyčištěn od nerelevantních komentářů?

 

Má projekt nastavené CI/CD, které zahrnuje spuštění lintu, testů a deploymentu?

 

Reportuje pipeline selhání do emailu/slacku?

 

Je kontrola licencí zahrnuta v pipelině?

 

Je npm audit zahrnut v pipelině?

 

Jsou všechny známé “nedodělky” zanesené do backlogu?

 

Závislosti

Jsou zkontrolované závislosti (dependencies) pro možné zranitelnosti? (npm audit, dependency tracker, …)

 

Jsou všechny definované závislosti (package.json, NuGet) použité/nutné?

 

Jsou všechny balíčky aktualizované a nastaven proces pravidelné aktualizace?

 

Jsou všechny assety (fonty, ext. styly, …) stahované ze serveru projektu? (bez "free" CDN, GoogleFont, …)

 

Automatizované testy

Má projekt nastavené a definované unit testy?

 

Má projekt nastavené a definované integration testy?

 

Má projekt nastavené a definované e2e testy?

 

Existují odhady (nebo požadavky) na zátěž v delším časovém horizontu? Je aplikace na tuto zátěž testovaná? (performance testy)

 

Spouští se testy v pipelině?

 

Je nastavené code coverage reportování?

 

Jsou v .gitignore zahrnuty složky/soubory s výsledky testů?

 

Konvence

Má projekt definované konvence pomocí nástrojů jako ESList, Prettier, StyleLint, EditorConfig

 

Má projekt v repozitáři nahrané config soubory všech nástrojů pro dodržování konvencí?

 

Dodržuje všechen kód projektu definované konvence a je psán jednotným stylem?

 

Instance

Existuje TEST prostředí s automatickým nasazováním změn?

 

Existuje STAGING prostředí, které datově odpovídá produkci?

 

Existuje DEV prostředí s dokumentací jak ho lokálně spustit?

 

Monitoring

Má backendová část aplikace zprovozněný monitoring, který notifikuje při problémech?

 

Má frontendová část aplikace zprovozněný monitoring, který notifikuje při problémech?

 

Má infrastruktura využívaná aplikací nastavený monitoring a reportování problémů? (CPU & RAM usage, …)

 

Má aplikace nastavené logování? Je možné zpětně dohledat logy (nejen) chyb?

 

Pokud aplikace využívá cloud služby, má nastavený billing limit a notifikace?

 

Má infrastruktura IaaC kód, který je konzistentní s nasazenou infrastrukturou?

 
 

Zaujal Tě náš tým?

Rádi se s Tebou osobně a nezávazně setkáme, napiš nám – pošli nám, co umíš a co bys rád/a u nás dělal/a na email chcidotymu@techfides.cz

Další info o tom, proč je TechFides místo šité vývojářům na míru, se dočteš v našem článku proč do TF. Nebo se rovnou podívej na otevřené pozice a napiš nám, rádi Tě poznáme. Přečti si také, jak probíhá výběr našich nových členů týmu a jak probíhá onboarding.