Entonces eso fue, volvamos a kitty. Ahí vamos. Así es como hacemos esa pequeña bandera, ese span de marca. Y notamos que hay un método de finalización al final. Eso significa envolver todo y agregarlo a la transacción real para que pueda enviarse al final. Si no llamamos al método de finalización, no aparecerá en nuestro rastreo. Bueno, así es como creamos el primero.
Luego obtuvimos las cabeceras. Y luego agregamos el SentryTrace al Sentry-TraceHeather. ID de rastreo, eso es el ID único que mencioné antes, que queremos agregar o crear para cada solicitud, para que podamos rastrear la ejecución de la misma, aunque esté en el backend o aunque abarque 10 diferentes microservices. La transacción tiene su propio método toTraceParents que devuelve una cadena, y si enviamos este Sentry-trace header, el backend o el microservicio al que vamos a golpear o lo que sea que reciba nuestras solicitudes, sabrá cómo continuar el rastreo desde este punto en adelante, ¿verdad? Porque todavía estamos en el hook. Todavía estamos en el navegador. Cuando enviamos la solicitud, aquí es donde empezamos, así que el backend puede ser como, vale, veo un rastreo. Solo voy a seguir contribuyendo spans a este rastreo y luego lo devolveré, o, como, lo enviaré a un microservicio diferente. Así es como conectamos el lado del cliente y el back-end, ¿verdad? El front-end y el back-end. De nuevo, esto no es algo que necesites hacer. El SDK de Next.js hará esto por ti. Pero, por ejemplo, si tuvieras un proyecto diferente que quizás no tenga esto construido automáticamente en el mismo SDK de Sentry, así es como lo harías. El padre de rastreo real devuelve el ID de rastreo - el último ID de span - un valor, que es como cero o uno para indicar si la transacción es muestreada o no. Pero eso es básicamente todo. Es solo una cadena. Así que mientras técnicamente podamos transferir la cadena, podemos continuar el rastreo a través de todos los servicios de backend incluso trabajos de Chrome como podemos guardar esto en una database recuperarlo no sé en un trabajo de Chrome a medianoche agarrar este rastreo de entrada y agregarlo a la básicamente agregarlo a en la transacción para que podamos continuar el rastreo que ocurrió quizás hace unos días todavía podemos contribuir a él, ¿verdad? así es como conectamos estos servicios para contribuir y para contribuir al mismo rastreo genial entonces esto sucede y luego simplemente creamos un poco método de búsqueda con nuestras cabeceras uh sets um que creamos previamente y esto básicamente es la instancia de, uh, automáticamente, como el SDK de Sentry siendo capaz de instrumentarlo automáticamente. Y eso es este span aquí, el cliente HTTP, porque creamos el span de marca, pero no creamos el cliente HTTP. Y eso se hizo automáticamente por el SDK de Sentry, porque podemos ver ver que ocurre un evento de red y el SDK en sí va a crear ese span para ti. Por eso mencioné que no necesitas preocuparte por esto. Pero bueno genial. Estamos enviando esto y luego continuamos en el backend. Y puedo abrir el backend ahora, así que sería eso sería páginas / api / flashcards / slack porque ahí es donde enviamos las solicitudes HTTP. Si bajamos vamos a ver Esta parte aquí obtener usuario de la sesión. Esa es la primera Span que vemos ahí vamos usuarios encontrar único Y luego si bajamos al manejador de solicitud put ahí vamos Ves que lo mismo sucede aquí dame el hub actual y dame el scope activo actual pero esta vez no voy a crear una transacción. Esta vez voy a intentar obtener la transacción que ya está creada. Y por supuesto el SDK de Sentry Next.js creará eso para nosotros porque va a ver que hay una cabecera llamada Sentry-trace. Así que el SDK sabe, de acuerdo, así que tenemos un rastreo en marcha. Solo voy a crear esta transacción para ti automáticamente porque aparentemente quieres continuar el rastreo. Así que aquí está la transacción. no te molestes en crear una nueva. Vale, genial. Estamos obteniendo eso, y luego esperamos este método, obtener categoría por ID. Así que si vamos a este método, solo vamos a ver que solo estamos usando Prisma para encontrar una categoría única donde el ID coincide con el que pasamos desde el exterior. Y ahí está, categoría, encontrar único. Eso es exactamente lo que hicimos. Y esto es posible porque Sentry también tiene una integración que podemos instalar en nuestra configuración del servidor. Así que nuestras consultas de Prisma están automáticamente instrumentadas. Así que no necesitamos crear manualmente spans para nosotros. Por ejemplo, si vamos a Sentry-server.config.js y bajamos, ahí vamos. en el campo de integraciones, podemos ver que tenemos un nuevo siglo.integraciones.prisma, y pasamos ese cliente Prisma a la integración. Así que cada vez que ejecutamos una consulta SQL, la integración de Prisma va a crear ese span automáticamente para nosotros. De nuevo, el trabajo para un DevRel de Sentry es duro porque todo está automatizado y todo simplemente, simplemente funciona. Pero aquí estamos. Vale, luego creamos esa función de verificación de categorías, span que vimos en nuestro árbol, y mira lo que pasa. Estamos creando el span de verificación de categorías. Creamos o realizamos las verificaciones. Si no existe, establecemos el estado en No Encontrado y terminamos el span. Si no pertenece a este usuario, ¿verdad? por ejemplo, estoy intentando editar la categoría de Sarah. No debería poder hacer eso, ¿verdad? Entonces no. Estamos estableciendo el estado en no autenticado, y luego lo terminamos. Y si todo está bien, entonces solo voy a terminar este span de verificación de categorías. Y básicamente, las verificaciones, si quieres saberlo, tardaron 0.04 milisegundos, esas dos condiciones si ahí.
Vale, sigamos. Luego hacemos la parte de flash, get-flash. que de nuevo, es solo un... Si vamos al cuerpo, es solo una consulta de Prisma. Nada sofisticado, automáticamente instrumentado y ahí vamos, flashcards, fine. Primero eso tardó unos 80 milisegundos, ¿verdad? Eso es lo que tardó Prisma en devolvernos esas tarjetas al back-end desde la database. Lo mismo sucede aquí. Dame un nuevo span, crea un nuevo span, comprueba si se encuentra la parte flash o comprueba si los data están bien o si pertenece a este usuario, etc. De lo contrario, simplemente termínalo si todo está bien y luego haz las actualizaciones reales. De nuevo, automáticamente instrumentado y ahí está este pen aquí que tarda 756 milisegundos. Al final nosotros simplemente cerramos la respuesta, establecemos el estado, traemos de vuelta los métodos actualizados, lo siento, las tarjetas actualizadas de vuelta al cliente, pero podrías notar que en realidad no estamos llamando al finish a la transacción. Eso es porque no la creamos.
Comments