Backendisti na IPC Berlin 2023


Backendisti na IPC Berlin 2023

Konferencie považujeme za dôležitú platformu na výmenu nápadov a skúseností, a súčasne, za ideálne miesto na spoznanie najnovších trendov z technologického sveta. Nedávna účasť na jednej z najvýznamnejších udalostí v oblasti PHP – International PHP Conference v Berlíne – bola pre nás preto jednoznačne povinnou jazdou. Táto konferencia nám ponúkla skvelú príležitosť networkovať s najvýznamnejšími postavami z oblasti PHP a načerpať množstvo nových vedomostí, ktoré sme už aj stihli preniesť do našej každodennej práce. V tomto príspevku píšeme o tom najzaujímavejšom, čo sme sa na IPC dozvedeli.

Zastúpené tu boli rôznorodé témy. Konkrétne sa prednášky venovali optimalizácii, testovaniu, trendom v PHP či, v neposlednom rade, udržateľnosti. Popri prednáškach sme sa zatúlali až do útrob zdrojového kódu PHP, ktorý sme na workshope obohatili o naše vlastné rozšírenia. Nakoniec sme si vyskúšali ako používať knižnice napísané v jazyku C z prostredia PHP pomocou FFI.

Medzi speakerami boli známe mená ako Nils Adermann (tvorca Composer), Sebastian Bergmann (tvorca PHPUnit) či George Banyard (PHP core contributor) – ľudia, ktorí stoja za nástrojmi, bez ktorých by naša každodenná práca bola omnoho náročnejšia. Z IPC sme teda odišli inšpirovaní, motivovaní a plní nápadov na zlepšenie, modernizovanie či optimalizáciu našich zdrojákov.

PHP 8 atribúty

Napriek tomu, že PHP 8 sa používa už od konca roka 2020, množstvo projektov funguje ešte na starších verziách ako 7.4 či (nedajbože) 5.6. Veľa PHP developerov ešte teda nemalo šancu spoznať, čo PHP 8 ponúka. Medzi najdôležitejšie novinky patria práve atribúty, o ktorých viedol prednášku Benjamin Eberlei.

#[Route(path: "/hello/world")]

function helloWorld()

{ echo "Hello World"; }

Atribúty na prvý pohľad vyzerajú ako komentár, čo je aj zámer PHP vývojárov, keďže chceli zabezpečiť spätnú kompatibilitu so staršími verziami PHP. Atribúty, však, skutočne môžu ovplyvniť beh programu. Pomocou Reflection API vieme získať použité atribúty na triede, metóde, funkcii, konštante, argumentoch funkcií/metód či členských premenných tried. Atribúty sa veľmi často používajú napríklad na routing, čo vidíme aj v príklade vyššie. Atribút Route označuje funkciu, ktorá sa má vykonať na adrese /hello/world.

PHP samotné obsahuje zabudované atribúty, ktoré môžeme používať vo svojich projektoch. Patria medzi ne atribút SensitiveParameter, ktorý v prípade chyby nezverejní hodnotu parametra funkcie/metódy do stacktrace-u. Ďalší zaujímavý parameter je AllowDynamicProperties, ktorý umožňuje v triede vytvárať dynamické členské premenné (deprekované od verzie 8.2).

Viac o atribútoch môžete zistiť priamo na webe dokumentácie PHP.

Beyond PHP – It’s Not Just About the Code

V prednáške s názvom „Beyond PHP – It’s Not Just About the Code“ Wim Godden hovoril najmä o databázach, ako optimalizovať databázové dopyty a čomu sa vyhýbať. Nezabudol však upozorniť ani na to, čo je pre najefektívnejší beh databáz prospešné.

1. Indexovanie databázy

Pridávanie indexov do databázových tabuliek je jednoduchý spôsob ako výrazne zrýchliť určité operácie nad tabuľkou. Databáza na pozadí vytvorí pomocnú dátovú štruktúru (napr. B-strom), ktorá jej umožní rýchlejšie hľadať dáta na základe podmienky. No dôležité je zároveň si uvedomiť, že indexovanie všetkých stĺpcov pridáva výkonnostnú záťaž pri každej operácii insert/update/delete, pretože indexy sa musia aktualizovať. Preto najlepšia stratégia na pridávanie indexov je najprv analyzovať najčastejšie dopyty na databázu, zistiť či ich je možné optimalizovať pridaním jednoduchého alebo multistĺpcového indexu a až následne indexy vytvoriť.

2. Detegovanie problémových dopytov

Pri monitorovaní a identifikácii dopytov, ktoré sú pomalé alebo nevyužívajú indexy, sme sa zameriavali na nástroje ako slow_query_log a log_queries_not_using_indexes. Analýzou logu môžeme prísť na problémové dopyty a zamerať sa na ne pri optimalizácii úpravou SQL dopytu či pridaním indexov. Uľahčiť prácu vie aj nástroj pt_query_digest, ktorý zoradí dopyty podľa dĺžky vykonávania. Vďaka tomu sa vieme najprv sústrediť na najproblematickejšie dopyty, ktorých optimalizácia vie ovplyvniť beh databázy najvýraznejšie.

3. Explain

Používanie príkazu EXPLAIN nám pomáha analyzovať plán vykonávania dopytov a poskytuje nám informácie o tom, ako je dopyt spracovaný databázou. Je to základný nástroj na analyzovanie dopytov na databázu, ktorého výstup je, avšak, niekedy pomerne zložitý. Dokumentácia databáz obsahuje detailné vysvetlenie všetkých pojmov výstupu – MySQL, Postgres.

4. Vybrané polia v SELECT dopytoch

Pri vykonávaní SELECT dopytov na tabuľky, ktoré majú definované indexy, je lepšie vyberať iba tie polia, ktoré sú súčasťou indexu. Ak vyberáme polia, ktoré súčasťou indexu nie sú, je možné, že databáza index nepoužije, keďže neobsahuje všetky hodnoty, ktoré potrebuje.

Zdroj obrázku: slide z prezentácie Beyond PHP – It’s Not Just About the Code od Wim Godden

Sumarizácia

IPC Berlin 2023 bola plná zaujímavých prednášok. V tomto príspevku sme spomenuli iba niektoré. Chystáme preto ešte jeden článok, kde bližšie opíšeme ďalšie výstupy z tohtoročnej konferencie na témy testing, udržateľnosť, nové spôsoby autentifikácie, niečo málo o vlastných rozšíreniach jazyka PHP či využívaní knižníc napísaných v C z prostredia PHP.

Poď nám pomôcť s vývojom super vecí a my ťa potiahneme vyššie!

Aktuálne do nášho development tímu hľadáme posily. Čaká na teba výzva v podobe podielu na smerovaní našej platformy RSHOP a implementácie nových technológií.

+ Diskusia nemá žiadne príspevky