Es habitual querer explotar las capacidades de la nube aún cuando nuestro core principal está aún on-premise y querer que sea lo más transparente posible. Entre los diferentes casos se encuentran, por ejemplo, el backup de ficheros on-premise, el archivado de logs o analítica que queramos hacer en base a esos ficheros.

En otro post vimos la sincronización de bases de datos a través de Datastream. Hoy toca el turno de sincronización de ficheros de entornos on-premise hasta Google Cloud Storage o Cloud Filestore.

¿Qué opciones veremos?

Siempre que nos planteamos un problema de este tipo nos solemos encontrar con varias opciones. En este post vamos a analizar los siguientes métodos para realizar la sincronización de ficheros:

Consideraciones previas.

Suponemos que existe comunicación entre los sistemas on-premise y GCP. Siempre y cuando haya conectividad, bien sea pública o privada, las siguientes técnicas son viables.

1 Cloud SDK + CRON

¿Qué necesito?

Es una solución bastante simple pero no por ello menos efectiva:

1. Crear un script que copie con gsutil desde el directorio de origen al bucket de cloud storage. Gsutil tiene muchas opciones, dependiendo de si quieres bidireccionalidad en la sincronización o no, si quieres paralelizar la subida de ficheros, etc. Un ejemplo sería:

gsutil -m rsync -rd $FOLDER_SRC_CRON $BUCKET
**-m** paraleliza la subida en caso de haber múltiples ficheros que no estén en el destino.

rsync sincroniza dos directorios, buckets.

-r recursivo.

-d Borra datos en el destino si no están presentes en el origen. Utiliza está opción con mucho cuidado.

2. Dar de alta en el crontab el script.

(crontab -l; echo "* * * * * $CRON_SCRIPT") | sort -u | crontab -

Puntos fuertes de esta solución:

2 Cloud Storage Fuse

Cloud Storage Fuse (gcsfuse en adelante) te permite montar un bucket de GCS sobre un directorio de una máquina y trabajar con comandos de sistema operativo, aislándote de conocer sobre qué está montando ese directorio.

Hay que mencionar que es una herramienta desarrollada por Google pero con soporte de la comunidad. Google no ofrece garantía de ningún tipo.

Estos son sus principales características:

Algunos casos de uso posibles:

3 Transfer service for on-premises

Es el servicio gestionado de Google para la transferencia de grandes cantidades de información.

Existen algunos conceptos que debemos conocer antes de ver la arquitectura:

Las flechas verdes representan el movimiento de datos y las flechas azules implican intercambio de metadatos.

Un punto que no hemos mencionado hasta ahora es cómo coordina el servicio a los agentes. Todo se hace de manera asíncrona por intercambio de mensajes en pubsub. Una cosa que podrás ver si utilizas este servicio es que Google crea bastantes topics en tu proyecto con un formato parecido a cloud-ingest-* y <nombre-de-tu-pool>-*

¿Qué otras posibilidades ofrece?

Ventajas de la solución:

¿Qué aspectos podría mejorar?

4 Filestore

Filestore es la solución NFS totalmente gestionada para compartir disco en diferentes instancias. Te permite seleccionar capacidad y tipo de disco( HDD, SSD, High Scale SSD y Enterprise).

En el anterior diagrama vemos cómo podemos montar un directorio local sobre la instancia de Filestorage, de tal manera que cuando desde un sistema on-premise copiemos un directorio, estaría disponible en la instancia de Filestore y disponible para otras instancias que estén ya en GCP y que tengan ese disco montado.

El único punto a tener en cuenta es que el tamaño mínimo es de 1TB de aprovisionamiento. Independientemente de que uses 1GB, se te cobrará por 1TB reservado, no por 1GB utilizado. Tenlo presente en tu calculadora de costes.

Conclusiones

Ninguna opción es mejor que otra de manera absoluta. Cada una se adapta mejor según las necesidades:

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.