Buenas practicas para crear aplicaciones escalables en Javascript

 

Nicolas Restrepo

Full stack javascript developer

@nic_restrepo

 aplicación escalable

Text

Primero debemos ver algo de Buenas cuando codeamos con javascript

Tipar las variables



    // @flow
    function square(n: number): number {
      return n * n;
    }

    square("2"); // Error!

nombres adecuados en las variables

hacer test de su codigo

Escalando node.js

Que es node.js ? 🤔

La carga de trabajo, el aumento de la disponibilidad y la tolerancia al fracaso, es la razón por la que escalamos.

Un monolito para poco usuarios

Load Balancer

Clusters 

El módulo de clúster se puede usar para habilitar el equilibrio de carga en los múltiples núcleos de CPU de un entorno.

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Fork workers.
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  // Workers can share any TCP connection
  // In this case it is an HTTP server
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}
$ node server.js
Master 3596 is running
Worker 4324 started
Worker 4520 started
Worker 6056 started
Worker 5644 started

algoritmo round-robin para elegir un proceso de trabajo

Clonación de instancias

Microservicios

Made with Slides.com