Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

269
Views
Aplicación de nodo que obtiene, procesa y formatea datos para que los consuma una aplicación frontend en otro servidor

Actualmente tengo una aplicación solo de interfaz que obtiene 5-6 fuentes JSON diferentes, obtiene algunos datos necesarios de cada uno de ellos y luego muestra una página basada en dichos datos. Me gustaría mover la parte de obtención/procesamiento de datos de la aplicación a una aplicación de nodo del lado del servidor que genera un archivo JSON simple que la aplicación frontend puede obtener y procesar fácilmente.

Hay dos complicaciones notables para este proyecto:

1) La nueva aplicación de backend tendrá que vivir en un servidor diferente al de su contraparte de frontend

2) Algunas de las fuentes cambian con bastante frecuencia, por lo que necesitaré el procesamiento de back-end para verificar constantemente los cambios (cada 5-10 segundos). Actualmente, con la aplicación de solo interfaz, el navegador obtiene las últimas versiones de los feeds al cargar. Me gustaría replicar este comportamiento lo más cerca posible

Mi proceso de pensamiento para resolver esto me llevó en dos direcciones:

El primero es configurar una aplicación rápida que use setTimeout para verificar constantemente si hay nuevos datos para procesar. Luego, estos datos se envían como respuesta a una simple solicitud GET:

 const express = require('express'); let app = express(); let processedData = {}; const getData = () => {...} // returns a promise that fetches and processes data /* use an immediately invoked function with setTimeout to fetch the data * when the program starts and then once every 5 seconds after that */ (function refreshData() { getData.then((data) => { processedData = data; }); setTimeout(refreshData, 5000); })(); app.get('/', (req, res) => { res.send(processedData); }); app.listen(port, () => { console.log(`Started on port ${port}`); });

Luego ejecutaría una solicitud de obtención simple del cliente (después de ajustar adecuadamente los encabezados CORS) para obtener el objeto JSON.

Mis preguntas sobre este enfoque son bastante genéricas: ¿es esta una buena solución para este problema? ¿Aumentará esto los costos de hospedaje en función del procesamiento/solicitudes GET del cliente? ¿setTimeout es una buena manera de ejecutar una tarea repetidamente en el servidor?

La otra solución que estoy considerando se ocuparía de configurar un AWS Lambda que escriba el JSON resultante en un depósito s3. Sin embargo, parece que el intervalo mínimo para programar una función de AWS Lambda es de 1 minuto. Me imagino que podría configurar 3 o 4 funciones Lambda idénticas y compensarlas en 10-15 segundos, sin embargo, eso parece tan extraño que me hace sentir físicamente incómodo.

Cualquier sugerencia/indicador/solución sería muy apreciada. Todavía no soy un desarrollador de back-end con mucha experiencia, así que haga ELI5 donde lo considere oportuno.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Algunos consejos.

Utilice crontasks para el procesamiento periódico de datos. Esto es mucho más preferible, especialmente si está formateando una gran cantidad de datos.

No configure varias funciones de Lambda para la misma tarea. Va a ser complicado mantener todas esas funciones.

Después de procesar/obtener el feed, puede almacenar el archivo JSON en su propio servidor o S3. Tenga en cuenta que si es S3, entonces está pagando y esperando una operación de red. Puede leer el archivo desde su aplicación Express y simplemente enviar la respuesta a sus clientes.

Según el tamaño del archivo y su carga en el servidor, es posible que desee agregar un servidor de almacenamiento en caché para poder almacenar en caché la respuesta hasta que haya nuevos datos JSON disponibles.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!