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, který 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. To se nám povedlo srazit na třetinu a zároveň zrefaktorovat celý proces tak, aby každý na první pohled viděl 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 postaveno 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 byl review a deploy následného úkolu maximálně tak velký, aby nepřepisoval velké části aplikace a naopak nebyl příliš 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 nim zná programátor 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é, integrační testy včetně Cypress testů. Cypress testy nám připravuje automations tester a na Github Actions nám automatika pohlídá, že se všechno chová jak očekáváme. Díky tomu se může vývojář plně soustředit jen 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í, které se umí samo sestavit, spustit testy a případně bot pingne programátora, kde nejsou zelené testy, nebo se deploy dělá rovnou na projekt.

A co bys mohl dělat ty?

Vymazlený striktní objektový kód

Chceme unifikovat výstup z aplikace a proto je potřeba refaktorovat kód tak, abychom měli striktně typované DTO na výstupu z aplikace. Ať je to třeba Restové API pro mobilní aplikaci, Vue frontend, nebo jenom v jiné části naší PHP aplikace. Je třeba navrhnout, co bude DTO obsahovat pro konkrétní scénáře a naprogramovat k němu obsluhu a vydávání dat.

Vývoj vlastního ORM

Dlouhodobým cílem je nabídnou naše interní ORM jako open source balíček. 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

V následujících měsících nás čeká velký redesign a refaktor našeho interního CMS. Čeká nás spousta vylepšení a budeš tak mít velký prostor pro seberealizaci, protože jde o náš interní nástroj a požadavky si udáváme sami. Ať už to bude unifikování výstupu nebo refaktorování business logiky, na tobě bude část v PHP a latte. O samotné napojení a stylování se starají naši frontend developeři.

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 PHP 7.4 a postupně nasazujeme 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 postavené nad dibi a Nextras prvky.
  • 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ě.
  • Cypress proklikává weby, abychom nemuseli my.
  • 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, preview appky obstarává Kubernetes a na serverech se nám o konfiguraci podle našich požadavků stará VSHosting.
  • Ke každému PR se automaticky vytvoří testovací prostředí, kde může zadavatel vidět novou funkcionalitu.
  • Využíváme Github Actions, které obsluhují veškerou naši automatizaci. Například spouští testy, kontroly, starají se o správné štítky, vydávání releasů a další.

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