01.06.2021

IT

Symfony - optymalizacja local dev i CI

Nie ma nic gorszego niż długi czas oczekiwania na testy i budowanie środowiska czy to przy lokalnym developmencie, czy też w CI – w naszym przypadku jest to Gitlab.

Oto kilka podstawowych tricków, które pomogą Wam te procesy usprawnić.

  1. Security – hashowanie haseł w środowisku test

    Wykorzystując poniższy trick wszystkie hasła użytkowników nie będą hashowane co w naszym przypadku, przy dużej ilości testów integracyjnych, powoduje przyspieszenie ich wykonania nawet o 30%
    W pliku config/packages/test/security.yaml dodajemy:

    security:
        password_hashers:
            App\Entity\User:
                algorithm: plaintext
    
  2. Konfiguracja opcache

    Nie zapominajmy o odpowiedniej konfiguracji opcache również pod testy i local dev. Dodanie poniższych wpisów do php.ini może przyspieszyć testy o kolejne 10%.

    opcache.enable_cli=1
    opcache.memory_consumption=256
    opcache.max_accelerated_files=20000
  3. Optymalizacja docker-compose dla local dev / CI

    Niektóre serwisy nie są w ogóle wykorzystywane w środowisku dev lub w CI - przykładem może być nginx (CI) lub rabbitmq (messenger ustawiony na async). Usunięcie ich z docker-compose.yml-gitlab-ci przyspieszyło nasze testy o kolejne 20%. Pilnujcie aby setup serwisów pod CI był minimalny.

    Ostatnim trickiem, którym chcemy się z Wami dzisiaj podzielić jest optymalizacja bazy danych (w naszym przypadku mysql). Nie polecamy tego do local dev (każdy reboot stacji roboczej resetuje bazę!), ale w CI baza danych może być trzymana jedynie w pamięci, co znacznie przyspiesza tworzenie schematu, wgrywanie fixtures-ów a czasem nawet same testy. W docker-compose wystarczy dodać:

    mysql:
    image: mysql
    [...]
    tmpfs:
    - /var/lib/mysql
    - /tmp


Życzymy Wam owocnych optymalizacji.

A może podzielicie się efektami Waszych optymalizacji? Zapraszamy do dyskusji poniżej.