Anuncios

Bienvenidos sean a este post, hoy continuaremos con la aplicacion notas.

Anuncios
Anuncios

Hasta el post anterior dejamos una aplicacion completa de notas para poder crear, ver, editar y borrar pero en una sola instancia de nuestra aplicacion. En la vida real puede llegar a correr con millones de usuarios y por lo tanto necesitaremos multiples instancias, lo cual implicara que necesitaremos mas servidores, balanceadores de carga, y muchas otras cosas en nuestra infraestructura y la parte central de esto es tener multiples instancias de la aplicacion corriendo al mismo tiempo para repartir la carga, vamos a trabajar en ello.

Anuncios

Antes de comenzar a trabajar necesitaremos el codigo que trabajamos hasta el post anterior, en caso de no tenerlo les dejo un link para descargar un archivo con todos los archivos de la aplicacion:

Anuncios

Extraigan el contenido en el ordenador y ya esta todo listo para trabajar, con esto realizado vamos a crear nuestras multiples instancias y para ello crearemos servidores con distintos puertos, si vamos al archivo app.mjs tenemos la siguiente linea:

export const port = normalizePort(process.env.PORT || '3000');
Anuncios

Esta se encarga de crear el puerto de conexion y utiliza a la funcion normalizePort para que trabaje correctamente, y en este caso le podemos pasar un valor del entorno con el nombre de PORT y sino tomara el valor predeterminado de 3000, veamos como es la linea que crea nuestro servidor en package.json:

  "scripts": {
    "start": "cross-env DEBUG=* node ./app.mjs"
  },
Anuncios

Observen que al momento de ejecutarlo no pasamos ningun valor de PORT por lo tanto siempre toma el valor predeterminado de 3000, para crear las multiples instancias debemos modificar el bloque anterior de la siguiente manera:

  "scripts": {
    "start": "cross-env DEBUG=* node ./app.mjs",
    "server1": "cross-env DEBUG=* PORT=3001 node ./app.mjs",
    "server2": "cross-env DEBUG=* PORT=3002 node ./app.mjs"
  },
Anuncios

En este caso simplemente agregamos dos nuevos scripts para iniciar nuevas instancias y en ambos casos le agregamos la variable PORT con dos valores distintos, ahora necesitaremos dos terminales abiertas para ejecutar en uno el siguiente comando:

$ npm run server1
Anuncios

Y en la otra el siguiente comando:

$ npm run server2
Anuncios

En cada ventana tendremos dos servidores corriendo y por lo tanto vamos a tener dos conexiones a nuestra aplicacion, primero veamos como trabaja mediante el siguiente video

Anuncios
Anuncios

En el video podemos ver como activamos nuestros dos servidores, como hicimos una conexion para cada uno, agregamos una nota en cada uno y estas se mantienen cada una en su instancia sin mezclarse, y si vienen de los posts anteriores se habran dado cuenta que toda la informacion se pierde cada vez que reiniciamos el servidor pero como dijimos en este post si bien no es practico guardarlo en memoria si nos sera util para entender ciertos conceptos pero a esto debemos agregarle una base de dato, una forma de que cada usuario que utiliza la aplicacion tenga su propia lugar de almacenamiento asi como tambien debemos implementos unit test para hacer «testeos», en fin un monton de temas que iremos desarrollando en los proximos posts, antes de finalizar les dejo un archivo con todos los archivos de la aplicacion asi como los trabajados en este post:

Anuncios

En resumen, hoy hemos visto el escalamiento de una aplicacion, o lo que es lo mismo decir multiples instancias de una aplicacion, hablamos un poco de porque, de como lo haremos en nuestra aplicacion, despues realizamos una pequeña modificacion para simularla, y finalmente hemos visto como trabaja, mas algunos conceptos que veremos mas adelante, espero les haya resultado util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50