Napsat komentář

Co používáme na vývoj (nejen) Shopia

22.9.2014

Tomáš už sepsal, jak nám vývoj funguje po organizační stránce, já se vám teď pokusím přiblížit, jaké nástroje a technologie používáme.

Backend

Shopio je postavené na Zend Frameworku 1 (protože v době, kdy se vybíralo, na čem ho stavět nebylo nic moc jiného k dispozici). Samozřejmě jsme si museli některé věci v ZF upravit a opravit, ale naprostou většinu věcí se nám podařilo poslat zpět do upstreamu (takže už jsou součástí ZF). Kromě ZF1 používáme různé další knihovny – Twig, Texy, Nette (Image, Debug), mPDF, PHPExcel, Symfony Console.

Shopio běží na PHP 5.3 (na Tojeono.cz) nebo PHP 5.5 (v naší infrastruktuře) a MySQL (resp. MariaDB). Na šablony se historicky používalo jen čisté PHP (jak je v ZF aplikacích časté), ale aktuální vývojová verze Shopia už používá Twig (s tím souvisí i to, že Shopio bude podporovat externě vytvářené šablony – ale o tom napíšu až někdy jindy). Některá Shopia dále používají Elasticsearch (a kupodivu nejen na hledání, ale třeba i na výpis kategorií), Memcache, Redis.

A jak už Tomáš zmiňoval, tak hodně důležitý je pro nás Jenkins. Pro každý commit a každý Pull Request se pouští automatizovaný build, který kontroluje spoustu věcí a v případě jakéhokoliv problému failne a dá vědět mailem. Vezmu to jen rychle:

  • PHP-Parallel-Lint – zkontroluje celé Shopio za pár sekund
  • twig-lint – kontrola syntaxe šablon
  • PHPUnit – testujeme jak model, tak i ZF controllery
  • PHP_CodeSniffer – Zend standard a spoustu dalších pravidel – psal jsem o tom na svém blogu
  • PHPCPD
  • JSHint – kontrola syntaxe JS
  • JSCS – CodeSniffer pro JS

Infrastruktura

Velká část Shopií běží na sdíleném hostingu Tojeono.cz (kromě sdíleného hostingu mají i VPS s dedikovanou pamětí a výkonem pro větší zátěž).

Kromě toho jsme v poslední době vytvořili vlastní infrastrukturu pro běh Shopií. Základem je loadbalancer (s nginxem), který servíruje statická data a ostatní požadavky předává na jednotlivé workery (nginx + php-fpm). Těch workerů může být podle potřeby samozřejmě více. Jako databáze se používá MariaDB (master a slave servery). Na monitoring Icinga (fork Nagiosu) a collectd + Visage. Všechny servery běží na Debianu.

A to nejdůležitější je to, že jednotlivé servery nejsou instalovány ručně, ale pomocí SaltStack (obdoba Chef/Puppet). Takže veškerou konfiguraci serverů máme verzovanou v gitu a není problém rychle nahodit obdobnou infrastrukturu kdekoliv na nových serverech, případně přidat další worker. Úvod do saltu popsal Tomáš na Zdrojáku.

Na deploy používáme buildskripty ve Phingu, do kterého si píšeme vlastní tasky. Samotný deploy spouštíme z webového rozhraní a je to one-click-deploy (kdy se na jedno kliknutí na server nahraje poslední revize z gitu a spustí změnové SQL skripty).

Na řízení projektů a komunikaci s klienty používáme ActiveCollab. Je to systém, který máme nainstalovaný u sebe a platíme roční poplatek za upgrady. V minulosti jsme uvažovali o vytvoření vlastního systému, ale vždy jsme to nakonec zavrhli, protože by to bylo neúměrně mnoho práce.

Frontend

Na frontendu používáme HTML5 (+microdata tam, kde mají smysl). CSS generujeme ze Sassu (používáme Compass). Zajímavostí je, že používáme Twitter Boostrap, ale místo oficiální LESS verze používáme Sassový port (teď už podporují Sass i oficiálně). V JavaScriptu máme převážně drobnosti v jQuery/jQueryUI. CSS i JS samozřejmě spojujeme a minifikujeme (používáme vlastní knihovnu)

Vývojáři

Zajímavostí je, že zatím všichni používáme na vývoj Windows (to neznamená, že nemáme rádi Linux – na vývojářských strojích naleznete cygwin a spoustu linuxových nástrojů). Chvíle trápení práce s Macem (který máme pro build iOS aplikace) všem stačila.

Všechen kód verzujeme gitem a ukládáme ho na Github, kde nám PR v poslední době obohacují GitHub Selfies Na práci s gitem používáme GitExtensions <3 (a bash používáme jen pro několik příkazů – resp. kombinací příkazů uložených jako aliasy).


Kód píšeme v PHPStormu a lokálně si ho spouštíme na xamppu/wamppu. A používáme xdebug (na debugování a profilování).

Kávu z Holešovických pražíren pro nás vaří DeLonghi Magnifica a nádobí po nás myje Baumatic myčkovič.

Co dál?

Používáte také podobné nástroje? Nebo jiné a lepší a divíte se, že si s těmito vystačíme? Dejte nám vědět na info@shopio.cz. Neustále hledáme nové posily do týmu a rádi se něco nového naučíme.

Martin Hujer

This entry was posted in Blog.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *