Contenido del curso
gRPC
- 6

gRPC: qué lo hace más rápido que REST
08:35 min - 7

JSON vs Protobuf: cuándo usar cada uno
08:56 min - 8

Definir un StudentService con proto buffers en Go
04:27 min - 9

Implementación de Repositorios y gRPC en Go con PostgreSQL
11:59 min - 10

Criando o primeiro servidor gRPC em Go
12:50 min - 11

Prueba tu servidor gRPC con Postman
04:08 min - 12

Definiendo el servicio de test en gRPC
03:38 min - 13

Implementando servidor gRPC con PostgreSQL en Go
17:45 min - 14

Client streaming en gRPC con Go
16:53 min - 15

Implementación de Streaming del Servidor con gRPC y Protobufs
16:25 min - 16

Streaming del servidor con gRPC en Go
16:23 min - 17

Streaming bidireccional en gRPC con Go
16:04 min - 18

Prueba de streaming bidireccional con gRPC
04:55 min - 19

Implementando un cliente gRPC en Go
13:10 min - 20

Streaming bidireccional en gRPC con Go
12:16 min
Conclusión
Qué son los Protocol Buffers y cómo funcionan
Resumen
Los Protocol Buffers, conocidos como Protobuffers, son un formato de serialización de datos creado para hacer el intercambio de información más rápido y estructurado que JSON o XML. Si trabajas con microservicios o APIs en Go, entender cómo funcionan te ayuda a mover datos entre lenguajes distintos sin perder rendimiento.
¿Qué son los Protobuffers y para qué sirven?
Los Protobuffers son una forma de serializar datos siguiendo una estructura predefinida. La idea es parecida a un XML: tú sabes de antemano qué campos vas a encontrar, pero en lugar de viajar como texto plano, la información se transforma a un formato binario hexadecimal mucho más compacto.
¿Qué es serializar datos? Es convertir una estructura de información a un formato que se pueda transmitir o almacenar de forma eficiente, y que después se pueda reconstruir en el destino.
Esa serialización binaria es lo que diferencia a los Protobuffers de JSON. Mientras JSON viaja como texto, Protobuffers viaja como bytes optimizados, lo que reduce tamaño y acelera el proceso de leer y escribir esa data.
¿Cómo se define una estructura en un archivo .proto?
La definición vive en un archivo con extensión .proto. Ahí declaras los mensajes, que son las estructuras de datos que vas a intercambiar [01:00].
Un ejemplo sencillo sería un mensaje llamado Student con dos propiedades:
- Un string que sirve como
ID, asignado a la posición1. - Un string para el
nombre, asignado a la posición2.
Esos números no son arbitrarios. Cada campo lleva un número único y secuencial que indica la posición en la que será serializado. Esa numeración es la que permite al compilador reconstruir la data de forma ordenada y rápida.
proto message Student { string id = 1; string name = 2; }
¿Por qué los Protobuffers son más rápidos al deserializar?
Aquí viene lo interesante. Como la estructura ya está definida desde el archivo .proto, el proceso de deserialización (volver a transformar los bytes en un objeto usable) es mucho más rápido que con JSON, porque no hay que adivinar tipos ni recorrer texto.
Y esto importa mucho cuando trabajas con varios lenguajes. Python, JavaScript, PHP y Go manejan las estructuras de datos de forma distinta. Al recibir algo serializado con Protobuffers, cada lenguaje genera sus estructuras nativas de manera consistente y veloz [02:15].
¿Cuál es la diferencia entre Protobuffers y JSON? JSON es texto legible pero más lento y pesado. Protobuffers es binario, más compacto, y requiere un esquema previo, lo que lo hace ideal para comunicación entre servicios.
¿Cómo reutilizar Protobuffers entre archivos?
Una ventaja práctica es que puedes importar un archivo .proto dentro de otro. Si tienes student.proto, puedes traerlo a un test.proto y reutilizar todas sus definiciones [02:50].
Esto abre la puerta a:
- Crear librerías de Protobuffers especializadas en problemas específicos.
- Mantener una sola fuente de verdad para tus estructuras.
- Reutilizar código entre proyectos y equipos sin duplicar definiciones.
Esa flexibilidad convierte a Protobuffers en una herramienta muy cómoda cuando creces en complejidad.
¿Cómo se compila un Protobuffer a código Go?
Un archivo .proto por sí solo no hace nada. Necesitas un paso intermedio: la compilación. Para eso existe protoc, el compilador oficial de Protobuffers [03:30].
protoc toma tu archivo .proto y genera código nativo en el lenguaje que elijas, en este caso Go. Ese código generado contiene las structs, los métodos para serializar y los métodos para deserializar, todo listo para usar en tu proyecto.
¿Qué es protoc? Es el compilador de Protocol Buffers que transforma archivos
.protoen código fuente del lenguaje de tu elección, como Go, Python o JavaScript.
El flujo completo queda así:
- Defines tu estructura en un archivo
.proto. - Ejecutas
protocapuntando a ese archivo. - Obtienes código Go listo para importar y usar en tus servicios.
Con esa base ya puedes crear tu primer archivo de Protobuffer, compilarlo y empezar a moverlo entre servicios. ¿Qué estructura te gustaría modelar primero en tu proyecto?