Senior PHP Developer interní aplikace

Stará se o jádro Pecky.

Core/CMS nebo co vlastně děláme?

Vydáváme a staráme se o hromadu open source balíčků: od menších rozšíření do Tracy co zobrazuje informace o databázi https://github.com/peckadesign/database-info-panel, přes balíček, který obslouží konfiguraci Supervisoru, nástroje který udržuje consumery v RabbitMQ naživu https://github.com/peckadesign/Supervisor, až po kompletní samostanou aplikaci monitoringu webů https://github.com/peckadesign/Monitoring

Samotné CMS obsahuje naše vlastní ORM a užíváme si tak možnosti rozšíření, přesného striktního typování a velmi přesné výkonnostní optimalizace. Poslední velkou optimalizací bylo přepsání výpočtu changesetu entity, kde některá místa aplikace trávila počítáním dlouhé desítky milisekund, což se nám povedlo srazit na třetinu a zároveň zrefaktorovat celý proces tak, že každý vidí na první pohled co se děje pod pokličkou.

Elastic nám servíruje data pro vyhledávání, které využívají stovky tisíc lidí denně. Také do něj dáváme předpočítaná data, abychom tolik netrápili databázi. Elastic nám pomáhá i s výpisy produktů, stará se o všechny parametry, pluska a mínuska co vidíte u parametrů a říká, které produkty se mají zobrazit.

Celé CMS je postavené nad Nette, ale většinu kódu stejně děláme FW agnostic. Když je potřeba využít komponent z jiných FW, neváháme. Nette máme rádi, podporujeme ho a je skvělé, že i díky němu u nás vznikla super komunita PHP programátorů. Využíváme ho, když to dává smysl, ale máme u nás i dva spokojené Symfony programátory.

Naše nové kanceláře v Brně-Králově Poli

Životní cyklus tasku

Pro analýzu podnětů používáme OKR plánování. Co to znamená v praxi? Pokud by například programátor chtěl, aby bylo získávání entit z databáze striktně typované za pomoci nástrojů z PHP74, zvážíme přínos tohoto kroku a zařadíme ho do plánu k realizaci. Některý z kolegů následně vypracuje analýzu, ve které zjistí, co by to obnášelo, jaká by byla implementace po dílčích krocích a jaká by byla časová náročnost.

Dílčí kroky rozvrhujeme tak, aby review a deploy následného úkolu byl maximálně tak velký, aby nepřepisoval velké části aplikace a naopak nebyl tak malý, že by se každý return typ deployoval zvlášť.

Časová náročnost je pro nás důležitá při určování priority pro zpracování a také proto, abychom mohli plánovat dvoutýdenní sprinty. Díky tomu programátor zná svou frontu úkolů na dva týdny dopředu. Na konci každé iterace se sejdeme na SCRUMu, kde probereme jaké úkoly se implementovaly a jak lze nové funkce využít. Poté si naplánujeme, co se bude implementovat v další iteraci.

Úkol je připraven a zařazen ke zpracování. A teď to nejdůležitější – implementovat ho.

Aby na Githubu svítilo vše zeleně, spouští se v Github Actions kontrola coding standardu, PHPStan s několika našimi pravidly navíc a také jednotkové a integrační testy. Pokud je třeba, tak i Cypress testy na konkrétním e-shopu, který implementuje core composer balíček se změnami. To proto, že náš Core nemá sám o sobě vizuální část. U komplikovanějších nebo rozsáhlejších změn máme k dispozici i testera, aby se vývojář mohl plně soustředit na programování.

Po dokončení vždy následuje review. Github actions bot se nám stará o to, aby měl úkol vždy správné štítky a řešitele. Jakmile se PR schválí, může autor zamergovat a bot automaticky vydává release. V této fázi je třeba danou funkcionalitu dostat na konkrétní projekt. Podle typu úkolu může stačit testovací prostředí, kde jsou zelené testy, nebo se deploy dělá rovnou na projekt. Většina našich e-shopů v pravidelných intervalech aktualizuje jádro – o to se starají týmy jednotlivých projektů.

A co bys mohl dělat ty?

Vymazlený striktní objektový kód

Rádi programujeme striktně a objektově a jeden z posledních úkolů na vylepšení kódu je mít pro každou entitu striktně typovanou kolekci, která vždy vrátí pouze konkrétní entitu. A to jak při získání konkrétního prvku, tak při iterování implementovaného interface IteratorAggregate.

Vývoj vlastního ORM

Dlouhodobým cílem je nabídnou naše interní ORM jako open source balíček. A proto na něm neustále pracujeme – děláme rychlostní optimalizace, přidáváme nové funkce a provádíme refaktoringy, protože žádný kód neobstojí ve zkoušce času.

Vývoj CMS

Chceme dělat samotné CMS lepší, responzivní a svižné. Některé moduly by si zasloužily oprášit codebase a přenést do současnosti. Na tobě bude připravit data a business logiku tak, aby bylo vše přehledné, rychlé a nevyužívalo se příliš mnoho prostředků serveru. Víc než nahrubo vypsat data do latte šablony po tobě chtít nebudeme – o napojení do latte, css a javascripty se starají naši frontend developeři.

Příprava pro orchestraci aplikace

S tím, jak nám přibývají servery, nám čím dál víc začíná dávat smysl Kubernetes. Na to ale musí být aplikace připravená. Víme, jaké kroky podniknout a na tobě bude je zapracovat.

A co dál?

Realizace nápadu, se kterým přijdeš právě ty?

Vašek se v Pecce mimo jiné stará také o onboarding a PHP komunitu

Naše technologie a procesy

  • Používáme nejnovější PHP a s očekáváním vyhlížíme vydání PHP 8.
  • Stavíme aplikace nad Nette.
  • Využíváme Symfony, Contributte, Kdyby a hromadu jednotlivých balíčků.
  • S databází za nás mluví naše ORM, Doctrine a dibi.
  • Dřinu přenecháváme strojům. Kód za nás testuje Nette/Tester.
  • Coding standard i PHPStan s vlastními pravidly dávají automaticky pozor, že všechno vypadá a funguje správně.
  • Výkon je pro nás důležitý. Weby sledujeme přes New Relic.
  • Profilujeme a hledáme slabá místa přes Blackfire.
  • Chyby ukládáme do Sentry, které všechny problémy poctivě hlásí.
  • Kód a úkoly sdílíme na GitHubu, Pull Requesty s review a hromadou kontrol jsou už zaběhlým standardem, bez kterého se neobejdeme.
  • Elasticsearch se stará o vyhledávání a vypisování produktů, aby se tolik netrápila databáze.
  • Do Elasticu je třeba nahrnout miliony položek, nebo při importu produktů paralelně kontrolovat, jestli mají cenu. Oboje zvládneme přes RabbitMQ.
  • Aby RabbitMQ vždy běžel, hlídá ho Supervisor nakonfigurovaný naším open source balíčkem.
  • Redis máme napojený na aplikační cache pomocí open source balíčku, do kterého přispíváme.
  • Všechny projekty beží pro lokální vývoj v Dockeru, na serverech se nám o konfiguraci podle našich požadavků stará VSHosting.
  • Máme vlastní CI, které ke každému PR automaticky vytvoří testovací prostředí, kde může zadavatel vidět novou funkcionalitu.
  • Využíváme také Github Actions, které spouští testy, kontroly a starají se o správné štítky a vydávání releasů.

Ale to pořád není všechno. Přečti si, co dalšího ti můžeme nabídnout!

  • Sídlíme v nově rekonstruovaném domě v pohodové čtvrti Královo Pole. V okolí je spousta restaurací, koupaliště a wellness.
  • Na práci dostaneš Mac, ale nebráníme se ani Windows nebo Linuxu :-)
  • Panuje u nás pohodová atmosféra a připravujeme spoustu společných akcí – od sportu, přes kulturu až po společné snídaně nebo víkendy na chatě. Mrkni na náš Facebook a Instagram!
  • Pro chvíle odpočinku máme relax zónu s PlayStationem VR™ a fotbálkem – pravidelně si poměřujeme síly v turnajích.
  • Máme zdarma občerstvení a skvělou kávu z pákového kávovaru. Můžeš se naučit být baristou, pokud chceš.
  • Pokud jsi z daleka a sedneme si, pomůžeme ti najít bydlení v Brně a první 3 měsíce budou na nás.

Myslíš, že bychom si mohli rozumět? Tak neváhej a napiš na jobs@peckadesign.cz nebo přes formulář níže.

Dej nám o sobě vědět

Rádi se podíváme na tvůj životopis. Pokud ho nemáš, postačí odkaz na LinkedIn. Jestli to bude vypadat slibně, pozveme tě na pohovor, ať zjistíme, jestli přeskočí jiskra. A pokud ano, bude to Pecka!

Odesláním tohoto formuláře potvrzuji, že jsem se seznámil se zde uvedenými informacemi o zpracování osobních údajů společností PeckaDesign s.r.o.
Tyto stránky jsou chráněny pomocí reCAPTCHA a platí zásady ochrany osobních údajů a smluvní podmínky společnosti Google.

Zpět nahoru