Produit fictif pour l'audit Produit fictif pour jouer avec l'outil d'audit
Prod - Dev actif Métier Monolithe
Languages: Typescript
Dépendances: PostgreSQL Redis
Hébergement: Scalingo
Frontend: NextJS
Backend: NestJS
Authentification: ProConnect
Outils mutualisés de l'incubateurSélectionnez les outils de l'incubateur utilisés dans le contexte de ce produit Brevo Scalingo Sentry Gitlab Vaulwarden / Coffre Scaleway Transactional Emails
Sélectionner... Chargement...
Outils non mutualisésSélectionnez les autres outils utilisés dans le contexte de ce produit LlamaParse Anthropic CodeQL Crisp
Sélectionner... Chargement...
Si vous constatez des erreurs dans ces informations, merci de nous les remonter.
Audit technique du produit Produit fictif pour l'audit Comité d'investissement prévu pour le 14/09/2024
Ce questionnaire vise à recueillir des informations techniques sur le produit. Une réponse positive (Oui) est généralement attendue, mais une réponse négative (Non) peut être tout à fait appropriée en fonction du contexte. Dans ce cas, merci de préciser les raisons dans les commentaires.
Important : Le formulaire ne prend pas encore en charge l'édition simultanée. Si plusieurs personnes travaillent dessus en même temps, cela risque d'écraser les réponses des autres.
Merci pour votre contribution.
Infra Opération DB Archi A11y OSS Dev XP Produit Sécu Intra Bizdev L'application est-elle déployée chez un hébergeur souverain ?Entreprise et serveurs en Union Européenne
https://www.numerique.gouv.fr/services/cloud/doctrine/
https://www.numerique.gouv.fr/services/cloud/regles-doctrine/#contenu
Précédemment : Ne sais pas
L'infrastructure de votre application est-elle scalable facilement, même manuellement ?
Précédemment : Non (50%) - azdazd
Est-ce que l'application peut faire face à une montée en charge grâce à l'autoscaling ?
Précédemment : Ne sais pas - azdazd
L'application est-elle déployée en haute disponibilité ?Cela implique d'avoir plusieurs instances pouvant répondre aux requêtes avec un load balancer. Ainsi, en cas de crash d'une instance les requêtes peuvent toujours être servies aux autres instances.
Les bases de données sont-elles déployées en haute disponibilité ?Redondance avec master/slave
Votre infrastructure est-elle gérée "As Code" ?L'Infrastructure as Code (IaC) vous permet de documenter les changements d'infra et de remonter vos applications suite à un désastre. Par exemple Terraform ou son équivalent open source "OpenTOFU"
Votre application a-t-elle un nom de domaine en .gouv.fr ?
Monitorez-vous votre infrastructure ? Si oui, avec quels outils ?Par exemple avec des outils type Grafana, Newrelic, datadog
Pour le monitoring de votre application, utilisez-vous l'instance Sentry proposée par l'Incubateur des territoires ?Sur https://sentry.incubateur.anct.gouv.fr . Si c'est https://sentry.incubateur.net il s'agit du Sentry de la DINUM.
Recevez-vous une alerte en cas de downtime sur le produit ?par ex: updown.io (proposé par l'Incubateur)
Recevez-vous une alerte en cas d'anomalie sur le produit ?Site très lent (alertes Grafana ou autre), utilisation serveurs anormale (disques durs, RAM, CPU), erreurs applicatives (alertes Sentry), etc...
Un système de log centralisé est-il en place (ELK / etc…) ? Si oui quel outil ?
Monitorez-vous les requetes lentes de votre base de données ?
Publiez-vous un postmortem après un incident de production ? Quel public y a accès ?
Votre service utilise-t-il un CDN (Réseau de Diffusion de Contenus) ?https://fr.wikipedia.org/wiki/R%C3%A9seau_de_diffusion_de_contenu
Un outil de mesure de statistiques web type Matomo est-il en place ?
Une procédure de backup et restore de la base de donnée est-elle en place ?
Votre base de données est-elle infogérée (managée) ?Managée complètement par votre PaaS
Les données sont-elles chiffrées au repos (at rest) ?Cela a pour but d'empêcher l'utilisation des données dans le cas d'une intrusion par exemple.
La base de données a-t-elle un schéma homogène (Casse, Langue, ...) ?https://fr.wikipedia.org/wiki/Sensibilit%C3%A9_%C3%A0_la_casse
Votre base de données comporte-t-elle des contraintes d'intégrité ?Contraintes de clé primaire, clé étrangère, d'unicité, etc...
Avez-vous un processus de migration de schéma automatisé ?Fourni par exemple par Prisma, Doctrine, ...
Utilisez vous un outil de visualisation des données de type metabase ?Par exemple pour exposer vos indicateurs. Si oui, précisez l'outil
Y-a-t-il un readme permettant de contribuer au projet de manière autonome ?Faire tourner le projet en local, pratiques de contribution, ...
Existe t-il un document de traitement des données (politique de confidentialité) ?Si oui, mettre le lien en commentaire
https://rdv.anct.gouv.fr/politique_de_confidentialite
Existe t-il un DAT (Dossier d'Architecture Technique) ? (si oui, merci de mettre le lien en commentaire)https://gitlab.com/groups/incubateur-territoires/startups/infrastructures-numeriques/-/wikis/Dossier-d'architecture-technique
https://github.com/betagouv/rdv-service-public/blob/production/docs/architecture-technique.md
Le DAT contient-il un diagramme du schéma de base de donnée ?
Le DAT liste-t-il tous vos outils (logs, monitoring, ...) ?
Un Single Sign-On (SSO) est-il implémenté pour vos utilisateurs ?ProConnect / AgentConnect / MonComptePro
Existe-t-il une séparation claire entre la couche métier et la couche de présentation ?
Votre équipe adhère-t-elle à un pattern d'organisation de code prédéfini et documenté ?Proposé par votre framework ou MVC / DDD / Autre
Appliquez-vous des pratiques d’éco-conception ? Saisissez en commentaire le score obtenu sur le site https://www.ecoindex.fr/
Documentez-vous vos décisions d'architecture ?
Si oui merci de mettre le lien en commentairehttps://blog.octo.com/architecture-decision-record
https://github.com/joelparkerhenderson/architecture-decision-record
https://en.wikipedia.org/wiki/Architectural_decision#cite_note-15
https://github.com/betagouv/rdv-service-public/tree/production/docs/decisions
Vos containers applicatif sont-ils stateless ?Stocker des données localement peut rendre la gestion opérationnelle plus complexe et risquée, notamment lors du passage à l'échelle. Il est préférable d'utiliser un autre service (base de données, stockage objet...) pour persister de la donnée.
Utilisez-vous un ORM ?ORM : Outil qui traduit les données entre la base de données et les objets du code.
Ex : Hibernate, SQLAlchemy, Entity Framework.
Appliquez-vous les principes de KISS ou YAGNI dans le développement de ce produit ?https://fr.wikipedia.org/wiki/Principe_KISS
https://fr.wikipedia.org/wiki/YAGNI
Appliquez-vous les principes de SOLID dans le développement de ce produit ?https://fr.wikipedia.org/wiki/SOLID_(informatique)
Appliquez-vous les principes de 12Factor dans le développement de ce produit ?https://12factor.net/fr/
Votre produit inclut-il une déclaration d'accessibilité ?si oui, donnez le lien en commentaire
Avez-vous fait un audit "Ten easy checks" ?
Par exemple avec https://design.numerique.gouv.fr/outils/diagnostic-flash/
ou en atelier avec beta
Existe t-il des tests de performances côté client (lighthouse) ?
Le code est-il sur un repo public (GitHub/GitLab) ?
Avez-vous un fichier de licence dans le repository ?Aide au choix de la license : https://licence-libre.incubateur.anct.gouv.fr/
Existe t-il un fichier de contribution ? https://contributing.md/
https://gitlab.com/incubateur-territoires/startups/espace-sur-demande/application/-/blob/develop/CONTRIBUTING.md
Les données du produit sont-elles disponibles sur data.gouv.fr ?
L'API du projet est-elle publique ?Même si certains endpoint sont protégés par un système d'authentification
Votre API est-elle documentée publiquement ?Swagger, OpenAPI, etc...
Un fichier publiccode.yml est-il présent dans votre repository ?Au sein de l'incubateur nous portons les valeurs du code public, ce document permet une meilleur découvrabilité de votre projet public.
https://yml.publiccode.tools/
Contrôlez-vous automatiquement que vos dépendances (librairies) sont à jour ?Par exemple avec Dependabot
Secure > security configuration (GitLab)
Votre stack technique (langages, runtimes, bases de données, infrastructure) est-elle à jour ?Secure > security configuration (GitLab)
Avez-vous un outil d'analyse statique du code en place ?Complexité cyclomatique, ...
Par exemple SonarQube ou GitLab Code Quality
Exécutez-vous systématiquement les tests automatisés pour chaque Pull Request ?
Le code est-il parcouru à 80% par les tests automatisés (code coverage) ?
L'acceptation de nouveau code dans la branche principale passe-t-elle par des pull requests ?
Les pull requests sont-elles auditées par un autre développeur que l’auteur ?
Les branches principales sont-elles protégées d’un commit direct ?
Un pipeline d’intégration continue est-il en place ?
Toute l'équipe travaille-t-elle sur un backlog commun dans le meme outil ? Par exemple un board Trello ou des issues GitLab
Un standard de formatage de code et un linter sont-il en place ?
En moyenne, un bug simple est-il corrigé et déployé en moins d'une heure ?
Un nouveau développeur arrivant sur le projet livre-t-il en production lors de son premier jour ?Cette question vise à évaluer la simplicité du processus d'onboarding, pas la complexité de la contribution. On peut imaginer que le déploiement ne concerne qu'une correction de faute de frappe par exemple.
Peut-on faire tourner le produit en local en 15 minutes ?
Votre application est-elle en mono-repo ?On ne promeut pas forcément le mono-repo, on cherche avoir la vision globale sur votre produit.
Les PM / PO / Stakeholders testent-ils les développements sur un environnement de test similaire à la prod ?Ces environnements sont parfois appelés feature apps ou review apps.
Avez-vous un setup pour déployer automatiquement des features branch?des environnements ephemères pour chaque PR
La CI / CD tourne-t-elle sur les PRs en moins de 15 minutes ?
Les améliorations techniques sont-elles faciles à prioriser face aux nouvelles fonctionnalités ?Le travail de développement nécessite de travailler parfois sur des fonctionnalités du produit et d'autres fois de travailler à des sujets purements techniques qui n'apportent pas de nouvelles fonctionnalités.
Ces sujets techniques peuvent cependant parfois être critiques pour la fiabilité et la qualité de l'application. Dans ces cas, il est important de pouvoir les prioriser correctement par rapport aux nouvelles fonctionnalités.
À votre avis, est-ce que la communication avec les PM permet de correctement prioriser ces sujets ?
Appliquez-vous un standard de nommage de commits, type conventional commit ?https://www.conventionalcommits.org/fr/v1.0.0/
Ressentez-vous un climat de confiance qui permet de partager ouvertement les difficultés et les succès durant les retros ?
Votre équipe a-t-elle défini et documenté des critères clairs pour considérer qu'une tâche est "prête à être développée" (Definition of Ready) ?
Votre équipe utilise-t-elle une Definition of Done (DoD) explicite et partagée par tous les membres pour valider qu'une fonctionnalité est terminée ?
L’équipe trouve-t-elle que les rétrospectives contribuent réellement à l’amélioration du travail au quotidien ?
Disposez-vous d'un glossaire expliquant le vocabulaire métier ?
Vos utilisateurs ont-il accès à un changelog pour votre projet ?https://keepachangelog.com/fr/1.1.0/
Adoptez-vous une approche guidée par l'impact pour introduire vos nouvelles fonctionnalités ?Par exemple : Commencer avec la version la plus minimale de la fonctionnalité, mesurer son impact. Décider si il faut continuer ou pas à investir sur cette fonctionnalitée.
Utilisez-vous des frameworks pour la conception produit ?Par exemple Shape Up, dual-track agile, lean UX, etc...
Avez-vous essayé la méthode de calibrage par cohortes pour comparer des groupes avec et sans votre produit ?https://doc.incubateur.net/communaute/solliciter-et-contribuer-a-la-communaute/je-sollicite-de-laide-transverse/cauchemar-a-beta-la-mesure-dimpact
Faites-vous de la recherche utilisateur ?https://designgouv.notion.site/La-recherche-utilisateur-27f77d6e829a4187817be6f91398a78e
Disposez-vous d'une cartographie des parcours utilisateurs (user journey) à jour ?
Organisez-vous des rétrospectives au moins une fois tous les deux mois ?
Les rétrospectives aboutissent-elles systématiquement à des actions concrètes à mettre en place ?
Avez-vous un facilitateur désigné pour animer la rétro et s’assurer que tout le monde s’exprime ?
Utilisez-vous les chiffrement pour les données en transit ?Par exemple utilisation de HTTPS entre le client et le serveur, ou TLS entre le serveur et la base de données.
Avez-vous en place une détection des secrets dans le code exécuté sur la CI ?Par exemple détection GitLab / GitHub / SonarQube
https://docs.gitlab.com/ee/user/application_security/secret_detection/
https://gitleaks.io/
Est-ce qu'un outil de detection des fuites de secret est mis en place dans un pre-commit ?Pour détecter par exemple si quelqu'un push le .env avec des secrets de production
https://docs.gitlab.com/ee/user/application_security/secret_detection/
https://docs.gitlab.com/ee/user/application_security/secret_detection/secret_push_protection/
Utilisez-vous des MFAs (https://fr.wikipedia.org/wiki/Double_authentification) pour accéder aux interfaces d'administration de vos outils et infras ?Ex. :
- dépôt de code (GitLab, GitHub...)
- accès à l'interface d'administration de l'hébergeur
- sentry
- grafana
- plus généralement, tous les outils qui concourent au bon fonctionnement du service...
Utilisez vous des commits signés ?https://docs.gitlab.com/ee/user/project/repository/signed_commits/
https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits
Ce produit a t-il reçu une homologations de sécurité (RGS) ?
Ce produit dispose t-il d'un dossier sur le service MonServiceSécurisé suivi par le responsable sécurité de l'incubateur ?
Disposez-vous d'une politique de sécurité ?https://fr.wikipedia.org/wiki/Politique_de_s%C3%A9curit%C3%A9_du_syst%C3%A8me_d%27information
Disposez-vous d'une procédure de réponse aux incidents de sécurité ?
Utilisez-vous un gestionnaire de mots de passe pour la génération, le stockage et le partage de secrets au sein de la startup ?https://www.notion.so/incubateurdesterritoires/La-boite-outils-tech-41e41e42094e4a85b876520a03cb044c?pvs=4#616778a9ecac45faa06373845ae2dbdb
Tous les membres de l'équipe utilisent-ils un gestionnaire de mot de passe pour leurs accès nominatifs aux outils de dev et d'infra ?Par exemple le compte de l'hébergeur, le compte GitLab ou GitHub...
https://www.notion.so/incubateurdesterritoires/La-boite-outils-tech-41e41e42094e4a85b876520a03cb044c?pvs=4#616778a9ecac45faa06373845ae2dbdb
Tous les mots de passes utilisés sont-ils uniques et générés aléatoirement ?(via un gestionnaire de mots de passe par exemple)
Un lien security.txt est-il mis en place sur votre service ?https://securitytxt.org/
Votre produit est-il protégé par un service anti-DDoS (déni de service distribué) ?https://cyber.gouv.fr/publications/denis-de-service-distribues-ddos
Votre metabase a-t-il accès à des données personnelles sur votre base de données ?Des solutions existent, par exemple PGAnonymizer
https://www.notion.so/incubateurdesterritoires/Metabase-on-scalingo-119744bf03dd8006a55ccaffd62a26af
Votre metabase utilise-t-il un utilisateur dédié avec des permissions en lecture seule pour accéder à la base de données ?
Publiez-vous le budget de votre startup ?
La fiche beta.gouv.fr de la startup est-elle à jour (membres, repo, stats, budget, ...) ?
Les indicateurs de votre produit dans Dashlord sont-ils au minimum à la note E et exempts de tout avertissement (warning) ?https://dashlord.incubateur.anct.gouv.fr/
Y a t-il dans votre équipe des notes de frais pour l'outillage ?précisez en commentaire les produits concernés
Votre produit a-t-il fait l'objet d'un Atelier impact ?https://doc.incubateur.net/communaute/solliciter-et-contribuer-a-la-communaute/je-sollicite-de-laide-transverse/cauchemar-a-beta-la-mesure-dimpact
Avez-vous défini et collecté des métriques d'impact ?https://doc.incubateur.net/communaute/gerer-son-produit/la-vie-du-produit/investigation/definir-et-mesurer-limpact
Une page stats est-elle en place pour visualiser vos métriques d'impact ?
Est-ce que la page stats est régulièrement consultée par votre équipe et vos sponsors ?
Prenez-vous le temps de remettre en question régulièrement vos métriques d'impact ?
Avez-vous intégré une boucle de feedback à votre produit ?Si oui, précisez comment est collecté le feedback utilisateur.
Par exemple https://jedonnemonavis.numerique.gouv.fr/
Evaluez-vous régulièrement l'utilité perçue de votre service ?Par exemple avec le Net Promoter Score (nécessite un minimum de ~100 / 200 réponses pour être statistiquement pertinent)
Disposez-vous d'une stratégie de déploiement territorial documentée ?
Mesurez-vous le coût d'acquisition de nouveaux utilisateurs ou territoires ?
Avez-vous calculé le retour sur investissement (ROI) pour les collectivités qui adoptent votre solution ?
Avez-vous un plan de communication ou marketing pour promouvoir votre solution ?
Avez-vous un suivi des taux de conversion à chaque étape du parcours d'adoption (découverte, essai, adoption régulière) ?
Collaborez-vous ou avez-vous tenté de collaborer avec d'autres startups d'État ou services publics numériques pour créer des synergies ?
Avez-vous documenté votre proposition de valeur afin d'aligner l'équipe autour de celle-ci ?
Votre produit est-il référencé sur le comptoir du libre de l'addulact ?https://comptoir-du-libre.org/fr/softwares
Process pour référencer votre produit : https://docs.numerique.gouv.fr/docs/a39920d1-ab80-4b94-b237-f066e35e251e/