JSON-RPC es un protocolo de llamada a procedimiento remoto (RPC) que define un formato para la comunicación entre un cliente y un servidor. Utiliza JSON (JavaScript Object Notation) para codificar los datos, lo que lo hace fácilmente legible por humanos y compatible con una amplia gama de lenguajes de programación. El protocolo es sin estado y se basa en un modelo de solicitud/respuesta, donde un cliente envía una solicitud JSON que incluye el nombre del método a invocar y sus parámetros, y el servidor responde con un objeto JSON que contiene el resultado o un error. Soporta notificaciones (solicitudes sin respuesta esperada) y llamadas por lotes (múltiples solicitudes en una sola transacción).

En el mundo real, JSON-RPC se utiliza en una variedad de sistemas donde la simplicidad y la interoperabilidad son clave. Un ejemplo prominente es en el ecosistema de las criptomonedas y blockchain, donde muchas APIs de nodos (como Ethereum, Bitcoin y otras redes compatibles con EVM) exponen sus funcionalidades a través de JSON-RPC para permitir a los clientes interactuar con la cadena de bloques. También es común en aplicaciones de escritorio y móviles para comunicarse con servicios backend, en herramientas de desarrollo para la comunicación entre procesos (IPC) o en sistemas de automatización. Proyectos como OpenStack y algunas herramientas de desarrollo de IDEs también han utilizado JSON-RPC para sus interfaces programáticas.

Para un arquitecto, JSON-RPC importa por su simplicidad y bajo overhead, lo que lo convierte en una opción atractiva para microservicios y APIs internas donde la interoperabilidad con múltiples lenguajes es crucial y no se requiere la complejidad de protocolos como gRPC o SOAP. Su facilidad de implementación y depuración, gracias al uso de JSON, reduce la curva de aprendizaje y acelera el desarrollo. Sin embargo, carece de características avanzadas como la definición de esquemas (IDL) y la generación de código automático que ofrecen gRPC o Apache Thrift, lo que puede llevar a una mayor propensión a errores en sistemas grandes y complejos sin una disciplina de documentación rigurosa. La elección de JSON-RPC implica un trade-off entre simplicidad y la necesidad de herramientas de gobernanza de API más robustas para mantener la coherencia en sistemas distribuidos a gran escala.