Yo diría que Ruby on Rails es una bestia muy escalable por derecho propio. Se está engañando a mucha gente con el modelo de microservicios, pero en el caso de Cookpad (jp) han escalado un producto LOC de medio millón y han mantenido un modelo monolítico.
Hay una charla fantástica sobre escalar el monolito Rails más grande del mundo:
De todos modos, no tengo mucha experiencia con Go, pero sé bastante sobre Erlang. Ir parece estar donde se están moviendo algunos de los zombis más francos de Rails, pero Erlang tiene una larga y digna historia de concurrencia y escalabilidad, pero no en el mismo sentido que lo que podrías estar pensando. Digamos que desea construir un sistema que maneje datos sensibles al tiempo en todo el mundo, y la latencia es crítica para la misión. Una red telefónica es el ejemplo pedagógico, y puede imaginar las consecuencias de una pausa de GC o algo así en medio de una llamada. Por lo tanto, Erlang usa lo que se llama el modelo de actor, en el que la ejecución se controla estrictamente dentro de pequeños módulos, llamados actores. Un actor tiene un propósito y no comparte memoria con otros actores. Puede enviar y recibir mensajes a otros actores de la manera que desee, y la estructura organizativa de una aplicación Erlang gira en torno al modelo de comunicación de los actores que utiliza.
- ¿Cómo almacena grandes cantidades de datos de impresión / registro en MySQL sin desactivar el servidor MySQL?
- ¿Música o desarrollo web?
- Cómo recuperar datos de una base de datos utilizando un servlet
- ¿Por qué Dropbox decidió usar rutas de archivo en lugar de UUID como el identificador único para los archivos en su API REST?
- ¿Angular 2.0 tendrá alguna de las capacidades DI de Angular 1.0?
No he tocado a Scala, pero la plataforma Akka es un modelo de actor como Erlang.
Ruby tiene celuloide para imitar actores y agente para imitar CSp, como Go.
Aquí es donde Go es diferente, en el uso de CSP para concurrencia. También es la razón por la cual las personas se confunden cuando comparan modelos de concurrencia entre idiomas, porque el término ‘concurrencia’ significa cosas diferentes para diferentes personas, según el modelo en el que estén pensando.
Entonces CSP está comunicando procesos secuenciales, y el concepto tiene sus raíces en Process / Pi Calculus. Los términos y nombres no importan. No soy un experto en Go, como ya he mencionado, pero la esencia del modelo es que cuando describe un modelo de concurrencia en CSP, esencialmente está escribiendo una función matemática. El cálculo de pi está destinado a garantizar que el código que escriba pueda funcionar independientemente de otro código, mientras pasa mensajes de aquí para allá. Similar a un modelo de actor, así es principalmente cómo se comunica el estado a través del programa a través de la transmisión de mensajes.
Un Golang-er sabrá más al respecto.
De todos modos, recomendaría usar Celuloid o Agent, ya que ya conoce Ruby (como está implícito) porque esas gemas abarcan la idea principal de cada modelo de concurrencia de los idiomas que podría estar aprendiendo a continuación.
Si va a aprender un nuevo modelo, es mejor que lo aprenda primero en un ambiente cómodo, de esa manera cuando comience a escribir Go o Erlang o Scala o lo que quiera, el resto del trabajo es solo recoger la sintaxis. EZPZ.
De todos modos, espero que esto ayude.