Tenemos un almacén de datos que almacena los precios de nuestros productos. Una vez cada día hábil, se agregan nuevos puntos de datos que representan el precio del día para cada producto. En el sitio web, un usuario ve esta información en una página cargada. Actualmente hay 7 productos; Analytics muestra que la cantidad de cargas de página es de aproximadamente 100 por día.
El servidor del sitio web es un servidor externo a nuestro centro de datos. El servidor del almacén de datos es interno de nuestro centro de datos y tiene otros datos críticos (en diferentes tablas) que no están relacionados y no deben ser accesibles al sitio web.
Se han considerado los siguientes enfoques:
-
El almacén de datos podría enviar diariamente (SFTP) un archivo CSV que contiene los datos diarios al servidor web. El servidor web tendría un proceso ejecutándose en un crontab cada 15 minutos. Se comprobaría si el archivo había cambiado. De ser así, actualizaría su base de datos con los datos. Luego, en las cargas de página, el servidor web consultaría su base de datos para obtener los datos que se mostrarán en la página web.
Por lo general, el impulso solo sería una vez al día, pero más de un impulso podría ser posible para comunicar correcciones de precios (poco frecuentes). Incluso en el escenario de corrección de precios, todos los datos se entregarían en el archivo. El proceso de sondeo recogería el cambio y sobrescribiría los datos en la base de datos.
-
El servidor web podría solicitar datos del almacén de datos mediante JDBC o una tecnología de conexión SQL similar.
Sin embargo, se han expresado preocupaciones de seguridad. La preocupación es que al permitir que el servidor web acceda a nuestro almacén de datos, un ataque de inyección SQL o algún otro ataque externo a través del sitio web podría poner en peligro el almacén de datos. Se podrían implementar medidas para reducir el riesgo, pero se sugirió el enfoque más fácil y seguro para simplemente no permitir que ningún sistema público acceda directamente al almacén de datos. En otras palabras, el almacén de datos puede establecer una comunicación con otros servidores (por ejemplo, SFTP el archivo), pero ningún servidor puede iniciar una conexión con el almacén de datos. ¿Estas preocupaciones parecen razonables y difíciles de mitigar?
-
Se podría construir un servicio web, y el servidor web podría llamar al servicio web que está alojado en nuestro centro de datos interno.
-
Un proceso alojado en nuestro centro de datos interno podría llamar al servidor web cuando sepa que el almacén de datos tiene datos disponibles. Si es así, ¿cómo debería hacerse esto? ¿HTTPS con alguna forma de evitar que otros clientes no autorizados realicen la misma llamada?
¿Cuál de los enfoques anteriores es mejor o hay un enfoque mejor que el que se enumera arriba? ¿Cuáles son los pros y los contras de un enfoque?