jueves, julio 03, 2008

RPC: ¿Correcto o Conveniente?

jueves, julio 03, 2008 por Martín



Pincha aquí, pincha allí, he llegado a un excepcional artículo que publica Steve Vinoski en el número de Julio/Agosto de la revista Internet Computing del IEEE. El artículo se titula Convenience over Correctness y por suerte está disponible en PDF. Este artículo es de lo mejorcito que he leido desde hace bastante tiempo, y probablemente lo mejor que ha caido este año en mis manos.

Steve Vinoski ha sido una de las referencias en cuanto a computación distribuida, muy conocido en el mundo de CORBA, escribió una de las biblias de esta plataforma. Sin embargo de un tiempo para aquí Steve reniega de todo lo que tenga que ver con RPC y se ha convertido en un acérrimo defensor de los lenguajes dinámicos y también de erlang.

La verdad es que me pongo a leer el artículo, y no sabría que quotes pegar en este post. Son tantas las verdades escritas que da pena quedarse sólo con una frase. Quizás lo fácil sea escoger la que viene resaltada en el artículo mismo:

We have a general-purpose imperative programming-language hammer, so we treat distributed computing as just another nail to bend to fit the programming models.


Steve critica enormemente en el artículo a los lenguajes tradicionales y la comoditización que se ha hecho de RPC, un paradigma que funciona enormemente bien en redes locales pero que a la hora de moverse a Internet se olvida de factores tan importantes como la latencia, la tolerancia a errores o la escalabilidad del medio de transporte, entre otros, y que asume que todo funcionará bien y sin ningún tipo de fallos.

La carencia de constructores en los lenguajes tradicionales para especificar todos estos aspectos es una de las críticas que más resalta Steve, abogando por paradigmas como REST+HTTP que permiten especificar aspectos como la cacheabilidad de un servicio de manera sencilla.

Al mismo tiempo otro de los centros gravitacionales del artículo es la computación distribuida y la necesidad de evolucionar hacia lenguajes de programación como erlang que huyen de la inocencia del modelo RPC y que al tiempo que ofrecen constructores tan simples como "Pid ! Message" (envía el mensaje al proceso especificado por el Pid) ofrecen todas las ventajas asociadas con la computación asíncrona y distribuida.

La discusión sobre el artículo en su blog resulta también extremadamente interesante y además hay varios enlaces a otras columnas similares del mismo autor.

Por cierto, al que le interese puede ver también entrevista de InfoQ.

comments

1 Respuestas a "RPC: ¿Correcto o Conveniente?"
Daniel dijo...
17:41

En muchas cosas estoy bastante de acuerdo, y de hecho, a riesgo de que me quemen en la hoguera, la discusión a mi me suena mucho al mismo tema que es el mapeo automatico de objetos a BDD, ya que la razón principal es la conveniencia para los programadores.

Pero a partir de cierto punto creo que se va a "demasiado radical", para mi gusto.

En cuanto a uso de IDEs y de, por ejemplo, C++ vs Java, creo que se le notan los años, como el mismo admite, pero nada que reprochar, son opiniones "laterales" ;).