31. May 2022
Backend & DevOpsAko vyzerajú inovácie a automatizácia v našom webovom tíme
V tomto článku si povieme o zaujímavých inováciách, ktorým sme sa prostredníctvom Inovačnej platformy venovali a posunuli nimi náš tím a vývoj aplikácií k lepšiemu.
Inovačná platforma
Oblasť technológií sa rozvíja závratným tempom. Neustále prichádzajú nové technológie, príležitosti a potreba inovácií. Práve preto sme sa vo webovom tíme, pred časom rozhodli založiť inovačnú platformu. Ide o neustále sa vyvíjajúci interný projekt, do ktorého sa môže zapojiť každý člen tímu. Za koordináciu úloh a validáciu požiadaviek je zodpovedný náš kolega Ľubo. Ak niekto z tímu dostane zaujímavý nápad alebo zistí, v akej oblasti by sme sa mali zlepšiť, môže nám o tom dať vedieť pomocou jednoduchého formulára. Vstupy z formulára sa následne transformujú na JIRA tasky, na ktorých môže pracovať priamo ten, kto task zadal, alebo ktokoľvek iný z tímu.
Automatické generovanie API dokumentácie
Možno ste už počuli o tom, ako sme sa rozhodli nestráviť už ani minútu písaním API dokumentácie. Ak nie, môžete si o tom prečítať viac v našom článku o vytvorení knižnice na automatické generovanie API dokumentácie z Joi validačných schém, ktorá vznikla na jednom z našich firemných Hackathonov. Knižnicu @goodrequest/express-joi-to-swagger postupne vylepšujeme a rozširujeme. Momentálne je zverejnená verzia 0.3.2. Od hackathonu sa nám podarilo pridať napríklad možnosť definovať stratégiu autentifikačnej stratégie, takže každý z endpointov možno volať priamo z vygenerovaného swagger UI. O ďalších nových funkciách si môžete prečítať na oficiálnom repozitári knižnice.
Generovanie TypeScript rozhraní na frontende
Jedným z našich cieľov bolo, aby z API dokumentácie generovalo aj rozhrania dostupné pre klientske aplikácie. Bola to jedna z tém, ktorú sa nám podarilo dokončiť v rámci inovačnej platformy. Výsledkom je, že klientska aplikácia môže získať novú verziu rozhraní pri každej zmene API a vie, akú odpoveď môže očakávať od servera.
Generovanie TypeScript typov na backende
V našich projektoch používame Typescript na vývoj webových aplikácií. Prináša veľa výhod najmä pri väčších alebo dlhodobých projektoch. Ako programátori sme však od prírody leniví a je pre nás otravné písať rozhrania alebo vytvárať typy pre objekty, s ktorými v kóde pracujeme ručne. Preto sme sa rozhodli nájsť spôsob, ako ich generovať automaticky. Po preskúmaní existujúcich riešení sme sa rozhodli upraviť knižnicu TBD, ktorá generuje typy z validačných schém Joi. Tie už používame, a tak sme nemuseli písať takmer nič navyše, aby sme automaticky získali typy vstupných a výstupných objektov.
Eslint config
Pri každom projekte používame nejaký linter nástroj. Pri veľkých projektoch s viacerými vývojármi je to nevyhnutné. Pomáha nám udržiavať kód prehľadný a čitateľný, a preto sa oveľa ľahšie udržiava. Podľa viacerých štúdií má však používanie takýchto nástrojov pozitívny vplyv aj na samotnú funkčnosť kódu.
Každý projekt síce používal eslint, no jeho konfigurácia sa vždy mierne líšila. Ak sme ju chcel udržať rovnakú museli sme konfiguračné nastavenia kopírovať z projektu do projektu a pri ich aktualizácia na jednom repozitári k zmenám na druhom už vo väčšine prípadov nedošlo. Preto sme sa rozhodli vytvoriť vlastnú knižnicu so súborom pripravených nastavení, ktorú budeme používať na všetkých projektoch.
Každý projekt síce používa eslint, ale konfigurácia sa vždy trochu líši. Ak sme ju chceli zachovať rovnakú, museli sme kopírovať konfiguračné nastavenia z projektu do projektu, a po ich aktualizácií v jednom repozitári, k zmenám v druhom repozitári už vo väčšine prípadov nedošlo. Preto sme sa rozhodli vytvoriť vlastnú knižnicu so súborom hotových nastavení, ktoré budeme používame na všetkých projektoch.
Momentálne existujú tri knižnice:
- @goodrequest/eslint-config-typescript-react
- @goodrequest/eslint-config-typescript
- @goodrequest/eslint-config-javascript-react
Ďalšie ciele
Zoznam vecí, na ktoré by sme sa chceli pozrieť v rámci inovácií, je naozaj rozsiahly. Medzi naše pripravované projekty patrí automatické generovanie záznamov o zmenách alebo rozšírenie testovania aplikácií.
A aké sú tvoje plány do budúcna? Máme pre teba otvorenú pozíciu🚀