ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 164
Numărul 163 Numărul 162 Numărul 161 Numărul 160 Numărul 159 Numărul 158 Numărul 157 Numărul 156 Numărul 155 Numărul 154 Numărul 153 Numărul 152 Numărul 151 Numărul 150 Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 164
Abonamente

Un exemplu de toolchain modern JavaScript

Edward Sebesi
Software Engineer @ BMW TechWorks Romania



PROGRAMARE


În acest articol, aș dori să prezint un exemplu de standardizare a unui toolchain JavaScript, care s-a dovedit a fi practic într-un mediu enterprise de mare amploare, ce conține mii de proiecte. Exemplul descris se referă doar la partea de frontend a aplicațiilor.

Ce înțelegem printr-un toolchain JavaScript?

În acest context, prin toolchain ne referim la totalitatea de biblioteci și frameworkuri folosite pentru: linting de cod, formatarea codului, pre-commit hooks, teste unitare, teste end-to-end etc. într-un proiect frontend.

În special, vreau să subliniez avantajul de a avea un set standardizat de unelte pentru toate proiectele versus un set atipic, adaptat unui singur proiect.

O analogie: mașini hypercar vs. mașini de producție

Dacă spunem "automobil hypercar", care tinde să bată recorduri de viteză, ne imaginăm un automobil construit pentru performanță, foarte scump, cu o producție foarte limitată. Sunt mașinării grozave, dar pentru omul de rând este mai relevant un automobil produs de o marcă de încredere, în serie, la un preț accesibil, pentru care se pot găsi piese de schimb în orice moment, iar procesul de service este lin.

Aceeași comparație doresc să o fac în cazul proiectelor frontend. Da, putem face ceva extrem de bine croit pentru performanță, folosind cele mai "umflate gogoși" dintre biblioteci, alese după entuziasmul de moment. Dezavantajele în această situație pot fi: programatori nișă, greu de găsit, iar tehnologiile folosite având riscul de a fi abandonate de proprii dezvoltatori.

Alternativa ar fi "mașina de producție" a proiectelor frontend: un lanț de unelte ales conservator, automatizări și standarde de cod "bătute în cuie", care ajută procesul de bootstrapping al unui proiect.

Arhitectura acestui toolchain

Această schemă reprezintă nu o serie de recomandări, ci un sistem stratificat, unde fiecare strat este dependent de cel precedent:

Angular: o alegere strategică pentru mediul enterprise

Dacă React domină prin popularitate (~80 mil. descărcări săptămânale pe npm vs. ~19 mil. pentru Angular), Angular oferă o propunere de valoare diferită pentru dezvoltarea la scară mare.

Angular este un framework, nu o bibliotecă. Vine la pachet cu un sistem CLI, routing, sistem de formulare, client HTTP, dependency injection, sistem de componente și sistem de server-side rendering.

Pentru organizații care mențin sute sau chiar mii de aplicații, structura "opinionated" a Angular devine un avantaj. Fiecare proiect urmează aceeași arhitectură și același mod de lucru.

Deși Angular are o "curbă de învățare" mai abruptă, structura completă a pachetului oferit aduce beneficii majore în ceea ce privește consistența și mentenabilitatea pe termen lung.

Descrierea alegerilor din acest toolchain

Dincolo de tehnologii: practici bune ca standard

La nivel de BMW Group, pe lângă un toolchain bine definit, menținem și o listă de "practici bune" standard: convenții documentate pentru arhitectură, tipare de testare, cerințe de securitate și proceduri de deployment. Acest ghid evoluează alături de alegerile noastre tehnologice, fiind adaptat din lecțiile învățate în nenumărate proiecte.

Standardizând practicile bune, ne asigurăm că echipele nu "reinventează roata", iar informațiile legate de probleme precedente sunt centralizate.

Un alt aspect ce ține de menținerea practicilor bune este să rămânem la curent cu ultimele schimbări în tehnologie. Spre exemplu, revoluția Angular începând cu versiunea 17, care a introdus reactivitatea bazată pe signals. Acest lucru a creat un ecou și în biblioteci precum NgRx, care au dezvoltat soluții bazate pe signals pentru state management, aliniindu-se la noua direcție a ecosistemului Angular.

Toate aceste lucruri trebuie luate în calcul și adoptate treptat ca "practici bune". Altfel, riscăm să rămânem în urmă.

De ce standardizarea câștigă

Argumentul pentru toolchainuri standardizate are la bază o observație simplă: fiecare proiect configurat personalizat se consideră unic, dar majoritatea se confruntă cu probleme identice.

O echipă care personalizează un nou proiect poate petrece săptămâni cercetând, dezbătând și implementând schimbări pe care organizații mai mature le-au rezolvat acum ani de zile.

Toolchainurile standardizate rezolvă acest tipar păgubos. Se răspunde la probleme recurente o singură dată, documentând rațiunea, iar răspunsurile sunt puse direct într-o infrastructură pe care toate echipele o moștenesc.

Sistemul poate părea o constrângere, dar este un avantaj imens, în special în câștigarea celei mai valoroase resurse: timpul. O echipă care începe cu un lanț de instrumente deja proiectat se poate concentra pe problema reală: livrarea de funcționalități în aplicații.

În loc să rezolve același puzzle de fiecare dată, echipa beneficiază de experiențele colective care au ajustat toolchainul și practicile bune de cod.

Conferință TSM

NUMĂRUL 164 - Academic 2 Business

Sponsori

  • BT Code Crafters
  • Betfair
  • MHP
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • BMW TechWorks Romania

INTERVIU