Ahora, en el protobuf, puedes especificar que algunos campos son opcionales. Por lo tanto, no tienen que estar allí. Y de nuevo, puedes hacer tu propia codificación y decodificación, pero eso podría tener otras implicaciones en la eficiencia y el rendimiento de tu software.
Lo bueno de gRPC es que en realidad tiene un mecanismo de descubrimiento incorporado que permite a los clientes aprender sobre los payloads de mensajes de la API, así como los diferentes tipos de instrucciones que se pueden llamar. Ahora, normalmente esta introspección se desactiva en producción, pero mientras estás en modo de desarrollo o en modo de preparación, podrías activar esta introspección y ser capaz de recopilar datos del servidor en cuanto a lo que es posible, ¿qué métodos puedo llamar? ¿Cuáles son estos formatos de datos? ¿Cómo envío estos datos?
Otra pregunta es, ¿podríamos simplemente implementar algo como una arquitectura orientada a eventos usando REST? Más o menos, pero seguiría siendo un ciclo de solicitud y respuesta único debido a la versión HTTP uno y simular un flujo de datos entrantes es técnicamente posible. Así es como hemos gestionado el contenido en streaming durante algunas décadas, pero tiende a ser más construido en UDP para mecanismos de streaming para cosas como video y audio. Parte de la versión HTTP dos es que tus datos están cifrados por defecto. Con HTTP uno, tienes que construir tu propio cifrado o confiar en cosas como TLS. Así que podrías añadir otras capas de cifrado a esos datos también. De hecho, animamos a todos, por favor, cifren sus datos.
Hasta ahora, sin embargo, construir todas estas cosas y tener en cuenta todas estas cosas, has aumentado la complejidad de tu diseño de API bastante. Has hecho tu despliegue y tu gestión mucho más complejos, y probablemente has hecho tu infraestructura más compleja. Entonces, ¿realmente vale la pena? Elegir una arquitectura de API es un equilibrio delicado de rendimiento. Pero, ¿qué significa realmente el rendimiento? Cuando pensamos en la evolución entre la versión HTTP 1 y la versión 2 y las mejoras que se hicieron allí con las conexiones de larga duración y los formatos binarios y demás, y mirando hacia adelante a lo que va a ser el rendimiento de la versión HTTP 3, en realidad va a ser bastante interesante.
Así que hablemos por un momento de la versión HTTP 3. En realidad, se basa en un nuevo protocolo llamado QUIC, Q-U-I-C, y solo se construye en UDP. No se va a construir en TCP. Esto va a reducir parte del ruido de la comunicación, porque para cada paquete enviado, no tienes que esperar a que vuelva una respuesta. Va a tener una nueva gestión de sesiones incorporada para imitar las llamadas sin estado mientras sigue conservando los métodos HTTP, los encabezados y los sistemas de códigos de estado que hemos estado usando durante bastante tiempo ahora. De hecho, ha sido soportado ahora desde 2020 y 2021 en la mayoría de los navegadores principales. De hecho, la mayoría de las bibliotecas de clientes ya están soportando completamente HTTP 3. La última vez que lo comprobé, la única que no lo estaba soportando era la biblioteca Curl, que sigue siendo una biblioteca bastante importante.
Así que cuando se trata de rendimiento, lo otro en lo que pensar es ¿qué tan rápido puede el equipo trabajar en esto? Así que tengo algunas notas en esta diapositiva que básicamente dicen que soy un fan de los equipos que aprenden algo nuevo, pero si tu empresa necesita sacar algo rápidamente, ¿son estas tecnologías algo que tu equipo ya conoce? ¿O tu equipo va a tener que aprender esto? ¿Tu equipo de DevOps ya sabe cómo construir este tipo de infraestructura para soportar HTTP 2 o HTTP 3? Así que cuando pensamos en rendimiento, a menudo pensamos en el rendimiento del software. Pero, ¿qué pasa con el rendimiento del equipo y la cantidad de tiempo que le lleva al equipo construir lo que necesita construir? ¿Esa infraestructura ya está en su lugar? ¿Ya saben cómo configurar estas cosas? ¿O hay un camino de migración más fácil para el rendimiento en lugar de una reescritura total en alguna nueva arquitectura? Así que todas estas son cosas muy interesantes en las que pensar cuando pensamos en diferentes tipos de arquitecturas de API. Cuando pensamos en la historia de REST, y pasamos a las API asíncronas y las API orientadas a eventos cuando hablamos de cosas como WebSockets y Webhooks, pero también considerando el rendimiento de cosas como gRPC. Así que espero que este fondo haya sido útil. Estoy feliz de responder a cualquier pregunta que tengas. Mi nombre de usuario en la mayoría de las plataformas sociales, incluyendo LinkedIn y Twitter es iandouglas736. Si quieres hacer más preguntas, el código QR que ves en esta diapositiva también te llevará a toda mi información de contacto. Así que gracias de nuevo a todos en Test.js por tenerme hoy, y no dudes en ponerte en contacto con preguntas. Gracias por tu tiempo.
Comments