convention over configuration - wrocław symfony group #3 22.01.2015
TRANSCRIPT
Convention Over
Configuration
Grzegorz Murdzek Twitter: @grxmrx
WebDNA.io narzędzie SEO do klasyfikacji linków
machine learning
Polski Portal Amigowy PPA.pl Polskie Pismo Amigowe
komputery Amiga, systemy AmigaOS i MorphOS
Zasady
• minimum konfiguracji w fazie początkowej
• maksimum domyślnych reguł, nazw i skrótów
Konfiguracja w warstwach problemów
• edytor programisty, IDE (Netbeans, PhpStorm, Eclipse, Vim)
• kontrola wersji aplikacji i spójność
• instalacja interpretera i niezbędnych modułów
• środowisko lokalne lub hybrydowe
Środowiska do konfiguracji
productionlocal staging
• brak danych (baza) i plików do uruchomienia - „fikstury” to nie wszystko*
• dostępność pod wieloma lub jednym adresem
• deploy i testy
* AliceFixturesBundle i Faker ułatwią generowanie testowych danych
Symfony 2• narzędzie app/console
• katalog app/config i generowanie pliku parameters.yml
• domyślne ścieżki np. do szablonów (adnotacja @Template)
Bundles jak sobie ułatwić aby nie utrudnić
HWIOAuthBundle • popularność wg packagist.org (ponad 350 tysięcy instalacji)
• duża liczba obsługiwanych serwisów
• nadmiar konfiguracji i komplikacji
• zamiennik - thephpleague/oauth2-client
LswMemcacheBundle• wymagana starsza wersja (niż np. dla Ubuntu 14.04) rozszerzenia
php5-memcached
Bundles jak sobie ułatwić aby nie utrudnić
KnpPaginatorBundle• stronicowanie nie współdziała w pełni z Doctrine2 (zależy od wersji)
Kunstmaan CMS• mnogość zależności
Kontrola wersji i spójność
Composer problemy wydajnościowe
• powolny, pochłania dużo zasobów (CPU, RAM)
• próby przyspieszenia przez wyłączenie Garbage Collectora
• dlaczego w PHP a nie w C?
• HHVM?
Composer możliwe rozwiązania
• Composer as a Service
• mocny sprzęt, dużo RAMu
• Composer cache lub proxy (deploy)
Vagrant problemy wydajnościowe z VirtualBoxem
• Symfony2 nie jest domyślnie dostosowane do pracy w środowisku VM
• wiele operacji I/O zabija prędkość działania aplikacji
Vagrant problemy wydajnościowe z VirtualBoxem
• współdzielenie plików nie jest szybkie ani przenośne
• brak domyślnie zainstalowanego GuestAdditions
Vagrant rozwiązania dla Virtualboxa
• gotowe, domyślne, przykładowe środowisko github.com/kleiram/vagrant-symfony
• konfiguracja współdzielenia plików po NFS, Rsync lub NFS+Rsync znacząco poprawia wydajność
Vagrant rozwiązania dla Virtualboxa
• Problem: zapis logów zabijający wydajność • Rozwiązanie:
do app/AppKernel.php dodajemy:
public function getCacheDir() { return '/tmp/symfony/cache/'. $this->environment; }
public function getLogDir() { return '/tmp/symfony/log/'. $this->environment; }
Vagrant rozwiązania dla Virtualboxa
• Problem: brak widocznych zmian po zapisie
• Rozwiązanie: config.vm.synced_folder "../webdna", "/var/www/webdna", id: "application", :nfs => true, :mount_options => ['nolock,vers=3,udp,noatime,actimeo=1']
niektóre wskazówki są również zawarte na stronie: http://www.whitewashing.de/2013/08/19/speedup_symfony2_on_vagrant_boxes.html
Więcej w temacie• Benchmarki porównujące wydajność współdzielenia
plików na maszynach wirtualnych http://mitchellh.com/comparing-filesystem-performance-in-virtual-machines
• Jeszcze Sprytniejsze Środowisko Deweloperskie - Marcin Dryka - PHPers Silesia 02.2014 https://www.youtube.com/watch?v=5EPoiuJrIoI
• Vagrant & Puppet - PHP Dev Envs the Right Way - Szymon Skórczyński - PHPers Trójmiasto 03.2014 https://www.youtube.com/watch?v=CFs6BFfYTCs
• Docker - Cocoders - PHPers Warszawa 01.2015
Polecane książki