En este artículo te mostraremos una tecnología para una de las necesidades más comunes que hemos encontrado: la transferencia de ficheros de una o múltiples fuentes a uno o múltiples destinos.
En este supuesto de integración debemos elaborar una solución que implemente la lógica necesaria para procesar ficheros de forma automática. Aquí es donde entra en juego la tecnología de GoAnywhere MFT.
Las soluciones de transferencia gestionada de archivos (MFT, del inglés Managed File Transfer) son software que usan protocolos de red y métodos de cifrado estándares para agilizar la gestión de archivos. La gestión funciona con base en cómo la solución puede automatizar la transferencia de tus datos entre tu organización, tu red, tus sistemas, tus aplicaciones, tus socios comerciales, y tus entornos en cloud desde una interfaz única y central.
1. ¿Qué es GoAnywhere MFT?
GoAnywhere MFT es una solución de transferencia gestionada de archivos que ofrece un control centralizado y una verificación de transferencia de archivos y flujos de trabajo para la empresa. Gracias a sus características y su interfaz, GoAnywhere MFT reduce los costes operativos, mejora la calidad de las transferencias de datos y satisface los requisitos de cumplimiento.
1.1 Características de GoAnywhere MFT
Algunas de las características más importantes de esta plataforma son:
Imagen 1. GoAnywhere MFT.
- Es ejecutable en la mayoría de las plataformas, como Windows, Linux, VMware, UNIX: IBM i, Solaris y Mac OS.
- Incluye una interfaz de administrador con base en el buscador (con componentes gráficos y soporte arrastrar y soltar).
- Es compatible con protocolos transferencia de populares como SFTP, SCP, FTP/s, HTTP/s, AS2, Web Services, SMTP, POP3 y IMAP.
- Ofrece componentes de cliente para conectar sistemas internos y externos para enviar y recuperar archivos.
- Ofrece componentes de servidor para permitir que los sistemas y los usuarios se conecten a GoAnywhere para cargar y descargar archivos.
- Protege ficheros «en descanso» y «en movimiento» con un cifrado AES256 validado por FIPS 140-2.
- Archiva toda la actividad de transferencia de ficheros en una base de datos central y en informes analíticos.
- Permite la agrupación para una alta disponibilidad (activo-activo) y para equilibrar la carga.
- Controla el acceso de usuario con permisos con base en roles y controles de seguridad extensos.
- Incluye herramientas de gestión de claves para claves de OpenPGP, claves SSH y certificados SSL.
- Funciona con la GoAnywhere Gateway opcional para mantener los archivos fuera de la DMZ y cerrar los puertos de entrada a la red interna (privada).
En cuanto a las políticas de precios, GoAnywhere MFT está licenciada por módulo o por componente de servidor por instancia. Además, ofrece diferentes planes de precios, cada uno con diferentes características disponibles, para que puedas elegir la que más se adecúe a tus necesidades empresariales. En cualquiera de los casos, GoAnywhere MFT te anima a solicitar un presupuesto y, después, a llegar a un acuerdo sobre el precio.
Imagen 2. Pasos para calcular el precio
2. Instalación
GoAnywhere MFT es compatible con la mayoría de las plataformas, como Windows, Linux, UNIX, IBM i, Solaris y Mac OS. Además, puedes instalar GoAnywhere MFT en varios entornos virtuales, como en VMware, Microsoft Azure, Amazon EC2, y otros. Te remendamos que mires los requisitos (las versiones compatibles, el espacio y la memoria que se necesita) antes de instalar MFT en una plataforma específica.
Ten en cuenta que puedes instalar una implementación agrupada de GoAnywhere. Así harás que dos o más instalaciones (sistema) de GoAnywhere funcionen juntas para ofrecer servicios de transferencia de datos a la empresa. Esto ofrece una mayor escalabilidad al permitir que las cargas de trabajo se distribuyan horizontalmente entre varios sistemas de GoAnywhere.
Abajo encontrarás una lista de los números de puerto determinados que usa GoAnywhere para sus diversos módulos/servicios (puedes modificar estos números de puerto tanto durante como después de la instalación):
Imagen 3. Números de puerto.
Solo usuarios autorizados pueden usar la consola de administración con base en el buscador de GoAnywhere para configurar y supervisar el producto. Ten en cuenta que las interfaces del administrador y del cliente web de GoAnywhere requieren buscadores de internet modernos que sean compatibles con HTML 5:
Imagen 4. Consola de administración.
A continuación, expondremos algunos de los conceptos relacionados con la instalación de GoAnywhere MFT. Dirígete a requisitos de instalación para más información.
3. ¿Cómo funciona GoAnywhere MFT?
La plataforma de GoAnywhere MFT está formada por varios componentes, que están ordenados por menús desplegables y enlaces en el panel de control de GoAnywhere.
Imagen 5. Panel de control de GoAnywhere.
Este encabezado de página muestra el nombre de entorno de GoAnywhere, el nombre de sistema del servidor local y el dominio actual.
En cada menú desplegable encontrarás los siguientes componentes:
- Recursos: los recursos son los nombres y las propiedades de conexión de los servidores.
- Flujos de trabajo: disparadores y proyectos que automatizan cualquier transferencia de datos y proceso empresarial.
- Servicios: los servicios de GoAnywhere sirven para establecer conexiones entrantes desde tus socios comerciales, tus clientes, tus empleados, y tus sitios remotos.
- Usuarios: roles, métodos de acceso, usuarios y grupos administrativos para controlar el acceso.
- Registros e informes: errores en eventos de supervisión, como transferencias de ficheros y actividades en el servidor.
- Cifrado: GoAnywhere implementa varias tecnologías de cifrado populares para proteger los datos.
- Sistema: ofrece acceso para cambiar muchos de los ajustes que determinan cómo opera GoAnywhere.
A continuación, explicaremos un poco más sobre los componentes principales de GoAnywhere MFT para que entiendas mejor cómo funciona esta tecnología.
3.1. Recursos
Los recursos son los nombres y las propiedades de conexión de los servidores, y otras fuentes de datos, con las que puede interactuar GoAnywhere. Aquí tienes una imagen de la consola web de recursos principal de GoAnywhere:
Imagen 6. Consola web de recursos.
Puedes usarla para crear tus propios recursos, para probar conexiones, para importar/exportar recursos con plantillas XML y para gestionar los permisos de los recursos.
Vamos a enumerar los recursos más importantes desde nuestro punto de vista:
- Amazon S3 Buckets: los nombres y las propiedades de conexión de ubicaciones de Amazon S3 Bucket a las que GoAnywhere puede conectarse para acceder a ficheros.
- Compartir en la red: los nombres y las propiedades de conexión de ubicaciones compartidas en la red a las que GoAnywhere puede conectarse para acceder a ficheros. Solemos usarla para conectar con servidores de Samba.
- Llaveros PGP: son los llaveros PGP que puedes usar en GoAnywhere para encriptar y desencriptar ficheros con el estándar de OpenPGP.
- Servidores SSH (SFTP/SCP/SSH): los nombres y las propiedades de conexión de los servidores SSH a las que se puede conectar GoAnywhere. Puedes usar estos recursos para transferencias SFTP (protocolo de transferencia de ficheros SSH), transferencias de ficheros SCP (copia segura) y para ejecutar comandos SSH remotos.
Por último, el objetivo de desarrollar estos recursos es usarlos más adelante en la lógica y los disparadores de GoAnywhere MFT, ¡así que no te olvides de instalarlos y probarlos correctamente!
3.2. Flujos de trabajo
Puedes desarrollar la lógica deseada fácilmente dentro de proyectos de GoAnywhere MFT para describir el trabajo que deben ejecutar. Puedes ejecutar estos proyectos inmediatamente y programarlos para que funcionen más adelante, o cuando ocurra un evento determinado.
Todos estos elementos relacionados con la lógica de GoAnywhere MFT están almacenados en los flujos de trabajo. A continuación, explicaremos un poco más sobre los elementos principales que usamos normalmente en nuestras integraciones.
3.2.1. Proyectos
Puedes crear proyectos en GoAnywhere para automatizar la transferencia de ficheros y los procesos empresariales (flujos de trabajo) de tu organización.
Tienes varios métodos disponibles para ejecutar proyectos en GoAnywhere. Puedes ejecutar proyectos bajo demanda desde el administrador con base en el buscador de GoAnywhere. También puedes ejecutarlos con el programador integrado o con los procesos de supervisión de ficheros. Las aplicaciones externas también pueden lanzar proyectos desde otros sistemas (por ejemplo, IBM i, Windows, Unix, Linux, Solaris, etc.) con los comandos y las API de GoAnywhere.
Las acciones principales que puedes ejecutar en un proyecto MFT son: crear un proyecto nuevo, buscar proyectos, importar un proyecto desarrollado con una plantilla XML, exportar un proyecto existente y editar un proyecto existente.
Puedes almacenar proyectos en carpetas definidas por usuarios en GoAnywhere. Las carpetas son muy útiles para organizar proyectos, lo cual ganará importancia a medida que crees más y más proyectos. De hecho, si configuras GoAnywhere para usar múltiples dominios, cada nombre de dominio aparecerá a nivel de base del explorador del proyecto como una carpeta.
Sigamos con el diseño de proyecto en GoAnywhere MFT. Los proyectos están formados por módulos, tareas y elementos:
- Un módulo es una agrupación lógica de una o más tareas. Por ejemplo, puedes definir un módulo con tres tareas que se ejecuten en orden secuencial. La primera tarea del módulo podría leer (analizar) datos de un documento XML. La segunda tarea podría insertar esos datos en un fichero de la base de datos. La tercera tarea podría ejecutar un programa que acceda a esos datos. En un proyecto puedes definir múltiples módulos. La tarea de «lanzar módulo» puede ejecutar otro módulo de un proyecto para que lleve a cabo una subrutina de ciertas tareas con base en criterios específicos.
- GoAnywhere MFT también incluye tareas de control de estructuras en sus proyectos, como If Condition, Else y Loops.
- Otras tareas bastante importantes para los ficheros son Copy, Move, Delete, y CreateFileList. Ten en cuenta que las tareas Copy y Move nos permiten renombrar el fichero de entrada procesado en destino de forma sencilla, lo que resulta muy útil en ciertos supuestos.
- Una tarea está compuesta por uno o más elementos, que describen el tipo de trabajos que se deben ejecutar en la tarea. Por ejemplo, la tarea FTP tienen un elemento para situar ficheros en un servidor FTP, un elemento para sacar ficheros de un servidor FTP y un elemento para renombrar ficheros en un servidor FTP, etc.
Por último, aquí tienes un ejemplo de módulos, tareas y elementos:
Imagen 7. Módulos, tareas y elementos.
3.2.2. Programadores
GoAnywhere te permite programar la ejecución de proyectos (trabajos) en fechas futuras. Puedes crear o editar un trabajo programado a través de la página de trabajos programados. Puedes añadir una nueva programación y editar las existentes.
Dentro de un programa puedes configurar la frecuencia, el proyecto objetivo, darle prioridad, o incluso usar un calendario festivo registrado para determinar lo que debe pasar con el trabajo cuando su ejecución coincida con un festivo.
3.2.3. Supervisores
La función de supervisores de ficheros permite que GoAnywhere busque reiteradamente ficheros nuevos, modificados o eliminados en una carpeta. Cuando se cumple con la condición de búsqueda, el supervisor puede lanzar un proyecto predefinido para procesar el/los fichero(s). Por lo tanto, este componente te ayudará a desarrollar integraciones según un enfoque event driven.
Imagen 8. Función de supervisión de ficheros en GoAnywhere.
Puedes crear, ver, editar, eliminar y desactivar o activar supervisores.
Al crear o modificar un supervisor, podrás modificar campos como los del recurso de la fuente y la carpeta que quieras comprobar periódicamente, el proyecto MFT objetivo que quieres disparar y sus parámetros de entrada, el tipo de evento del fichero (creación o modificación de fichero, creación de fichero, modificación de fichero, eliminación de fichero, presencia de fichero), y el tipo de patrón del nombre del fichero (comodín o expresión regular). Por supuesto, puedes configurar la hora de inicio, de finalización y la frecuencia del programa de supervisión.
4. Ejemplo de supuesto empresarial
Ya has leído mucha información sobre las características de cómo funciona la plataforma de GoAnywhere MFT. Ahora veamos un ejemplo que te ayudará a comprender mejor cuál es el valor real de esta tecnología. El ejemplo de supuesto es el siguiente:
Necesito transferir ficheros de un servidor SFTP fuente a uno de destino. El programa llevará a cabo un sondeo del directorio fuente cada minuto para comprobar los ficheros con una extensión GO. Si encuentra ficheros, el fichero asociado (sin la extensión GO) y el fichero GO serán trasladados al directorio del servidor de destino. Todos los ficheros trasladados también deben ser trasladados a una subcarpeta «procesada» para permitir la reproducción.
La siguiente imagen muestra el diseño general de la solución:
Imagen 9. Diseño de la solución.
En la imagen puedes ver los siguientes componentes de GoAnywhere MFT:
- Un recurso SFTP MFT conectado al servidor SFTP fuente desde el que se sacan los ficheros.
- Un recurso SFTP MFT conectado al servidor SFTP de destino al que se deben trasladar los ficheros csv de entrada.
- Un supervisor MFT que usa el recurso de SFTP fuente para comprobar los ficheros con un prefijo .GO.
- El primer proyecto MFT disparado por el supervisor cuando se cumple el patrón de ficheros.
- Un segundo proyecto MFT (dentro del cuadrado rojo) que se activa por cada fichero detectado y que trasladará el csv asociado al recurso SFTP de destino.
Al implementar esta solución, tendrás un trabajo automatizado que se ajustará a las necesidades de tu empresa con el mejor resultado, sobre todo si tratamos con archivos grandes.
5. ¿Cómo puedo desarrollar mis soluciones de GoAnywhere MFT?
La manera más directa de desarrollar soluciones MFT es a través de la consola de GoAnywhere MFT. Sin embargo, si ya estás familiarizado con esta tecnología, te recomendamos que importes tus plantillas MFT de XML a través de GoAnywhere Command Web Services.
5.1. Cómo usar la consola de GoAnywhere MFT
Esta es la mejor opción si estás empezando a usar GoAnywhere MFT. Como ya hemos mencionado, puedes crear todos los elementos MFT que desees para que tu integración cumpla tus necesidades empresariales.
Recuerda que puedes crear un proyecto de cero si eliges las tareas específicas que necesitas, o que puedes crear proyectos si usas una de las plantillas que incluye GoAnywhere. Usar una plantilla suele ser el enfoque más rápido al crear un proyecto, ya que cada plantilla incluye un grupo predeterminado de tareas para llevar a cabo procesos empresariales comunes.
Imagen 10. Base de datos a Excel y a FTP.
5.2. GoAnywhere Command Web Services
Si estás acostumbrado a trabajar con MFT y quieres agilizar el desarrollo y la implementación, quizás quieras importar tus plantillas de elementos MFT a través de GoAnywhere Command Web Services. Esto permite que los usuarios envíen peticiones SOAP y REST a un sistema GoAnywhere local o remoto. Con GoAnywhere Command Web Services podrás ejecutar funciones de GoAnywhere desde programas personalizados e importar tus componentes MFT personalizados. El siguiente ejemplo te muestra cómo importar un proyecto desde un fichero XML:
Imagen 11. Cómo importar un proyecto desde un fichero XML.
En efecto, hemos automatizado las verificaciones e implementaciones de nuestros elementos GoAnywhere MFT gracias a metodologías constantes (como gitlab-ci y Jenkins) y a tareas de gradle que activan los GoAnywhere Command Web Services.
Además, no te olvides de que la mayoría de los componentes de GoAnywhere están definidos por ficheros de plantilla XML. Normalmente usamos Visual Studio Code IDE para trabajar con nuestras integraciones MFT porque ofrece muchos plugins para los ficheros de plantilla XML, pero otros IDEs son igual de válidos. Aquí tienes algunas plantillas de ejemplo que te mostrarán todas las propiedades principales para cada elemento de GoAnywhere MFT:
- Esto es un fichero XML que define un proyecto MFT:
<project name="Example Using Variables" mainModule="Main" version="2.0" logLevel="verbose"> <variable name="MyFile" value="" /> <module name="Main"> <sftp label="Connect to Server" resourceId="Test SFTP" version="1.0"> <put label="Put file on Target Server" sourceFile="${MyFile}" destinationDir="/Demos/inbound" /> </sftp> </module> <description>Basic Project with Parameter</description> </project>
- Esto es un fichero XML que define un recurso MFT SFTP:
<?xml version="1.0" encoding="UTF-8" ?> <resource class="com.linoma.ga.projects.resources.SSHResource"> <primaryContactName /> <primaryContactPhone /> <primaryContactEmail /> <secondaryContactName /> <secondaryContactPhone /> <secondaryContactEmail /> <resourceName>{{ resourceName }}</resourceName> <domainName>{{ domainName }}</domainName> <resourceDescription>{{ resourceDescription }}</resourceDescription> <host>{{ host }}</host> <port>{{ port }}</port> <user>{{ userName }}</user> <password>{{ password }}</password> <passwordIsEncrypted /> <passwordIsRecoverable /> <keyLocation>KeyVault</keyLocation> <keyVault>{{ domainName }}</keyVault> <privateKeyAlias>{{ privateKeyAlias }}</privateKeyAlias> <keyPassword /> <keyPasswordIsEncrypted /> <keyPasswordIsRecoverable /> <privateKeyFile/> <privateKeyPassword/> <privateKeyPasswordIsEncrypted /> <privateKeyPasswordIsRecoverable /> <rsaSignatureAlgorithm>ssh-rsa</rsaSignatureAlgorithm> <hostKey /> <timeout>{{ timeout }}</timeout> <connectionRetryAttempts>{{ connectionRetryAttempts }}</connectionRetryAttempts> <connectionRetryInterval>{{ connectionRetryInterval }}</connectionRetryInterval> <initialRemoteDirectory>{{ initialRemoteDirectory }}</initialRemoteDirectory> <throttleBandwidth /> <proxyType /> <proxyHost /> <alternateProxyHost /> <proxyPort /> <proxyUser /> <proxyPassword /> <proxyPasswordIsEncrypted /> <proxyPasswordIsRecoverable /> <resolveAtProxy /> <authenticationAlgorithms /> <cipherAlgorithms /> <macAlgorithms /> <keyExchangeAlgorithms /> <compressionAlgorithms /> </resource>
- Esto es un fichero XML que define un supervisor MFT para un servidor SFTP:
<?xml version="1.0" encoding="UTF-8" ?> <monitor class="com.linoma.dpa.commandcenter.codec.MonitorVOCodec"> <status>{{ status }}</status> <actionType>0</actionType> <triggerDefinition>{{ triggerDefinition }}</triggerDefinition> <description>{{ description }}</description> <domain>{{ domainName }}</domain> <name>{{ monitorName }}-{{ domainName }}</name> <monitorType>3</monitorType> <callProject jobName="{{ jobName }}" onFailureAttachJobLog="true" onSuccessAttachJobLog="false" password="{{ password }}" passwordIsEncrypted="false" runPriority="5" user="{{ runner }}" project="{{ projectLocation }}"> <variable originalValue="" value="${monitor.fileList}" name="monitorFileList" description="files set by monitor" /> </callProject> <ftpMonitorDefinition> <resourceName>{{ sftpOriginResourceName }}</resourceName> <resourceType>ssh</resourceType> <folder>{{ sftpOriginFolderName }}</folder> <recursive>false</recursive> <stopChecking>{{ stopChecking }}</stopChecking> <dualListDelay>10</dualListDelay> <events> <event type="{{ eventType }}" /> </events> <filters> <regexFilter> <include pattern="{{ filePattern }}" caseSensitive="false" /> </regexFilter> </filters> </ftpMonitorDefinition> </monitor>
6. Conclusión
En este artículo te hemos resumido cómo funciona la plataforma GoAnywhere MFT. Ahora conoces las características principales de esta tecnología, su arquitectura/estructura, cómo instalarla en tu entorno y cómo empezar a trabajar con ella.
Además, has visto un supuesto de ejemplo y algunas sugerencias sobre cómo desarrollar tus integraciones de GoAnywhere MFT.
Según nuestra experiencia, GoAnywhere es una buena solución para automatizar el proceso de trasladar ficheros de una fuente a un destino. Hemos detectado en nuestro día a día que GoAnywhere MFT soluciona esa necesidad con un resultado superior al de otras tecnologías (como aplicaciones personalizadas de Java, por ejemplo), sobre todo si hablamos de trabajar con ficheros grandes. Sin embargo, solemos usar otras herramientas cuando se trata de transformar o leer datos de ficheros.
Por lo tanto, te recomendamos que empieces a usar GoAnywhere MFT si tienes que implementar una solución de transferencia de datos.
Si quieres saber más, no dudes en ponerte en contacto con nosotros para obtener más información.