diff --git a/README.basque.md b/README.basque.md index 62294780..ffa289a2 100644 --- a/README.basque.md +++ b/README.basque.md @@ -587,7 +587,7 @@ Aurreko azalpen guztiak faltsuak izango lirateke `===` eragilea erabili izan bal

-## ![✔] 5.3. Utzi ahal den guztia alderantzizko proxy batean (adibidez, gzip, SSL) +## ![✔] 5.3. Delegatu ahal den guztia alderantzizko proxy batean (adibidez, gzip, SSL) **TL;PL:** Node izugarri txarra da PUZen zeregin intentsiboak egiten, esate baterako, gzipping, SSL termination. Haien partez benetako middleware zerbitzuak erabili behar dituzu –hala nola nginx eta Haproxy– edo hornitzaileen lainoko zerbitzuak @@ -688,7 +688,7 @@ edo hornitzaileen lainoko zerbitzuak

-## ![✔] 5.13. Erabili ahuleziak automatikoki atzematen dituzten tresnak +## ![✔] 5.13. Erabili menpekotasunak automatikoki atzematen dituzten tresnak **TL;PL:** menpekotasun ezagunenek ere –Express, adibidez– badituzte (noizean behin) ahulezia ezagunak, sistema arriskuan jar ditzaketenak. Horrek konponbide erraza du, ordea, tresna komunitario eta komertzialak erabiliz gero, ahuleziak etengabe kontrolatu eta haien berri ematen dute eta (bertan edo GitHub-en) @@ -698,13 +698,13 @@ edo hornitzaileen lainoko zerbitzuak

-## ![✔] 5.14. Esleitu transakzio identifikazio bat adierazpen-erregistro bakoitzari +## ![✔] 5.14. Esleitu transakzio identifikazio bana adierazpen erregistro bakoitzari **TL;PL:** esleitu identifikatzaile bera –transakzio-: {balioren bat}– erregistro sarrera bakoitzari eskaera bakar baten barruan. Ondoren, erregistroetako erroreak ikuskatzean, erraz konturatuko zara zer gertatu zen aurretik eta ondoren. Zoritxarrez, hori ez da erraz lortzen Noden, haren izaera asinkronoa da eta. Ikusi kodearen adibideak beheko estekan **Bestela:** produkzioko erroreen erregistroa testuingururik gabe ikustean – aurretik gertatu zena, alegia –, askoz zailagoa eta motelagoa da arazoa aztertzea -🔗 [**Irakurri gehiago: esleitu ‘TransactionId’ adierazpen erregistro bakoitzari**](/sections/production/assigntransactionid.md) +🔗 [**Irakurri gehiago: esleitu transakzio identifikazio bana adierazpen erregistro bakoitzari**](/sections/production/assigntransactionid.basque.md)

diff --git a/sections/production/assigntransactionid.basque.md b/sections/production/assigntransactionid.basque.md new file mode 100644 index 00000000..01d89bcf --- /dev/null +++ b/sections/production/assigntransactionid.basque.md @@ -0,0 +1,39 @@ +# Esleitu transakzio identifikazio bana adierazpen erregistro bakoitzari + +

+ +### Azalpena + +Ohiko erregistroa osagai eta eskaera guztien sarreren biltegia da. Lerro edo errore susmagarriren bat atzeman ondoren, zaila izaten da fluxu bereko beste lerro batzuekin bat etortzea (adibidez, "John" erabiltzailea zerbait erosten saiatu zen). Hori are kritikoagoa eta zailagoa bihurtzen da mikrozerbitzu ingurune batean eskaera/transakzio bat ordenagailu askotan zehar sor daitekeenean. Esleitu eskaera bateko sarrera guztiei transakzio identifikatzaile balio bakarra, eta, horrela, lerro bat atzematean, IDa/identifikazioa kopiatu eta antzeko transakzio IDa/identifikazioa duen lerro bakoitza bilatu ahal izango da eta. Hala ere, In Node hori lortzea ez da erraza, hari bakarra erabiltzen baita eskaera guztiei erantzuteko. Aztertu ez ote zaizun komeni liburutegi bat erabiltzea datuak bil ditzakeena eskaera mailan. Ikusi hurrengo diapositibako kode adibidea. Beste mikrozerbitzu batzuk deitzean, igorri transakzioaren IDa "x-transaction-id" bezalako HTTP goiburua erabiliz testuinguru bera mantentzeko. + +

+ +### Kode adibidea: Express konfigurazio tipikoa + +```javascript +// eskaera berria jasotzean, kontextu isolatu berria hasi eta transakzio identifikazioa ezarri. Hurrengo adibideak continuation-local-storage npm liburutegia erabiltzen du eskaerak isolatzeko + +const { createNamespace } = require("continuation-local-storage"); +const session = createNamespace("my session"); + +router.get("/:id", (req, res, next) => { + session.set("transactionId", "some unique GUID"); + someService.getById(req.params.id); + logger.info("Starting now to get something by id"); +}); + +// Orain, beste edozein zerbitzu edo osagarrik kotextuko datuak eskura ditzake +class someService { + getById(id) { + logger.info("Starting to get something by id"); + // beste logika hemen dator + } +} + +// Erregistroak transakzio identifikazioa gehi diezaieke sarrera bakoitzari, horrela eskaera bereko sarrerek balio bera edukiko dute +class logger { + info(message) { + console.log(`${message} ${session.get("transactionId")}`); + } +} +```