Hola! Mi nombre es Gurleen, y soy una pasante de ingeniería de software en Linode. Estudio Ciencias de la Computación y Emprendimiento en la Universidad Drexel en Filadelfia, Pennsylvania. Durante los últimos cinco meses, he tenido la oportunidad de ser el primer interno en la Linode, trabajando junto al equipo de la API.
La misión de Linode de hacer la computación en nube simple, asequible y accesible para todos está cerca y es muy querida para mi corazón. Empecé con Linode en el octavo grado para hacer girar un servidor Minecraft (que, por cierto, está disponible como una aplicación One-Click fácil de usar), y hoy en día uso Linode para alojar grandes aplicaciones. Desde el comienzo de mi pasantía en marzo, sentí que era importante continuar esa misión y llevar la nube a una nueva generación de tecnólogos.
Durante mi tiempo en Linode, he tenido la oportunidad de trabajar en proyectos tanto internos como de cara al cliente:
Mejorando los tiempos de respuesta del API
APIv4 es la columna vertebral de nuestra oferta de productos. Impulsa nuestro Cloud Manager y permite a nuestros clientes tener acceso programado a todos los productos y servicios de Linode. Este año, nos hemos centrado mucho en acelerar la API para servir mejor a nuestros clientes, especialmente a aquellos que se conectan desde el otro lado del mundo.
Antes de asumir esta tarea, nuestros tiempos de respuesta rondaban los 150ms. Eso ya es rápido, pero aún así queríamos exprimir un poco más de rendimiento.
Como recién llegado a este gran proyecto, podría sumergirme con un ojo más crítico. Queríamos encontrar optimizaciones que nos permitieran ahorrar en todos nuestros puntos finales (de los cuales hay muchos). Empecé a pensar en qué operaciones se realizan en todas partes, y se me ocurrió: ¡el registro!
Parecía un poco exagerado al principio, pero tiene sentido cuando lo mides. Escribir en stdout, así como acceder a un archivo, es una operación síncrona en Python, y puede tardar entre 10 y 20ms dependiendo de la cantidad de texto escrito. Es una gran parte del tiempo que se dedica a una tarea que puede o no ser útil.
Exploré varias opciones, como el registro asíncrono, pero descubrí que reducir el nivel de registro sería lo más beneficioso. Nuestro entorno de desarrollo refleja los contenedores que usamos en la producción, así que desarrollé una prueba de estrés usando Locust y recogí datos de tiempo de respuesta. El mayor beneficio vino de cambiar el nivel de registro de DEBUG, nuestra anterior configuración de producción, a INFO. Este desarrollo por sí solo nos dio una reducción promedio de 15 milisegundos en la producción, ¡incluso con ~18k solicitudes por minuto!
La mejora de los tiempos de respuesta de la API fue una oportunidad increíble para hacer que la experiencia del cliente sea mejor para todos, especialmente para los de Europa y Asia.
Reuniendo las métricas de GitHub para los gerentes
Los Gerentes de Ingeniería de Software en Linode tienen la tarea de recolectar datos sobre la productividad de sus equipos. Utilizan las métricas de GitHub, como las relaciones públicas y los compromisos, para parte de esta información. Sin embargo, esto puede ser una tarea laboriosa, ya que tenemos reposiciones tanto en nuestro servidor empresarial GitHub como en proyectos de código abierto en GitHub como el Linode Cloud Manager . Mi gerente, Samir, me pidió si podía ayudar a acelerar la recopilación de datos.
Este proceso estaba listo para la automatización. Comencé explorando las ofertas de API de GitHub y descubrí que tanto GitHub público como GitHub Enterprise comparten el mismo esquema de API, lo que me facilita compartir la lógica para ambos casos. La funcionalidad de búsqueda me permitió obtener los números que necesitaba en sólo unas pocas llamadas a la API.
Construí una prueba de concepto en una semana que se puede usar como una herramienta de línea de comando. El siguiente paso fue proporcionar una interfaz web para que nuestros gerentes la usaran. Para el tamaño de este proyecto, utilicé Vue.js para hacer el trabajo. El resultado fue una pequeña aplicación autoalojada que puede tomar claves de API, listas de equipo y un rango de fechas, y convertirlos en números crudos para que los gerentes se muevan a herramientas como Google Sheets.
Los gerentes ya han ahorrado muchas horas en el seguimiento de estas métricas, y estoy seguro de que mi programa seguirá proporcionando valor incluso después de que mi pasantía haya terminado.
Traiga su propio certificado
Muchos clientes utilizan nuestro servicio de almacenamiento de objetos para alojar sitios web estáticos. De forma predeterminada, servimos un certificado SSL en el dominio linodeobjects.com que es de nuestra propiedad. Sin embargo, no había ningún mecanismo para que los usuarios sirvieran sus propios certificados si lo deseaban. Uno de mis mentores, Adam Mohammed, vino a mí con la idea de agregar esta funcionalidad. Como usuario de Object Storage, entendí el valor que esto traería a nuestros clientes, así que trabajé con él para desarrollar esta función.
Mi tarea era construir la interfaz de la API para soportar esta nueva funcionalidad. Construir una nueva funcionalidad me dio un recorrido por cada rincón del proyecto de la API. Como una gran aplicación web monolítica, hay muchas partes móviles que comprender. También llenó los vacíos de conocimiento que aún tenía sobre cómo nuestros sistemas se comunican y trabajan juntos.
Una gran parte de este proyecto se centró en la seguridad. Lidiar con los secretos del cliente no es una tarea fácil, y pasamos muchas horas planeando, discutiendo y probando cada eslabón de la cadena para asegurarnos de que estamos proporcionando un servicio seguro. Me dio una nueva perspectiva en el diseño de sistemas y me permitió ponerme en el lugar del usuario. Estoy emocionado de ver a los clientes usar y disfrutar de esta característica.
Este trabajo ya está completo. Ahora puedes subir un certificado y un par de claves privadas, y el Almacén de Objetos lo servirá cuando una solicitud llegue a tu cubo. Es así de fácil. Esta característica habla de nuestra misión de hacer simple la computación en la nube. Te damos las herramientas que necesitas para construir tu proyecto o negocio sin ninguno de los problemas.
Conclusión
Empecé en Linode en marzo, no sólo como el primer interno de ingeniería de la compañía, sino también como el primer empleado que inició a distancia debido a la pandemia. A pesar de esto, aprendí mucho más de lo que nunca imaginé que haría. Mi equipo y mi departamento me recibieron con los brazos abiertos y respondieron a preguntas que ni siquiera sabía que tenía. Fuimos capaces de sacar el máximo provecho de una situación extraña, porque la cultura de Linode se basa en apoyarse unos a otros. No podría haber pedido mejores personas con las que trabajar.
Como has visto, el trabajo que asumí no era "trabajo de interno". Estaba en proyectos de alto impacto, orientados al cliente con el objetivo de avanzar en la misión de la compañía. Más allá del conocimiento técnico, este trabajo me inculcó una mentalidad de ingeniería centrada en el cliente. Sólo puedo obtener estas habilidades fuera de la clase.
Estos últimos meses han sido emocionantes, desafiantes y gratificantes. Estoy muy agradecido a Linode por darme esta oportunidad, y no puedo esperar a ver a otros estudiantes en este papel.
Comentarios