Usando Slack para monitorear su aplicación

 

 

 

  • Patrones de diseño de interfaces inteligentes, vídeo de 10h + formación UX
  • Implemente rápidamente. Implementar inteligentemente

  • Índice
    1. Lecturas adicionales sobre SmashingMag:
  • Configurar holgura
    1. Seguimiento de registros
  • Sumérgete más profundo
    1. Supervisar excepciones y errores críticos en el back-end
    2. Monitorear las finanzas
    3. Supervisar el comportamiento del usuario en el front-end
    4. Monitorear tareas programadas
  • Aplique este concepto a su aplicación
    1. No trate todas las notificaciones por igual
    2. #Errores-críticos-del-servidor
    3. #Errores-de-servidor-no-críticos
    4. #Finanzas
    5. #Comportamiento-Usuario
    6. #Estadísticas de aplicación
  • Conclusión
    1. Obtenga una nueva perspectiva sobre el comportamiento del usuario y del servidor
    2. Reaccionar rápidamente cuando las cosas fallan
    3. Ofrezca un servicio al cliente excepcional
    4. La conexión del equipo con la aplicación lo hará más eficiente
    5. Las notificaciones y los canales pueden escalar con su aplicación
    6. La búsqueda es poderosa
  • Durante los últimos meses, he estado creando una aplicación de software como servicio (SaaS) y, durante todo el proceso de desarrollo, me he dado cuenta de lo poderosa que puede ser Slack (o el chat en equipo en general) para monitorear a los usuarios. y comportamiento de la aplicación. Después de un poco de integración, proporcionó una vista en tiempo real de nuestra aplicación que antes no existía, y ha sido tan invaluable que no pude evitar escribir este show-and-tell.

     

    Todo comenzó con una visita a una pequeña startup en Denver, Colorado. Durante mi visita, comencé a escuchar un “ding” sutil y encantador en la esquina de la oficina cada pocos minutos. Cuando fui a investigar este extraño ruido, encontré una campana de servicio conectada a una Raspberry Pi, con un pequeño martillo de metal conectado a la placa de circuito. Al final resultó que, el Pi estaba recibiendo mensajes del servidor del equipo y golpeaba el timbre con ese pequeño martillo cada vez que se registraba un nuevo cliente .

    Siempre pensé que era una gran motivación para el equipo y me hizo pensar en cómo podría usar el chat en equipo para lograr una experiencia similar y cómo podríamos analizar y visualizar datos de registro .

    Como ya estábamos usando Slack para el chat en equipo y porque tiene una API bellamente documentada , era una elección obvia para el experimento.

    Lecturas adicionales sobre SmashingMag:

    • Interfaces conversacionales: ¿Dónde estamos hoy? ¿A donde nos dirigimos?
    • Colaboración en equipo y cierre de brechas de eficiencia en el diseño responsivo
    • Lo que debe saber sobre el proceso de diseño de aplicaciones
    • A las carreras: cómo comenzar con los sprints de diseño

    Configurar holgura

    Primero, tuvimos que obtener una "URL de webhook" de Slack para poder publicar mensajes mediante programación en nuestro canal de Slack.

    Ahora que teníamos una URL de webhook, era hora de integrar los mensajes de Slack en nuestra aplicación Node.js. Para hacer esto, encontré un útil módulo de Node.js llamado node-slack .

    Primero, instalamos el módulo Node.js:

    npm install node-slack --save

    Ahora, podemos enviar mensajes de Slack a nuestro canal de elección con unas pocas líneas de código.

     

    // dependency setupvar Slack = require('node-slack');var hook_url = 'hook_url_goes_here';var slack = new Slack(hook_url);// send a test Slack messageslack.send({ text: ':rocket: Nice job, I'm all set up!', channel: '#test', username: 'MyApp Bot'});

    (Puede encontrar paquetes de integración de Slack similares para Ruby , Python y casi cualquier otro lenguaje).

    Cuando se ejecutó, este código produjo el siguiente mensaje en nuestro canal #test de Slack:

    El código anterior es mínimo, pero es específico de la API de Slack y el módulo node-slack. No quería quedar atrapado en ningún servicio de mensajería en particular, así que creé una función genérica del módulo Node.js para ejecutar el código específico del servicio:

    // Messenger.js// dependency setupvar hook_url = my_hook_url;var Slack = require('node-slack');var slack = new Slack(hook_url);module.exports = { sendMessage: function(message, channel, username) { if (!message){ console.log('Error: No message sent. You must define a message.') } else { // set defaults if username or channel is not passed in var channel = (typeof channel !== 'undefined') ? channel : "#general"; var username = (typeof username !== 'undefined') ? username : "MyApp"; // send the Slack message slack.send({ text: message, channel: channel, username: username }); return; } }};

    Ahora podemos usar este módulo en cualquier parte de la aplicación con dos líneas de código, y si alguna vez decidimos enviar mensajes a otro servicio en el futuro, podemos intercambiarlo fácilmente en Messenger.js.

    var messenger = require('./utilities/messenger');messenger.sendMessage(':rocket: Nice job, I'm all set up!', '#test');

    Ahora que teníamos configurados los conceptos básicos, estábamos listos para comenzar a enviar mensajes desde la aplicación.

    Seguimiento de registros

    La primera orden del día era lograr la paridad de campanas de servicio. Localicé la devolución de llamada exitosa de la función de registro de usuario y agregué este código:

    messenger.sendMessage('New user registration! ' + user.email);

    Ahora, cuando alguien se registró, recibiríamos este mensaje:

    ¡Incluso suena! Este fue un buen comienzo y me dio esa satisfactoria sensación de campana de servicio, pero me dio sed de más.

    Sumérgete más profundo

    A medida que mi curiosidad crecía con cada sonido, comencé a preguntarme cosas como: ¿Qué pasaría si no se pudiera crear un nuevo usuario? ¿Qué pasa si un usuario se registró, inició sesión pero no completó el proceso de incorporación? ¿Cuál es el resultado de nuestras tareas programadas? Ahora que se habían sentado las bases, responder a estas preguntas era pan comido.

    Supervisar excepciones y errores críticos en el back-end

    Uno de los errores más importantes que queríamos saber era si no se podía crear un nuevo usuario. Todo lo que teníamos que hacer era encontrar la devolución de llamada de error en la función de registro de usuario y agregar este código:

    messenger.sendMessage(':x: Error While adding a new user ' + formData.email + ' to the DB. Registration aborted!' + error.code + ' ' + error.message);

    Ahora sabíamos instantáneamente cuándo fallaron los registros, por qué fallaron y, lo que es más importante, para quién fallaron:

     

    Había todo tipo de lugares interesantes donde podíamos enviar mensajes (prácticamente en cualquier lugar con una devolución de llamada de error). Uno de esos lugares era esta función genérica de error general:

    app.use(function(err, req, res, next) { var message = ':x: Generic Server Error! '+ err + 'n Request: n' + req.protocol + '://' + req.get('host') + req.originalUrl + 'n' + JSON.stringify(req.headers) + 'Request Payload:n' + JSON.stringify(req.body); messenger.sendMessage(message, '#server-errors'); res.status(err.status || 500); res.json({'error': true });});

    Este código nos ayudó a descubrir cómo se ve una solicitud para excepciones no controladas. Al observar la solicitud que desencadenó estos errores, pudimos rastrear las causas fundamentales y corregirlas hasta que no hubo más errores genéricos. calculadora de dias fertiles

    Con todas estas notificaciones de error implementadas, ahora teníamos la tranquilidad de saber que si algo importante fallaba en la aplicación, lo sabríamos al instante.

    Monitorear las finanzas

    A continuación, quería enviar una notificación cuando ocurra un evento financiero en la aplicación. Debido a que nuestro producto SaaS se integra con Stripe, creamos un punto final de webhook al que Stripe hace ping cuando las personas actualizan su plan, bajan su plan, agregan información de pago, cambian la información de pago y muchos otros eventos relacionados con los pagos de suscripción, todos los cuales se envían a Flojo:

    Supervisar el comportamiento del usuario en el front-end

    Hubo algunos casos en el front-end en los que queríamos comprender el comportamiento del usuario de maneras que el back-end no podía proporcionar, por lo que creamos un punto final para enviar mensajes de Slack directamente desde el front-end. Debido a que la URL de nuestro webhook de Slack está protegida detrás de un POSTpunto final, era un riesgo mínimo exponer el envío de mensajes de Slack a nuestro equipo a través de un punto final.

    Con el punto final implementado, ahora podemos enviar mensajes de Slack con una simple $http.postllamada a AngularJS:

    // send Slack notification from the front endvar message = ":warning: Slack disconnected by " + $scope.user.username;$http.post('/endpoint', message);

    Esto nos ayuda a responder preguntas importantes sobre el negocio: ¿La gente se registra y agrega un nombre de dominio? ¿No es así? Si alguien lo es, ¿es para un dominio de muy alto perfil con cuyo propietario nos gustaría comunicarnos personalmente poco después de que lo hayan agregado? Ahora podemos aprovechar esto:

    En un momento, vimos un patrón de personas que agregaban un dominio, lo eliminaban y luego lo leían en unos pocos minutos, lo que nos indicó un error oscuro que probablemente nunca hubiéramos descubierto de otra manera.

    También hay señales de que un usuario no está satisfecho con el servicio y es valioso conocerlas. ¿Alguien eliminó un nombre de dominio? ¿Desconectaron Slack?

    Estos comentarios nos brindan la oportunidad de comunicarnos de manera proactiva y ofrecer una excelente atención al cliente cuando más importa.

    Monitorear tareas programadas

    Una de las cosas más interesantes que ver en Slack es el resultado de las tareas programadas. Nuestro producto SaaS ejecuta tareas para notificar a las personas sobre el rendimiento de su sitio web (nuestro servicio principal), enviar correos electrónicos transaccionales, limpiar la base de datos y algunas otras cosas. El despido y los resultados de estas tareas envían un mensaje a Slack:

     

    Ahora sabemos cuándo se activa una función de tarea, cuál es el resultado de esa función (en este caso, envía varios correos electrónicos) y si falla por algún motivo.

    Aplique este concepto a su aplicación

    El estudio de caso anterior es un ejemplo práctico de lo que hicimos para monitorear la aplicación y el servicio GoFaster.io . Ha funcionado fantástico para nosotros, pero ¿cómo se ampliaría este concepto a aplicaciones grandes que envían cientos, tal vez incluso miles, de mensajes por día? Como puedes imaginar, esto rápidamente se convertiría en una situación de “Slackbot que gritó como el lobo” y el valor se perdería en el ruido.

    No trate todas las notificaciones por igual

    Algunas notificaciones son más importantes que otras y la importancia variará según el empleado y su función. Por ejemplo, es posible que la gente de desarrollo de software y operaciones de TI (DevOps) solo se preocupe por los mensajes del servidor, mientras que la gente de servicio al cliente se preocuparía más por lo que sucede con los usuarios.

    Por suerte, Slack tiene una gran solución a este problema: los canales .

    Cualquiera puede crear canales, hacerlos públicos o privados para su organización y compartirlos con cualquier persona. Una vez que te hayas suscrito a un canal, puedes controlar cómo te alertan las actividades de ese canal. ¿Suena un nuevo mensaje en el canal cada vez? ¿También alerta a tu teléfono? ¿Solo pone en negrita el canal? Todo esto puede ser controlado para cada canal por cada miembro del equipo para adaptarlo a sus necesidades.

    Al poner esta idea en práctica, así es como una organización más grande podría organizar notificaciones basadas en monitores en Slack a través de canales:

    #Errores-críticos-del-servidor

    • Qué: errores de registro, errores de inicio de sesión, errores de lectura y escritura de bases de datos
    • Quién: administradores de sistemas, DevOps, CTO, CEO, desarrolladores
    • Configuración de alerta: Notifique siempre por teléfono o computadora de escritorio.

    #Errores-de-servidor-no-críticos

    • Qué: errores 404, errores generales del servidor, etc.
    • Quién: DevOps, desarrolladores
    • Configuración de alerta: ponga en negrita pero no suene.

    #Finanzas

    • Qué: transacciones de pago, transacciones fallidas, actualizaciones, rebajas, tarjetas vencidas
    • Quién: director financiero, director ejecutivo
    • Configuración de alerta: haz que llueva.

    #Comportamiento-Usuario

    • Qué: registro, proceso de incorporación, actualización del tipo de plan, agregar información, eliminar información, eliminar cuenta
    • Quién: atención al cliente, administradores de redes sociales, desarrolladores, director ejecutivo
    • Configuración de alerta: Notifique siempre por teléfono o computadora de escritorio.

    #Estadísticas de aplicación

    • Qué: resultados de tareas programadas, limpieza, estadísticas de correo electrónico transaccional, recuento de usuarios y métricas de crecimiento.
    • Quién: especialistas en marketing por correo electrónico, administradores de sistemas, cualquier persona interesada.
    • Configuración de alerta: ponga en negrita pero no suene.

    Conclusión

    Después de desarrollar esta idea durante unos meses y digerir los resultados, descubrimos que es una extensión invaluable de nuestra aplicación. Sin él, nos sentiríamos fuera de contacto con lo que sucede con el servicio y tendríamos que buscar manualmente la misma información a través del panel, o las consultas a la base de datos serían una tarea ardua.

     

    Cada aplicación y base de usuarios es diferente, lo que significa que este concepto no puede integrarse en un servicio y ofrecerse a las masas. Para que sea valioso, requiere una pequeña inversión inicial de tiempo y recursos para integrarse profundamente en su aplicación. Una vez que esté en funcionamiento, la inversión se amortizará en la forma de la conexión de su equipo con su aplicación y sus usuarios.

    En conclusión, aquí hay un resumen de los beneficios de usar el chat en equipo para monitorear su aplicación:

    Obtenga una nueva perspectiva sobre el comportamiento del usuario y del servidor

    Tener una transmisión en vivo en tiempo real de las métricas que más le importan a usted y a su empresa lo mantendrá estrechamente conectado con lo que hacen los usuarios y cómo responde el servidor.

    Reaccionar rápidamente cuando las cosas fallan

    Podrás reaccionar más rápido que nunca. Usted sabrá acerca de las fallas al mismo tiempo que lo saben sus usuarios. Puede reaccionar inmediatamente ante ese punto final defectuoso, la pérdida de conexión a la base de datos o un ataque DDoS.

    Ofrezca un servicio al cliente excepcional

    Comuníquese con ese cliente que acaba de desactivar su cuenta para ofrecerle un descuento, agradecer personalmente a los clientes que han actualizado o simplemente hacer un seguimiento con las personas para comprender sus intenciones. Cuando sepa qué están haciendo los usuarios y cuándo lo hacen, podrá descubrir fácilmente por qué.

    La conexión del equipo con la aplicación lo hará más eficiente

    Cuando su equipo está en sintonía con la aplicación, la colaboración puede centrarse en resolver problemas a medida que surgen, en lugar de intentar descubrir qué sucedió, dónde sucedió o a quién le pasó.

    Las notificaciones y los canales pueden escalar con su aplicación

    A medida que su aplicación y su equipo crezcan, también lo harán sus necesidades de monitoreo. Slack hace un gran trabajo brindándote todos los controles de permisos y notificaciones necesarios para garantizar que la información correcta llegue a las personas adecuadas.

    La búsqueda es poderosa

    Al registrar un nombre de usuario en sus mensajes de Slack, puede realizar un seguimiento de cada error, mensaje de éxito o evento que un usuario haya generado al interactuar con su aplicación simplemente buscando su nombre de usuario en Slack. Solo debes saber que, con una cuenta gratuita de Slack, esto está limitado a los últimos 10.000 mensajes.

    Espero que este concepto le haya resultado útil y me encantaría escuchar otras historias de equipos que hayan implementado formas similares de monitoreo, o simplemente otras formas interesantes de usarlo y desarrollarlo.

    (rb, vf, yk, al, il)Explora más en

    • Codificación
    • javascript
    • Técnicas
    • Aplicaciones
    • Nodo.js





    Tal vez te puede interesar:

    1. ¿Deberían abrirse los enlaces en ventanas nuevas?
    2. 24 excelentes tutoriales de AJAX
    3. 70 técnicas nuevas y útiles de AJAX y JavaScript
    4. Más de 45 excelentes recursos y repositorios de fragmentos de código

    Usando Slack para monitorear su aplicación

    Usando Slack para monitorear su aplicación

    Patrones de diseño de interfaces inteligentes, vídeo de 10h + formación UX Implemente rápidamente. Implementar inteligentemente Índice

    programar

    es

    https://aprendeprogramando.es/static/images/programar-usando-slack-para-monitorear-su-aplicacion-969-0.jpg

    2024-05-20

     

    Usando Slack para monitorear su aplicación
    Usando Slack para monitorear su aplicación

    Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente

     

     

    Top 20