Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

18
Convention Over Configuration

Transcript of Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Page 1: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Convention Over

Configuration

Page 2: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 3: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Zasady

• minimum konfiguracji w fazie początkowej

• maksimum domyślnych reguł, nazw i skrótów

Page 4: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 5: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Ś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

Page 6: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Symfony 2• narzędzie app/console

• katalog app/config i generowanie pliku parameters.yml

• domyślne ścieżki np. do szablonów (adnotacja @Template)

Page 7: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 8: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 9: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Kontrola wersji i spójność

Page 10: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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?

Page 11: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Composer możliwe rozwiązania

• Composer as a Service

• mocny sprzęt, dużo RAMu

• Composer cache lub proxy (deploy)

Page 12: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 13: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Vagrant problemy wydajnościowe z VirtualBoxem

• współdzielenie plików nie jest szybkie ani przenośne

• brak domyślnie zainstalowanego GuestAdditions

Page 14: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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ść

Page 15: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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; }

Page 16: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 17: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

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

Page 18: Convention Over Configuration - Wrocław Symfony Group #3 22.01.2015

Polecane książki