< Zpět na články

Milníky backend týmu za rok 2023

Jiří ŠmolíkJiří Šmolík
02. února 2024

Rok 2023 je za námi a přichází čas reflektování toho, jak jsme ho v našem týmu zvládli. Minulý rok byl opravdu mimořádný, poznamenaný mozaikou společných úsilí, geniálního řešení problémů a neúnavného hledání dokonalosti. Bez dalšího zdržování se do toho pojďme pustit.

Týmové cíle

Na začátku roku jsme spustili týmové cíle (o kterých jsem psal zde), zaměřující se nejen na to, jak na odbornost v technologiích tak na komunitu v rámci společnosti Ackee i vnějšího prostředí.

Mohu s hrdostí říct, že se nám podařilo dokončit 6 z 9 cílů na 100%. Zvládli jsme převzít plánované části agendy DevOps, dokončit interní kurz Rust, přestat používat Jest na současných projektech, podporovat programátorské katas ve firmě po celý rok a splnit kvóty pro psaní blogů a (polo)veřejného vystupování.

Nicméně jsme nedosáhli prvotřídního stavu našeho open-source, o který jsme na začátku roku usilovali ane každý člen týmu se zúčastnil větší konference, jak jsme si stanovili.

Opustili jsme cíl FP-TS. Podcenili jsme fázi výzkumu při stanovování cíle, protože když jsme začali, brzyo nám došlo, že tímto směrem není třeba jít.

Škola Kraba (Rustu)

Naší snahou o zvládnutí druhého jazyka a zároveň jako část jednoho z našich týmových cílů jsme v lednu zahájili kurz, který trval až do září. Celý blog věnován tomuto usíli je zde. (Spoiler: v nejbližší době nebudeme používat Rust pro psaní webových aplikací.)

Milníky technologického stacku

Rok 2023 přinesl několik významných změn do našeho technologického stacku.

Terraform: Od roku 2023 jsme začali přebírat odpovědnost za infrastrukturní změny v projektech tím, že pozorujeme celý systém a přispíváme do repozitářů Terraformu, které jej definují. To pro nás bylo novinkou, protože do té doby jsme měli dedikovaný tým DevOps, který infrastrukturu spravoval.

Kysely: Během minulého roku jsme si všimli nové npm knihovny pro práci s databázemi jménem Kysely. Je inspirována nástrojem Knex, který je součástí našeho stacku od doby, kdy jsme začali s Node.js. Kysely přináší vynikající podporu pro TypeScript a z dosavadní zkušenosti si Kysely nemůžeme vynachválit.

Mocha: Opět měníme testovací framework a po několikaleté cestě s Jestem se vracíme k Mocha pro testování backendových aplikací v Node.js. Z naší zkušenosti jsou nyní běhy testů mnohem rychlejší, jsou předvídatelnější a nejsou tak náročné na paměť. Nyní opět pokukujeme o něco dále na node:test, nativní test runner Node.js, který by se mohl ukázat jako ideální volba.

Čestné uznání patří nativnímu fetch, do kterého jsme vkládali naděje na to, aby nahradil knihovny třetích stran jako got a axios. Nakonec naše naděje neproměnil. Rozhodli jsme se, že má svoje použití, ale na to, aby úplně nahradil zmíněné knihovny, mu chybí zásadní funkce, bez kterých nám nahrazení nedává smysl (lepší rozhraní, nastavení timeoutů, postup požadavku a další).

backend highlights ackee backend highlights ackee

Sociální aktivity

První meetup. Poprvé v historii Ackee jsme společně tým backendu a DevOps, byli hlavními řečníky na setkání Ackee Meets backend, které zahájilo celý rok meetupů v rámci Ackee. Gratulace všem řečníkům, těšíme se na další!

Pravidelné měsíční týmové události. Téměř každý měsíc probíhala malá týmová událost – pívec, laser game, tour d' pub, vodnice... a teď, když o tom přemýšlím, nikdy jsme nebyli na stejném místě dvakrát!

F za DevOps tým

Kam až moje paměť sahá, byli v Ackee admini, kteří se starali o správu serverů. O několik let později vznikl nový tým na správu infrastruktury. Hle, tým DevOps. V roce 2023 byl tým DevOps zrušen, a některé z jejich odpovědností přešly na naše bedra. Nadále však ale poskytují externí pomoc pro některé úkoly. Díky, kucí!

Prořezávání open-source

Během posledních let, hnáni proaktivním přístupem a touhou transparentně sdílet kód mezi projekty a s menším tlakem od společnosti, abychom sdíleli kód, jsme publikovali řadu balíčků pro Node.js. Přesněji řečeno celkem 24 balíčků. V roce 2023 jsme se z různých důvodu rozhodli provést ořezání našich open-source balíčků.

Některé byly špatně navrženy jako pouhý „pohodlný“ wrapper kolem jiných balíčků a několika utilit funkcí. Tyto wrappery rychle zastarávaly a hlavní činností bylo, že jsme museli velmi pravidelně aktualizovat závislosti. Nakonec jsme se rozhodli, že už takové balíčky nepotřebujeme.

Jiné balíčky přestaly být používané. Potřeby projektů v digitální agentuře se mění a něco, co bylo před několika lety žádané, už dnes není potřeba. Co ale zbyde je nutná údržba balíčků. S těmi jsme se rozloučili.

Třetí a poslední skupinou je přirozená evoluce, kdy jinde v komunitě vznikl jiný balík, který už naše potřeby splňuje, a našeho tak není zapotřebí.

Ze 24 open-source balíčků jsme jich deprekovali 12.

Žádné migrace dolů

Standardním způsobem správy schématu databáze jsou databázové migrace. Obvykle je to soubor popisující, jak aplikovat změnu v databázi (migrate up) a jak ji zpětně odvolat (migrate down). Zodpovědně jsme psali migrace s oběma chováními nahoru i dolů a letos jsme se rozhodli neimplementovat migrace dolů.

Nebylo to jednoduché rozhodnutí, ale pro nás převažovaly výhody nad nevýhodami. Dva hlavní důvody byly, že jsou většinou nepoužívané a někdy dokonce nemožné napsat nebo použít.

Málo používané. Většinou se zpětná migrace databázové změny řeší jen málo a když, tak spíše pečlivým manuálním zásahem do databáze, aby se předešlo větším než nutným změnám.

Někdy nemožné. Napsat úspěšnou migraci dolů může být nemožné kvůli novým omezením na databázi, jako je unikátní index, kdy nelze jednoduše vrátit změnu, protože data už danou podmínku nesplňují.

Shrnutí

  • Existuje lepší shrnutí takového blogu než seznam bodů? Nemyslím si.
  • Splnili jsme více než 77% našich cílů.
  • Neadoptovali jsme Rust pro psaní webových aplikací.
  • Pustili jsme se do práce s Terraformem.
  • Přestali jsme používat Jest a začali používat Mochu pro testování backend aplikace.
  • Deprekovali jsme polovinu našich open-source balíčků.

S nadšením uzavírám kapitolu roku 2023 a těšíme se na nepopsané stránky roku 2024! 🤩

Jiří Šmolík
Jiří Šmolík
Backend Team Lead

Máte zájem o spolupráci? Pojďme to probrat osobně!