Blog de Amazon Web Services (AWS)
Producteca: de AzureSQL a RDS PostreSQL en AWS para reducir sus costos en la nube
Por Juan Jacobs, Software Engineering at Producteca
Maximiliano Paz, Arquitecto de Soluciones en Startup
Breve reseña
En este blog post vamos a revisar la migración de Producteca desde AzureSQL hacia PostgreSQL en AWS RDS como parte de su migración de Azure a AWS para reducir costos de operación.
Descripción de Producteca
Producteca, plataforma de integración y gestión de pedidos para comercio electrónico con más de 400 clientes en LATAM, permite a sus clientes integrar el flujo de publicaciones de manera masiva a todos los ecommerce asociados – más de 30 tiendas online y marketplaces integradas de manera directa como MercadoLibre, Fravega, Dafiti, Elektra, Claroshop, VTEX, Netsuite y Magento entre otros; y posibilidad de integracion personalizada por cliente – para evitar el trabajo manual de alta, baja y modificación sobre cada una de los canales de venta del cliente en 1 solo paso, evitando el retrabajo de realizarlo en cada canal por separado; y contando con integración con correos, facturadores y CRMs para que sus clientes puedan replicar la información desde su sistema de manera centralizada.
Esto representa 92 millones de interacciones diarias en productos de todos los clientes hacia Producteca.
Arquitectura
Producteca decidió migrar su plataforma a AWS en 3 pasos para simplificar las tareas de migración, en el primer paso migró su servicio de actualización de productos utilizando el servicio de contenedores que soporta la interacción de las diferentes plataformas y clientes, en conjunto con servicios de mensajería y un base de datos no relacional.
La arquitectura actual incluye el servicio de cola de mensajes Amazon SQS para procesar 92 millones de eventos, manejado en lotes para efectivizar la utilización de los mensajes, consumidos por contenedores corriendo sobre Amazon EKS que realizan una comprobación contra los objetos guardados en Amazon DynamoDB para determinar cambios de estados, y persisten los cambios en otra cola de mensajes de Amazon SQS consumida por otro servicio en Amazon EKS que realiza un promedio de 4 millones de operaciones diarios en la base de datos relacional.
Decisión por RDS PostgreSQL
En el segundo paso de su migración hacia AWS, Producteca decidió migrar su base de datos relacional corriendo en AzureSQL motivados por el aumento significativo en los costos de AzureSQL.
Al evaluar las opciones de AWS, encontraron el servicio de bases de datos relacionales RDS era compatible con el motor de MS SQL, lo que simplificaba la migración y evitaba problemas.
Amazon RDS es un servicio web que facilita la configuración, el funcionamiento y el escalado de una base de datos relacional en AWS y permite utilizar los siguientes motores: MySQL, MariaDB, PostgreSQL, Oracle y Microsoft SQL.
Para facilitar la tarea de migración se encuentra disponible AWS Database Migration Service (AWS DMS), que es un servicio en la nube de AWS que facilita la migración de bases de datos relacionales, almacenes de datos, bases de datos NoSQL y otros tipos de almacenes de datos.
AWS DMS cuenta con la posibilidad de usar la Herramienta de conversión de esquemas de AWS (AWS SCT) que permite convertir un esquema de base de datos de un motor a otro siguiendo una tabla de compatibilidades disponibles. En este caso AzureSQL (con base en Microsoft SQL Server) podia ser convertido a las siguientes opciones: Amazon Aurora MySQL, Amazon Aurora PostgreSQL, MariaDB 10.2 y 10.3, Microsoft SQL Server, MySQL, PostgreSQL
Luego de conocer esta información el equipo de Producteca y tener una reunión con el equipo de cuenta de AWS para conocer en profundidad las opciones disponibles, Producteca decidió migrar a AWS RDS cambiando el motor de Microsoft SQL a PostgreSQL principalmente por la reducción de costos asociados al licenciamiento del motor sumando a buenas experiencias previas en dicho motor.
Cintando al equipo de Producteca: “Saber que estaba disponible una herramienta de AWS como DMS fue un diferencial clave considerando que la base era más de 1TB para tomar la decisión de migrar sumado a las transformaciones de SCT para lograr la compatiblidad”
Algunos datos del proceso de migración
Durante el proceso de migración, el equipo de Producteca, decidió hacer una prueba para confimar los datos específicos de la migración y confirmar que los esquemas y propiedades de la base de datos sea transformados de manera correcta.
Encontraron que AWS SCT tenia una limitación respecto de los tipos de datos, en donde el tipo de dato origen era transformado a un tipo de dato destino de un tipo parecido pero no el mismo en el motor destino.
También descubrieron que el motor destino PostgreSQL es case sensitive o sensible a las mayúsculas/minúsculas y la base origen no (por el tipo de collation en SQL), por lo que tenian que realizar un cambio en los nombres. Esta transformación la realizaron de manera automática con AWS DMS durante la migración.
Encontraron que DMS no les permitía crear los indices en la base destino, y utilizaron AWS SCT para crearlos aprovechando la salida de los esquemas.
DMS y SCT también migraron las claves primarias y los indices; y las únicas tareas manuales que realizaron fueron: crear las claves foraneas (FKs) y los Identificadores incrementales
Con AWS DMS realizaron la tarea de migración en 3 horas, y 2 horas más para ejecutar los procesos de creación de claves foráneas, esquemas y colecciones de búsquedas.
En 5 horas lograron migrar la base de datos productiva de 1 TB cambiando el motor de Microsoft SQL Server (Azure SQL) a PostgreSQL en AWS RDS.
Finalmente DMS les permitió elegir las tablas a migrar, y esto permitió separar la base de datos en 2 bases distintas.
Conclusión
El ahorro de costo que logrado con la migración fue del 60%, manteniendo el mismo rendimiento.
Citando al equipo de Producteca: “Por un lado las herramientas de AWS como DMS/SCT nos dejaron bastante cerca del resultado, sumado al equipo de AWS super atento a nuestras necesidades y nosotros con el conocimiento de nuestra aplicación pudimos cerrar la brecha, y el resultado que nos quedó fue super positivo: tenemos la misma performance a 1/3 de precio”
Sobre los autores
Juan Jacobs es Software Engineering at Producteca.
Maximiliano Paz es Startup Solutions Architect.