Pero lo que sucede es que esas opciones, en primer lugar cuando te adentras en configuraciones más complejas, esas opciones son limitadas. Y lo segundo es que no solo son limitadas, si no están actualizadas, manteniendo todo actualizado, entonces estamos atrapados con dependencias actualizadas y no podemos actualizarlas nosotros mismos. También suelen envolver, los marcos actuales envuelven todas las tuberías de solicitud. Entonces eso significa que se vuelve mucho más difícil, necesitamos diferentes, como todo tipo de parches y todo tipo de paquetes diferentes de npm si queremos implementar en diferentes entornos que no sean de nodo regular. Si queremos usar Festify, necesitamos algo más. Si queremos usar Core, queremos algo más. Si necesitamos implementar AWS Lambda, necesitamos algo más. Si queremos implementar en los trabajadores de Cloudflare, no estoy seguro si es posible. Y se vuelve muy difícil, algunas personas lo mencionaron. Y es muy difícil de personalizar. Y otra cosa, por cierto, es solo mi opinión, no es solo, no sé. Quiero decir, creo que no es por error. Quiero decir, al final del día, estos marcos tienen un objetivo para que uses los productos de la empresa. Entonces eso significa que la flexibilidad no está en su interés.
Entonces lo que hemos hecho, y nos encontramos con esto mucho porque en The Guild gradualmente, construimos soluciones para las necesidades de nuestros clientes y gradualmente construimos más y más soluciones que no comenzaron desde la construcción de todo el ecosistema. Comenzamos desde cosas muy simples, pero cada vez faltaban más cosas. Y hace un poco más de un año llegamos al punto en el que el marco actual, los marcos de servidor simplemente no eran suficientes para nosotros. Intentamos contribuir estas ideas a, por cierto, Apollo Server y otros, y simplemente, no estaban allí, no eran lo suficientemente flexibles y no fusionaron las PR. Entonces lo que hemos hecho es ir al tablero y decir, tal vez veamos lo que GraphQLJS nos está dando, básicamente nos está dando un par de funciones, analizar, validar, ejecutar y suscribir. Esas son las funciones principales de GraphQLJS. ¿Qué tal si pudiéramos enganchar, construir aros antes y después de cada una de estas fases? Entonces podrías personalizarlo completamente con complementos, pero aún así expondríamos la misma API externamente. Entonces todo seguiría funcionando, y aún puedes hacer todo lo que has hecho antes, pero ahora tienes un sistema de complementos muy poderoso que podría cambiar cualquier cosa. Cosas que hasta hoy no eran posibles, incluso en GraphQLJS no sería posible. Y puedes usar cualquier esquema, puedes usar herramientas de GraphQL, puedes usar geográficos y cualquier otra cosa. Y lo más importante es que, toda la tubería de solicitud está completamente fuera de esta cosa. Recuerda las primeras diapositivas que te mostré, lo que realmente hace GraphQLJS, es solo una función. Esa función no le importa dónde la ejecutes, y no le importa qué tipo de protocolo de comunicación tengas. Entonces, ¿por qué necesitas que todo esté envuelto en una sola cosa? Maneja el HTTP con los marcos que son los mejores en el manejo de HTTP, como Festify, Koa y Express. Luego, tal vez, ya sabes, si vas a entornos de servicio, usa las herramientas que recomendaron que funcionan para ellos, y luego ejecuta GraphQL. ¿Por qué necesitas que todas estas cosas se fusionen? Entonces eso es Envelope. Envelope es el sistema de complementos para GraphQL. Y es realmente genial, porque lo que puedes ver aquí es que con cuatro líneas de código como usuario, acabo de crear un servidor muy extremadamente poderoso. Use schema es solo, estoy trayendo el esquema. Pero luego el análisis, el análisis de consultas, agregué una caché de análisis. Me enganché en el análisis de, este complemento es sofisticado internamente, pero no necesitaste escribirlo. Este complemento se engancha en la fase de análisis de GraphQL.js y luego lo almacena en caché para cada consulta. Lo mismo hace para la validación, sabes, validé una consulta una vez, ¿por qué necesito validarla una y otra vez? Y utiliza un JIT de GraphQL. Si no sabes qué es JIT de GraphQL, es una forma más eficiente de ejecutar y GraphQL, solo te mostraré la biblioteca. Está creado por Zelando. Tienen benchmarks allí que muestran cuán más rápido es esto en comparación con GraphQL.js. Sí, esto es GraphQL.js, como dije, comenzando en prospección, veamos algunos resolutores, muchos resolutores. Sí, ves como este GraphQL.js, hizo 16,000 operaciones por segundo, GraphQLjit, 178, ¿de acuerdo? Entonces, con Envelope, no necesitas saber todos estos trucos y cosas, solo necesitas instalar el complemento y eso es todo. Y con esos cuatro complementos, obtienes un servidor GraphQL completo y extremadamente eficiente, así de simple. Y, pero cuando quieres recrear un complemento, obtienes una API muy poderosa para hacer lo que quieras. Y creamos un centro de complementos, donde puedes explorar complementos para todo lo que necesitas. Como, ya sabes, vamos a Envelope. Si vas al sitio web de The Guild, también lo pondré en el chat, no sé, tal vez ya lo puse. Entonces, voy al sitio web de The Guild, miro aquí todas las diferentes herramientas, y hago clic en Envelope. Así es el sitio web de Envelope. Lo revisaré en un segundo. Explica todo lo que acabo de decir. Pero hay un centro de complementos. Y aquí, ya sabes, lo que puedes ver aquí, puedes ver complementos para trazado, ¿verdad? Entonces, si usas Sentry, o Opent Elementary, o, ya sabes, New Relic, lo que quieras, puedes simplemente enganchar, porque nos estamos enganchando en, es una línea de código, porque nos estamos enganchando en la fase de ejecución real de GraphQL. Entonces, el trazado que obtienes aquí es extremadamente poderoso. Ya sabes, incluso Datadog, y el trazado de Apollo también. Como, parte de las cosas con las que nos llevamos bien en Prometheus, nos llevamos bien con todo. Entonces, podrías usar Apollo Server, incluso, y usar esto. Creo que debería usar Envelope, pero, ya sabes, podrías usar Apollo Studio, por ejemplo, y aún así funcionaría. Por cierto, Envelope también puede ser la puerta de enlace para Apollo Federation, porque con la cosa de usar esquema, déjame mostrarte aquí, hagamos Federation. Ves, puedes usar Apollo Federation, para que puedas obtener, Apollo, por lo general, cuando las personas usan Apollo Federation, usan Apollo Gateway. Pero, con Envelope, en realidad podríamos usar eso, y ejecutar eso en su lugar. No solo usamos Apollo Federation, sino que también podríamos usar todos los diferentes complementos de todo el ecosistema. Es una mejor manera, en realidad, en mi opinión, de usar Apollo Federation, si lo estás usando. Hay más cosas, por supuesto, aquí, como cosas de seguridad de las que hablaremos pronto, autenticación, autorización, todo tipo de cosas así. Sí, y por supuesto, almacenamiento en caché, que es, ¿alguien aquí ha oído hablar de Graph CDN? Sí, no puedo ver lo que la gente está diciendo. Sí, escuché a Max Toiber. Sí. Entonces es realmente genial, ¿verdad? Como él dice, oh, puedes almacenar en caché en todo y todo eso. No quiero arruinar la fiesta, pero si solo lees este artículo, obtienes todo lo que Graph CDN te ofrece, pero de código abierto, solo para que lo sepas. Como todo.
Comments