Skip to content

Instantly share code, notes, and snippets.

@Andresmup
Last active March 3, 2024 19:37
Show Gist options
  • Save Andresmup/a8f2847141ff3f4dd6692b42195f4e36 to your computer and use it in GitHub Desktop.
Save Andresmup/a8f2847141ff3f4dd6692b42195f4e36 to your computer and use it in GitHub Desktop.
Project for migrating to Amazon Web Services (AWS) cloud, focused on improving data utilization, where: A Data Lake is implemented to migrate on-premise data. A pipeline is developed for data processing and transformation using Mage. A Data Warehouse is created for various data teams. And much more, as it is a data-oriented architecture that pri…

PLAN DE MIGRACIÓN AWS ORIENTADO A LA ARQUITECTURA DE DATOS

ABSTRACT

El presente documento busca dar un marco al proyecto solicitado. Dicho trabajo requiere realizar una migración a la nube de AWS. Se especifican el punto de partida inicial, los actores involucrados, problemáticas a resolver, desafíos presentes actualmente, consideraciones a tener en cuenta, metodologías de trabajo y objetivos que se esperan cumplir al final. Además, se expone como, con qué y de qué forma se aplicará este proceso migratorio.

DESCRIPCIÓN

Una empresa que dedicada a la venta de productos en locales del tipo grandes superficies lleva años en el sector, por lo que su crecimiento ha sido considerable. Su contexto actual es el de una empresa que está dispuesta a innovar. Ya que muchos de sus procesos y metodologías de trabajo fueron diseñados antes de los 2000, con tecnologías que hoy son antiguas, formas de trabajar pensadas para una empresa mucho más pequeña y con un presupuesto más reducido.

TRANSFORMACIÓN DIGITAL

En este caso la empresa ha atravesado diferentes etapas a lo largo de los años, ahora con la vista puesta en innovar, se decidió solucionar diferentes problemas causados por el uso de prácticas antiguas, que no escalaron bien con el crecimiento de la empresa ni el paso de los años. La transformación que se pretender realizar involucra modernizar el sistema, formas, capacidades y posibilidades de uso de sus datos. Facilitando el uso de los datos se pretenden mejorar el alcance de lo implementado actualmente, como también crear la posibilidad de formar nuevos equipos de trabajo que aborden proyectos que debido a las limitaciones actuales no se pueden hacer.

PROBLEMÁTICA Y SU ABORDAJE CON AWS

Esta empresa de ventas en grandes superficies desde sus inicios ha tenido la misma manera de almacenar, cargar, procesar y utilizar sus datos. Estos van desde facturas digitales, órdenes de compra, presupuestos, contratos, documentos internos, balances de venta anuales, archivos de Excel con las ventas realizadas día a día, entre otras cosas. Los cuales se han acumulado a lo largo años en computadoras, para las cuales fueron adquiriendo discos para guardar más y más datos. Con el crecimiento a lo largo de los años este sistema de trabajo cada vez es más ineficiente, peligroso, complicado de escalar y caro de mantener. Además de que los trabajadores que están en esa sección tienen muchas limitaciones y problemas diariamente a la hora de realizar sus tareas.

Por lo que se decidió abordar esta problemática de manera integral, ya que con una migración a AWS se pretenden resolver todos estos aspectos. Como también brindar nuevas posibilidades a futuro. Siendo además una solución a largo plazo con posibilidades de escalamiento y un control de costos. Permitiendo a los diferentes equipos enfocarse en elementos a futuro en vez de lidiar con los problemas actuales, lo cual aumentaría su productividad y por ende los beneficios que aportan a la empresa.

OBJETIVOS DE LA MIGRACIÓN

A continuación, se detallan los objetivos marcados por la empresa en base a lo expuesto anteriormente.

Migrar en un periodo de 1 mes a partir sea iniciado el proceso, todos los datos que se encuentran on premise a un sistema cloud, que permita continuar dicha tarea a futuro. Pudiendo deshacerse de la estructura actual la cual está obsoleta.

Eliminar en su totalidad en un máximo de 15 días los problemas relacionados a la seguridad de los datos de la empresa, suprimiendo así la problemática actual que atraviesa debido a la pocas reglas y nulo uso de permisos que tienen los empleados; dicha política de seguridad y segmentación a la utilización de los datos será revisada semanalmente.

Reducir durante el primer mes un 70% los tiempos requeridos para acceder y trabajar con los datos debido a fallas de hardware y/o sistemas usados actualmente (on premise), permitiendo mejorar la productividad. Para lo cual se realizarán evaluaciones diariamente de fallas e inconvenientes.

Lanzar en un periodo de 1 año el 100% de un sistema que consta de 4 mejoras en la utilización de datos para el beneficio de la empresa siendo estos: servicio de análisis avanzado, generación automatizada de informes, diseño de tableros interactivos y desarrollo de modelos de machine learning. Los cuales trabajarán en post de mejorar la para tomar de decisiones que agreguen valor. Asignando periodos de 3 meses entre el lanzamiento de cada uno de estos ítems, realizando revisiones mensuales.

ARQUITECTURA Y SERVICIOS DE AWS

Para la implementación de esta migración a la nube se propone la utilización de los siguientes servicios. Los cuales están seleccionados en base a los objetivos, teniendo en cuenta características que permitan a los trabajadores una mejor adaptación, utilizando soluciones a medida para los puntos específicos. Sin dejar de lado aspectos claves como rentabilidad, performance y escalabilidad.

Arquitectura de servicios
Servicio Descripción Justificación
IAM AWS Identity and Access Management (IAM) es un servicio web que nos ayuda a controlar de forma segura el acceso a los recursos de AWS. IAM es clave a la hora de trabajar en la nube de AWS, dado que permite controlar quién está autenticado, generar usuarios con accesos específicos, para las tareas que tienen asignadas, es decir, para poder utilizar únicamente los recursos a su cargo.
VPC La red virtual aislada que provee AWS es el entorno sobre el cual el resto de los servicios serán ubicados. Al configurar esta red permite crear subnets, definir los rangos de IP y también las tablas de ruteo, las que sean utilizadas por el resto de los servicios. Es completamente necesario definir una VPC a la hora de lanzar los servicios. Ya que sobre esta se vincularán o “colocaran” los servicios que se van a utilizar en la arquitectura.
Lake Formation Lake Formation centraliza la gestión de permisos de sus datos y facilita su uso compartido en toda la organización y de forma externa. Administrando los diferentes recursos involucrados en el Datalake. Es el primer paso en el proceso de migración, ya que permite administrar y escalar el acceso a los datos, además de manejar los permisos necesarios a través de diferentes Buckets S3 que forman un mismo Datalake.
S3 Glacier Los buckets S3 Glacier están diseñados para el archivado de datos y le ofrecen el mayor rendimiento, la mayor flexibilidad de recuperación y el menor costo de almacenamiento de archivos en la nube. En este proceso de migración los datos históricos de la empresa son almacenados en un bucket S3 Glacier. Esto se hará una única vez, al inicio de la migración a la nube; enviando los datos que no son utilizados frecuentemente para su archivado.
S3 Bucket

Es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes en el sector. Ideal para almacenar y proteger cualquier cantidad de datos, ideales como lagos de datos.

Además, S3 permite crear diferentes Buckets lo que puede resultar beneficioso en ciertas aplicaciones.

En un Data Lake S3 los datos utilizados frecuentemente, junto con los registros del último año al momento de la migración serán almacenados. Este proceso de carga se repetirá con cierta periodicidad, ya que los registros de la empresa como también información útil serán almacenados continuamente. Por lo que los Buckets S3 almacenaran datos como tales facturas, contratos, pedidos, entre otros; los cuales deben poder ser utilizados para su lectura, de manera habitual. También se destinará un Bucket S3 para el almacenado de los datos staged, estos son los datos que tienen una estructura o formato que no permiten ser utilizados directamente ya que necesitan ser procesados.
Lambda Es un servicio informático sin servidor, que ejecuta código en respuesta a los eventos, además permite configurar acciones en caso de error en su ejecución. Todo esto sin necesidad de administrar los recursos. Una función Lambda se utilizará para detectar los resúmenes de ventas diarios y resúmenes de compra, dichos archivos está pensado que sean subidos al Datalake. La función Lambda se activa al detectar que se crearon nuevos elementos en el Bucket S3. Dicha activación tiene como finalidad tomar los elementos creados y enviarlos por HTTP al Load Balancer.
ECR Elastic Container Registry es un registro de contenedores completamente administrado que ofrece alojamiento de alto rendimiento, lo que permite utilizar imágenes de aplicaciones y artefactos de forma confiable en cualquier lugar. Para la implementación de la función Lambda dicha es cargada en forma de container, la imagen debe ser alojada. Para ello se utiliza Elastic Container Registry ERC, donde se actualizarán las versiones de las imágenes a medida que sea necesario.
SNS Simple Notification Service es un servicio que permite enviar notificaciones, este servicio de mensajería actúa bajo eventos sin tener que preocuparse por servidores, solamente requiere de configuración en base a nuestro uso. Es importante poder reaccionar en caso de que la función Lambda falle. Por lo que en caso de error en su ejecución a través de SNS se enviara un email a los desarrolladores a cargo para que tomen acciones.
ECS Elastic Container Service (ECS) es un servicio de orquestación de contenedores completamente administrado que lo ayuda a implementar, administrar y escalar aplicaciones con contenedores. En este proceso de migración a la nube es importante poder aprovechar al máximo los datos, para ello aquellos que vayan a ser utilizados de forma analítica deberán ser procesados. En este esquema de servicios en la nube se opta por realizar un pipeline, el cual será desplegado en forma de container. Para lo que necesitaremos el servicio Elastic Container Service ECS, donde se ejecutara esta aplicación.
RDS Relational Database Service es el servicio de aws orientado a bases de datos, el cual dispone de un amplio catálogo de motores, con diferentes posibilidades de configuración y personalización. El funcionamiento de la aplicación utiliza un servicio de bases de datos relacionales RDS para alojar la base de datos de respaldo para la instancia de ECS. Esta base de datos contiene la información metadata que impulsa el sistema de procesamiento de datos.
EFS Proporciona un almacenamiento de archivos totalmente elástico y sin servidor para que pueda compartir datos de archivos sin aprovisionar ni administrar la capacidad de almacenamiento ni el rendimiento. Con Elastic File System EFS, los datos del pipeline no se perderán cuando se termine el servicio ECS. EFS permite persistir datos entre contenedores dentro de ECS, dando una capa extra en caso de que los contenedores sean relanzados.
ALB /ELB El Aplication Load Balancer (que forma parte de Elastic Load Balancer) es equilibrador de carga que aplicación funciona al nivel de las solicitudes (capa 7) y dirige el tráfico a los destinos según el contenido de la solicitud. El equilibrador de carga de aplicación es ideal para el equilibrio de carga avanzado de tráfico HTTP y HTTPS. Como en necesario poder tener un control sobre el procesamiento de datos, se necesita poder ingresar mediante una URL pública a la aplicación que gestiona el pipeline, para ello utilizamos Application Load Balancer ALB. Además, ALB permite recibir por HTTP los datos enviados por la función Lambda.
Redshift Es un servicio de data warehouse administrado de varios petabytes en la nube. Amazon Redshift sin servidor le permite acceder a los datos y analizarlos sin todas las configuraciones de un almacenamiento de datos aprovisionado. Responde a una estructura columnar y permitiendo realizar las consultas mediante SQL, manera rápida, aunque sean de gran volumen. Para utilizar de manera rápida y óptima los datos procesados, pudiendo ser consumidos por los servicios de análisis avanzados, generación automatizada de informes, tableros interactivos y modelos de machine learning se decide implementar un Data Warehouse con Redshift. Este permitirá que los diferentes equipos tengan un acceso rápido, optimo y a medida a la información que necesitan.
CloudTrail Monitorea y registra la actividad de la cuenta en toda la infraestructura de AWS, lo que le permite controlar las acciones de almacenamiento, análisis y reparación. Un aspecto muy importante es registrar la actividad en una cuenta, tener un historial de eventos, que permita monitorear la actividad de los usuarios. Gracias a CloudTrail se detectan prácticas inadecuadas y que usuario las realizó.
CloudTrail Lake Permite ejecutar consultas basadas en SQL en tus eventos. CloudTrail Lake convierte los eventos existentes en formato JSON basado en filas al formato Apache. Pudiendo conservar los datos de eventos en un almacén de datos de eventos durante 7 años. CloudTrail mantiene únicamente los registros durante 90 dias. Para poder guardar los registros de actividad de hasta 7 años se utiliza CloudTrail Lake. El cual además permite realizar consultas SQL y mantiene una estructura columnar. Este servicio facilita realizar consultas de auditoría.
CloudWatch CloudWatch es un servicio que monitorea las aplicaciones, responde a los cambios de rendimiento, optimiza el uso de los recursos y proporciona información sobre el estado operativo. Permite realizar tableros y tener un control sobre las fallas que se produzcan en los diferentes servicios. Pudiendo crear alarmas en caso de tener valores atípicos o cumplirse ciertos eventos o manejar alertas de costos, que supongan un riesgo. 
GuardDuty GuardDuty es un servicio de detección de amenazas que supervisa de manera continua sus cargas de trabajo y cuentas de AWS para detectar actividades maliciosas y envía hallazgos detallados de seguridad para su visibilidad y corrección. En base a los objetivos de seguridad se decide utilizar GuardDuty el cual provee una capa extra en la detección de problemas y fallas de seguridad. Ya que de manera automática realiza un seguimiento de eventos de CloudTrail y CloudWatch permitiendo detectar actividades maliciosas, además envía hallazgos de seguridad para su corrección.
Security Hub Es un servicio de administración de la posición de seguridad en la nube (CSPM) que realiza revisiones de las prácticas recomendadas de seguridad, agrega alertas y permite la corrección automatizada. Puesto que la seguridad es uno principios de esta migración, Security Hub se presenta como un servicio que mejorará la misma. Ya que a través de su sistema de score y automatización de prácticas recomendadas. Genera insights que permiten realizar cambios en aspectos que aún no llegan a ser críticos previniendo posibles eventos no deseados a futuro.

Se adjunta un esquema de la arquitectura al final de este archivo.

ESTRUCTURA DE BILLING

A continuación, se detalla un cálculo de costos en base a los servicios a utilizar, su carga de trabajo y configuraciones recomendadas. Puesto que la empresa está ubicada en México se elige la región US East (N. Virginia) para cualquier servicio. Dado que esta región ofrece los precios más bajos, y la distancia no afectara mucho en la latencia. Que en este tipo de servicios no es tan crítica.

Todos los valores son en USD.

Cálculo de Billings
Servicio Costo inicial Costo mensual Detalle
IAM Gratis Gratis IAM es un servicio básico y gratuito en AWS.
VPC 0 0 Región US East
S3 Glacier 393.22 63.41

Tamaño medio de objeto de S3 Glacier Deep Archive (1000 MB)

Almacenamiento de S3 Glacier Deep Archive (60 TB por mes)

Solicitudes PUT, COPY, POST y LIST a S3 Glacier (2000)

Solicitudes de restauración (estándar) (1000)

Solicitudes de restauración (en bloque) (1000)

Recuperaciones de datos (estándar) (30 GB mes)

Recuperaciones de datos (en bloque) (15 GB por mes)

DT Entrada: Internet (20 TB al mes)

DT Salida: Internet (20 GB al mes)

S3 Bucket 0,03 45,95

Almacenamiento de S3 Estándar (40 GB mes)

Solicitudes PUT, COPY, POST y LIST a S3 (1000)

Solicitudes GET, SELECT y todas las demás desde S3 Estándar (1000)

Datos devueltos por S3 Select (10 GB mes)

Datos escaneados por S3 Select (10 GB mes)

Tamaño medio de objeto de S3 (1000 MB)

DT Entrada: Internet (1 TB al mes)

DT Salida: Internet (500 GB al mes)

Lake Formation 0,00 135,00

Datos escaneados (60 TB)

Uso de almacenamiento en un mes (en millones) (1)

Solicitudes en un mes (en millones) (1)

Lambda 0,00 0,05

Arquitectura (x86)

Almacenamiento efímero asignado (512 MB)

Modo de invocación (En búfer)

Cantidad de solicitudes (100 por mes)

ECR 0,00 0,10

DT Entrada: Internet (1 GB al mes)

DT Salida: Not selected (0 TB al mes)

Cantidad de datos almacenados (1 GB por mes)

SNS 0,00 0,00 Notificaciones por EMAIL o EMAIL-JSON (60 por mes)
ECS FARGATE 0,00 0,79

Sistema operativo (Linux)

Arquitectura de la CPU (x86)

Duración promedio (10 minutos)

Número de tareas o pods (2 por día)

Cantidad de memoria asignada (8 GB)

Cantidad de almacenamiento efímero asignado a Amazon ECS (20 GB)

RDS for PostgreSQL 0,00 26,70

Volumen de almacenamiento (SSD de uso general (gp2))

Cantidad de almacenamiento (10 GB)

Nodos (1)

Tipo de instancia (db.m1.small)

Utilización (solo bajo demanda) (2 Hours/Day)

Opción de implementación (Single-AZ)

Modelo de precios (OnDemand)

EFS 0,00 0,60

Solicitudes de acceso poco frecuente (0 GB al mes)

Capacidad de almacenamiento deseada (2 GB al mes)

ALB (ELB) 0,00 17,39 Número de balanceadores de carga de aplicaciones (1)
Redshift 0,00 144,00

Nodos (1)

Tipo de instancia (dc2.8xlarge)

Utilización (solo bajo demanda) (30 Hours/Month)

Modelo de precios (OnDemand)

CloudTrail + CloudTrail Lake 0,00 6,50

Unidades de eventos de administración (M)

Registros de seguimiento de administración de escritura (1)

Registros de seguimiento de administración de lectura (1)

Unidades de eventos de datos (millones), Registros de seguimiento de S3 (1)

Registros de seguimiento de Lambda (1), Unidades de eventos de Insights (millones)

Registros de seguimiento con eventos de Insights (1)

Eventos de administración de escritura (1 por mes)

Operaciones de S3 (2 por mes)

Eventos de datos Lambda (1 por mes)

N.º de eventos de administración de escritura analizados (1 por mes)

Eventos de administración de lectura (1 por mes)

CloudWatch 0,00 34,41

N.º de paneles (10)

N.º de métricas de las alarmas de resolución estándar (10)

N.º de métricas de las alarmas de alta resolución (3)

N.º de métricas (incluye las métricas personalizadas y detalladas) (30)

Registros estándares: datos incorporados (1 GB)

Registros entregados a CloudWatch Logs (1 GB)

N.º de alarmas compuestas (3)

GuardDuty 0,00 0,00 Análisis de eventos de CloudTrail (500 por mes)
Security Hub 0,00 0,60

N.º de cuentas (60)

N.º de controles de seguridad por cuenta (10)

N.º de resultados capturados por cuenta (5)

N.º de reglas de automatización (5)

N.º de criterios cada regla de automatización (5)

Subtotal 393,25 475,59 Resumen estimación
Total 6100,33 Costo por 12 meses. Incluye el costo inicial.

Para consultar el presupuesto directamente desde la calculadora de AWS: https://calculator.aws/#/estimate?id=fed6c0fa436e4e4171b5dce3d47e690ddb9cae8d

CRONOGRAMA DE IMPLEMENTACIÓN

Este cronograma de implementación va desde el trabajo previo, pasando por las etapas de adaptación a la nube, la migración y despliegue de equipos y servicios.

Mes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Quincena
Actividad Duración
Relevamiento requisitos previos 15 días
Diagrama y diseño arquitectura 15 días
Cronograma de implementación 15 días
Presupuestación y aprobación 15 días
Capacitación personal nivel 1 15 días
Capacitación personal nivel 2 1 mes
Configuración cuenta y entrega roles empleados 15 días
Diseño de empaquetado y estructura Datalake 1 mes
Desarrollo funciones lambda 1 mes
Diseño de arquitectura de datos (tablas) para Redshift 1 mes
Etapa nivel 1 45 días
Políticas de seguridad y servicios nivel 1. 15 días
Migración datos on premise 1 mes
Etapa nivel 2 1 año
Pipeline application deployment 15 días

Datawarehouse

Set up and fine tuning

15 días
Implementación servicio análisis avanzado 3 meses
Implementación generación automatizada de informes 3 meses
Implementación diseño de tableros interactivos 3 meses
Implementación desarrollo de modelos de ML 3 meses

DETALLE CRONOGRAMA

Se describen y especifican ciertos aspectos a resaltar del cronograma, tales como los hitos que dividen las etapas (líneas rojas), milestone (línea azul), además de aclarar la división en el despliegue de servicios en nivel 1 y 2.

Detalle Incluye Descripción
Nivel 1 VPC, LakeFormation, S3 Bucket, S3 Glacier, CloudTrail, CloudTrail Lake, CloudWatch, GuardDuty y Security Hub. Estos servicios son los empleados en la 1er etapa de la migración. Aquellos que forman parte del conjunto de seguridad y alerta. Junto con los que se necesitan para la construcción del Datalake.
Nivel 2 Lambda, ECR, SNS, ECS, RDS, ALB, EFS y Redshift Estos servicios son los empleados en la 2da etapa de la migración. Aquellos que forman parte de la transformación de datos entre el Datalake y el Datawarehouse junto a este último en sí.
1er hito Cualquier requisito previo y necesidad de planificación, en la aprobación de la migración a la nube. En esta etapa se realizarán todos los pasos que la empresa necesita antes de aprobar la migración a la nube de aws.
2do hito Necesidades previas al despliegue de cualquier servicio. Esta etapa comprende la transición del personal, capacitación y diseño de las soluciones especificas que cada equipo debe hacer previo a la primera etapa de despliegue.
3er hito Despliegue servicios nivel 1 y preparación del segundo. En este periodo se realiza la primera etapa de la migración. Donde se comenzará el despliegue de los servicios, que comprendan mover los datos on premise a la nube de aws. Y todos aquellos a cargo de la seguridad, protección, detección, alarma y control.
Milestone Despliegue servicios nivel 2 y sistema de mejora de utilización de datos. En conjunto con la finalización del proceso. En este periodo se realizan la segunda etapa de la migración. Donde se trabajará en la transformación de los datos. Para que los diferentes sistemas (equipos) de mejora en la utilización de los estos vayan siendo lanzados según el objetivo a cumplir. Una vez estos aspectos estén concluidos se dará por finalizada la etapa de migración y materialización de los objetivos de esta.

VENTAJAS E IMPACTO EN EL NEGOCIO DE LA MIGRACIÓN A CLOUD

  • Comodidad y practicidad: La migración a la nube de aws elimina todos los inconvenientes y obligaciones que requiere mantener y gestionar una infraestructura de este tipo por parte de la empresa. Evitando procesos de instalación, mantenimiento, revisión, control y consumo constante que pueden ser costosos. Además, se evita tener que destinar un espacio físico para esta infraestructura. Permitiendo acceder a todos los beneficios cuya infraestructura será remota y externa a la empresa.
  • Concentración en el negocio: En este caso la empresa no se especializa en la infraestructura. Ni en los equipos que van a trabajar en la nube de aws. Permitiendo que los diferentes grupos de trabajo ocupen todo su tiempo y esfuerzo en las tareas que aportan valor a la empresa. Mejorando los procesos que tienen a cargo sin desviarse de sus objetivos principales por atender a la infraestructura.
  • Movilidad: En caso de que se agreguen nuevos sitios físicos a la empresa esto no será un problema. Ya que al estar toda la infraestructura de forma remota permite la conexión mediante internet. Sin tener que conectar físicamente los diferentes dispositivos con datos a un servidor o disco on premise.
  • División de tareas y equipos específicos: Por su naturaleza aws es un entorno donde cada persona tiene ciertos permisos, políticas y pertenece a un grupo. Además, los servicios son específicos para diferentes aplicaciones. Esto deriva en una estructura granular en el conjunto de los empleados. Lo cual promueve una organización interna donde los diferentes equipos, aunque todos trabajen bajo la misma arquitectura, tengan diferentes propósitos, con funciones y roles internos diferentes; promoviendo un trabajo colaborativo y multidisciplinario cuando se trata de los objetivos comunes.
  • Fácil adaptabilidad: Los diferentes servicios de aws permiten que procesos que actualmente se ejecutaban on premise no tengan que sufrir grandes cambios. Ya que muchos de los servicios permiten que los procesos de desarrollo on premise, que utilizaban cierta aplicación o lenguaje de programación se trasladen a la nube sin grandes cambios; solamente adaptándolos para que estos sean lo más eficiente posible.

MEJORES PRÁCTICAS

A continuación, se citan las mejores prácticas para llevar a cabo el proceso de migración:

  • Seguridad: En este proceso de migración uno de los aspectos más importantes es la seguridad, puesto que los problemas de la empresa llevaron a que la seguridad fuera un objetivo específico tal cual se indicó. Para ello se destinaron una cantidad de servicios en post de mejorar la misma. Es por ello, que todos los servicios, junto con las practicas recomendadas en cada servicio, las prácticas de seguridad generales a los empleados y prácticas de seguridad de datos sean aplicadas desde el primer momento. Los empleados a cargo de la seguridad forman parte del primer grupo en capacitarse y estos servicios son los primeros en desplegarse. Por lo que es crucial que desde el primer día que se inicie la migración se apliquen todas las medidas y procesos por parte de los encargados de seguridad.
  • Optimización de costos: Puesto que esta migración está divida en dos etapas. Es importante respetar el tiempo de despliegue de los servicios de nivel 1 y 2. Y no caer en el error de desplegar todos a la vez. Ya que los servicios de nivel 2 no serán ni podrán ser utilizados hasta que la migración de datos on premise sea completada. Por lo que en caso de desplegar todo a la vez se pagaría por algo que durante un tiempo no se podrá utilizar. Además, es importante tener desde el primer momento las alarmas de CloudWatch activadas, para detectar problemas en el consumo o fallas en las prácticas de los diferentes equipos. Como podría ser no detener la instancia de Redshift cuando no se utiliza (practica recomendada por aws para reducir costos en uso on demand).
  • Perfomance: A la hora de reducir tiempos de carga y descarga de datos dentro de un datalake es muy importante seguir ciertas prácticas en el manejo de los datos y archivos que este almacena. La primera es utilizar multi-part upload; el cual nos dice que para todos los archivos con peso superiores a 5GB (recomendado para aquellos con mayor peso a 100 MB) se debe realiza su carga a el Bucket S3 de forma paralela dividiendo o particionando este archivo en archivos más pequeños. En caso de requerir realizar grandes consultas (GET) en archivos .csv, .parquet o .json dentro de un bucket S3 es recomendable utilizar S3 Select. Gracias al cual podremos ejecutar consultas utilizando SQL para realizar Selects de los archivos almacenados dentro del bucket, ofreciendo un aumento de velocidad y reducción de costo.
  • Fiabilidad: Es importante tener una arquitectura de trabajo fiable, es decir, que tenga una alta probabilidad de tener un buen funcionamiento de forma constante. Para ello hay aspectos que pueden mejorar la fiabilidad de nuestra arquitectura. Uno de ellos es tener una arquitectura que soporte fallas durante la carga de trabajo. Lo que conlleva a que ciertas partes de la arquitectura puedan seguir funcionando, aunque se produzcan problemas o fallas en otra. Es decir, tener un flujo de trabajo desacoplado lo mas posible. En el sistema propuesto si hay alguna falla en la etapa de transformación de datos entre el datalake y el datawarehouse ambos podrán seguir funcionando. El datalake ya que no depende del pipeline. Y el datawarehouse también puede funcionar, aunque no ingeste datos por un tiempo. Además, es primordial que en etapas que tienen componentes lógicos o de programación estos sean testeados y probados antes de llevarlos a producción. Por ejemplo, realizando pruebas en la función lambda para minimizar los casos de error una vez ya se encuentre en producción.
  • Excelencia operativa: Para maximizar la capacidad de gestionar y operar de forma eficiente, segura y confiable las cargas de trabajo en la nube es recomendable realizar un cambio en la organización interna de la empresa. Estableciendo una cultura del DevOps: Fomentando la colaboración, creando un entorno donde los equipos de desarrollo y operaciones trabajen juntos de manera integrada. Automatizando los procesos, implementando herramientas y prácticas de automatización para agilizar la gestión de la infraestructura. Compartiendo la responsabilidad, definiendo los roles y responsabilidades claros para los equipos de desarrollo y operaciones. Y midiendo y monitoreando el rendimiento de las aplicaciones y la infraestructura para identificar áreas de mejora.

CONCLUSIÓN

Como ejercicio de análisis final se pueden marcar algunos de los aspectos más importantes de la migración propuesta.

Que el proceso de migración a la nube de aws debe ser acompañado de un análisis y estudio del caso previo, ya que la base del éxito de una migración a un sistema cloud es una buena planificación junto con una correcta utilización de los servicios que aws ofrece. Priorizando que las soluciones se adapten a las necesidades del cliente y no viceversa.

La alta seguridad que ofrecen los sistemas e infraestructuras que ofrece aws deben ser acompañadas por metodologías, formas y equipos de trabajo que también implementen políticas y buenas prácticas de seguridad. Ya que el usuario debe ser responsable de un correcto manejo y administración de los sistemas y servicios.

La migración a la nube de aws permite que la empresa tenga un control más exacto de cuanto desea gastar, permitiendo realizar presupuestos específicos para la infraestructura cloud.

AWS permite que los equipos de trabajo se centren en realizar mejor sus tareas sin tener que preocuparse por problemas o fallas de los sistemas on premise. Ahorrando tiempo y permitiendo que se especialicen en sus áreas.

Por último, se concluye que una migración a la nube de aws debe ser acompañada por un cambio en la cultura de la empresa. Fomentando la innovación, un sistema de trabajo especializado pero colaborativo. Donde los roles estén definidos y que priorice las buenas prácticas entre los empleados. Incentivando a estos a mejorar y desarrollar nuevas habilidades.

BIBLIOGRAFÍA

Achalhi, R. (2020, enero 9). Data lake: ¿qué es y como implementarlo en AWS? Nubersia. https://www.nubersia.com/es/blog/data-lake/

AWS ECS deployment architecture. (s/f). Mage Docs https://docs.mage.ai/production/deploying-to-cloud/aws/aws-ecs-architecture

AWS Well-Architected Framework. (s/f). Amazon.com https://docs.aws.amazon.com/es_es/wellarchitected/latest/framework/rel-failmgmt.html

Deploy to AWS with terraform. (s/f). Mage Docs https://docs.mage.ai/production/deploying-to-cloud/aws/setup

Filtering and retrieving data using Amazon S3 Select. (s/f). Amazon.com https://docs.aws.amazon.com/AmazonS3/latest/userguide/selecting-content-from-objects.html

Khandelwal, S. (2021, mayo 17). Optimize your AWS S3 performance. AWS in Plain English. https://aws.plainenglish.io/optimize-your-aws-s3-performance-27b057f231a3

Lago de datos en AWS. (s/f). Amazon.com https://aws.amazon.com/es/solutions/implementations/data-lake-solution/

Official, A. W. S. (2016, enero 25). How do I use the AWS CLI to upload a large file in multiple parts to Amazon S3? Amazon Web Services, Inc. https://repost.aws/es/knowledge-center/s3-multipart-upload-cli

Performance Design Patterns for Amazon S3. (s/f). Amazon.com https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-design-patterns.html

Performance Guidelines for Amazon S3. (s/f). Amazon.com https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-guidelines.html

Portfolio discovery and analysis for migration. (s/f). Amazon.com https://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/migration-portfolio-discovery/planning.html

Prácticas recomendadas para la fase de diseño. (s/f). Amazon.com https://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/sap-greenfield-implementations/design.html

Principios de diseño. (s/f). Amazon.com https://docs.aws.amazon.com/es_es/wellarchitected/latest/framework/oe-design-principles.html

Reliability Pillar - AWS Well-Architected Framework. (s/f). Amazon.com https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html?ref=wellarchitected-wp

Situaciones comunes de Amazon SNS. (s/f). Amazon.com https://docs.aws.amazon.com/es_es/sns/latest/dg/sns-common-scenarios.html

Slingerland, C. (2023, mayo 2). AWS Redshift 101: What is it and when should you use it? CloudZero. https://www.cloudzero.com/blog/aws-redshift/

Top 5 Factors for Cloud Security Success. (s/f). Awscloud.com https://pages.awscloud.com/rs/112-TZM-766/images/GEN_mttc-4infographics-security_Sep-2018.pdf?trk=mttc_banner_link_1

Using an Amazon S3 trigger to invoke a Lambda function. (s/f). Amazon.com https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html

What is Amazon CloudWatch? (s/f). Amazon.com https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html

What is AWS Lake Formation? (s/f). Amazon.com https://docs.aws.amazon.com/es_es/lake-formation/latest/dg/what-is-lake-formation.html#lake-formation-features

What You Need to Know About GDPR. (s/f). Awscloud.com https://pages.awscloud.com/rs/112-TZM-766/images/GEN_mttc-4infographics-gdpr-namer_Sep-2018.pdf?trk=mttc_banner_link_3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment