Choisir le bon workflow pour la bonne taille d'équipe et le bon process de déploiement :
Légère recommendation : son propre workflow, inspiré de github flow et gitflow
Avantages :
Docker Compose fait concensus
Recommendations :
services: php: build: ./docker/php depends_on: - mysql volumes: - ./app:/srv/jobs:rw,cached - ~/.composer:/.composer # for Composer cache mysql: image: percona restart: always environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-nopassword} - MYSQL_DATABASE=jobs - MYSQL_USER=jobs - MYSQL_PASSWORD=${MYSQL_PASSWORD:-nopassword} volumes: - mysql-data:/var/lib/mysql:rw nginx: build: ./docker/nginx depends_on: - php security_opt: - no-new-privileges:true volumes: - ./app/public:/srv/jobs/public:ro
Bien choisir la version des dépendances que va utiliser le projet.
S'appuyer sur le semver "Semantic Versioning"
X.Y.Z incrémenter la version :
MAJOR version when you make incompatible API changes
MINOR version when you add functionality in a backward compatible manner
PATCH version when you make backward compatible bug & security fixes
Bonne pratiques :
Les Tests doivent être :
Recommendations :
Disclaimer : Il y a beaucoup de types de tests, et peu de consensus. Il vaut mieux s'éloigner du débat pour simplifier à quelque type de tests :
Recommendations :
A éviter absolument :
Recommendations :
Continuous Integration
Bonne pratiques :
Forte recommendation : Gitlab-CI
# .gitlab-ci.yaml stages: - install # removed in this exemple - quality - tests quality:phpstan: image: thecodingmachine/php:8.3-v4-cli-node18 stage: quality script: - php vendor/bin/phpstan analyze -c phpstan.dist.neon quality:security: image: thecodingmachine/php:8.3-v4-cli-node18 stage: quality script: - composer audit - yarn audit quality:cs: stage: quality script: - vendor/bin/php-cs-fixer check src tests:unit: script: - php bin/phpunit --colors=always tests:behat: script: - php bin/console hautelook:fixtures:load -q - php vendor/bin/behat --stop-on-failure
Coding Style :
PHP : php-cs-fixer
Javacsript : ESLint
Security :
PHP : composer audit
Javascript : yarn audit ou npm audit
Qualité :
Database : bin/console doctrine:database:validate
Architecture & Monorepo : deptrac
Recommendations :
# .gitlab-ci.yaml stages: - install - quality - tests variables: GIT_DEPTH: 1
Best practices :
Solution de déploiement :
Légère recommendation : Capistrano
Recommendations :
Forte recommendation : Makefile
## Install environment from scratch install: vendor db-create fixtures ## Install vendir vendor: composer.json composer install ## Create Database db-create: bin/console doctrine:database:create bin/console doctrine:schema:update -f ## Load Fixtures fixtures: bin/console doctrine:fixtures:load -n
Pour adresser ce vaste sujet, un bon moyen de commencer et d'utiliser la checklist de Symfony concernant la performance
Mesurer la performance passe par plusieurs solutions. Du monitoring, aux tests de monté en charge (TMC) en passant par le profiling.
L'équipe de développement doit avoir accès à ces outils. En ce qui concerne la solution de profiling on recommendera un outils dédié comme Blackfire.
Plutot qu'un profiler intégré comme dans : NewRelic, DataDog, Dynatrace, Sentry.
Alternative : Tideways
A l'echelle d'un projet Web et pour l'équipe de développement on peut simplifier en trois type de cache :
Le développeur devrait se concentrer sur la stratégie de cache HTTP, et sur le cache applicatif.
Cache à mettre en place par ordre de priorité :
Vous pouvez ce que vous préférer. Le meilleur IDE c'est celui qu'on maitrise :
Eclipse PDT
Netbeans
As an alternative : SublimeText
PHPStorm est le plus avancé/puissant
Recommendation : PHPStorm