Blog de Amazon Web Services (AWS)

Estime costos de infraestructura con AWS Application Discovery Service y Jupyter Notebooks

Por Daniel Bravo, Arquitecto de Soluciones en AWS
José Peñúñuri, Arquitecto de Soluciones en AWS

 

Los proyectos de migración a la nube normalmente comienzan con una fase de análisis en la que se hace un descubrimiento del ambiente y los recursos de infraestructura, para así identificar que aplicaciones/servidores son candidatos a ser migrados. Este descubrimiento se puede realizar a través del servicio de AWS Application Discovery Service (ADS). Este servicio lo ayudará a planificar sus proyectos de migración mediante el descubrimiento y recopilación de información acerca de su ambiente de servidores. ADS le ayudará a obtener un inventario de servidores y sus características, tales como sistema operativo, recursos de cómputo, y almacenamiento que se tienen asignados. ADS también le entregará información de desempeño de sus servidores y emitirá recomendaciones del tipo de instancia Amazon EC2 adecuada para su carga de trabajo en la nube con base en los patrones de utilización de los recursos de cómputo y memoria que tienen asignados dichos servidores. ADS puede descubrir y recopilar información de sus servidores de dos formas:

  • Utilizando un agente que se instala en el servidor que captura la configuración del sistema, información del rendimiento, los procesos en ejecución y las conexiones de red entre los sistemas. El agente es compatible con la mayoría de los sistemas operativos Linux y Windows, y puede implementarse en servidores físicos, instancias Amazon EC2 y máquinas virtuales.
  • Utilizando el AWS Discovery Connector, un dispositivo virtual (OVA) que se instala en su ambiente VMware y que recopila información de sus servidores virtuales sin tener que instalar agentes en el sistema operativo.

Los datos recopilados se almacenan cifrados en su cuenta de AWS, y pueden ser exportados en formato de texto CSV desde el servicio de AWS Migration Hub o por medio de línea de comandos (CLI). Con esta información usted podrá a hacer un dimensionamiento adecuado de las cargas de trabajo que migrará a la nube y obtendrá una estimación del costo de operar su ambiente en AWS. Lo mejor de todo es que ADS es una herramienta disponible sin costo.

En esta publicación se explica como sacar mayor provecho de los resultados de ADS utilizando herramientas de análisis de datos como Jupyter Notebooks, Python y Pandas. Usted analizará resultados de muestra de la ejecución de ADS sobre un ambiente VMware en el que se utilizó el AWS Discovery Connector. En esta publicación se provee una plantilla de AWS CloudFormation que despliega una instancia Notebook de Amazon SageMaker que contiene un Notebook de Jupyter y los resultados de muestra de ADS necesarios para este análisis. Usted también verá cómo exportar los resultados de ADS desde AWS Migration Hub en caso de que decida utilizar esta herramienta para hacer un análisis de su propia infraestructura.

Analizar los resultados con el notebook de Jupyter le permitirá obtener información que no se encuentra a simple vista como:

  • Estimación total de costos de elementos como instancias de Amazon EC2, volúmenes de disco de Amazon EBS y tráfico de salida (DTO por sus siglas en inglés, Data Transfer Out).
  • Recomendación del tipo de volumen Amazon EBS a utilizar basada en la cantidad de operaciones de entrada y salida (IOPS por sus siglas en inglés, Input Output Per Second).
  • Lista de servidores y sus tipos de instancias recomendadas, con datos de vCPUs, RAM, almacenamiento, IOPS y DTO.
  • Lista de servidores que no se pudieron procesar.
  • Lista de servidores que:
    • No tienen actividad.
    • Tienen menos de 10 IOPS de actividad.
  • Lista de las 10 instancias Amazon EC2 más costosas.
  • Le permitirá generar gráficas tales como:
    • Distribución de sistemas operativos.
    • Distribución de los tipos de instancias recomendadas.
    • Distribución del tipo de volumen Amazon EBS recomendado para las instancias.

Prerrequisitos

Para ejecutar exitosamente el siguiente ejercicio, debe cumplir con los siguientes prerrequisitos:

  • Tener una cuenta de AWS. Si no tiene una, la puede generar aquí.
  • Trabajar en la región de N. Virginia (us-east-1).
  • Desplegar una plantilla de AWS CloudFormation: instance-ads-eda.yml.
Nota: Si usted ya cuenta con una instancia Notebook de Amazon SageMaker o un ambiente Jupyter en su computadora personal, puede descargar los archivos necesarios para este ejercicio desde este repositorio y cargarlos manualmente en su ambiente.

Desplegar plantilla de AWS CloudFormation

La plantilla de AWS CloudFormation que desplegará a continuación creará la instancia notebook de Amazon SageMaker que utilizará en el análisis. Para mayor información acerca de como desplegar plantillas de AWS CloudFormation, puede consultar la documentación disponible.

Dentro de la consola de AWS:

  1. Haga clic en Services y después en CloudFormation.
  2. Haga clic en Create stack y seleccione la opción de With new resources (standard).
  3. Seleccione la opción de Template is ready.
  4. Seleccione la opción de Upload a template file.
  5. Haga clic en Choose file y seleccione la plantilla que descargó (instance-ads-eda.yml).
  6. Haga clic en Next.
  7. Ingrese un nombre en el campo de Stack name.
  8. Haga clic en Next.
  9. En la pantalla de Configure stack options mantenga los valores predeterminados y haga clic en Next.
  10. Seleccione la casilla de “I acknowledge that AWS CloudFormation might create IAM resources with custom names”.
  11. Haga clic en Create stack.

La plantilla tomará aproximadamente de cinco a diez minutos en desplegarse. Una vez que el despliegue haya concluido, proceda con las instrucciones descritas a continuación.

Análisis de resultados de ADS con Jupyter Notebooks

  1. Haga clic en Services y posteriormente en Amazon SageMaker.
  2. En el menú lateral izquierdo, haga clic en Notebook y posteriormente en Notebook instances.
  3. Seleccione la instancia llamada ads-blog-instance-eda.
  4. Haga clic en el menú desplegable de Actions y posteriomente haga clic en Open Jupyter.

Al ingresar a Jupyter encontrará tres archivos:

  • joinclean-ads-v2.ipynb – el notebook de Jupyter con el que hará el análisis.
  • EC2InstanceRecommendations.csv y SystemPerformance.csv – los resultados de muestra de la ejecución de ADS en un ambiente VMware; estos son los insumos para el análisis.
Nota: Estos tres archivos son cargados durante la creación de la instancia notebook de Amazon SageMaker. Si usted está utilizando su propia instancia, deberá cargar manualmente los archivos que se encuentran en este repositorio.

 

 

  1. Haga clic en el archivo joinclean-ads-v2.ipynb para ingresar al notebook.
  2. Verifique en la esquina superior derecha que el runtime (o kernel) sea conda_python3.
  3. Ejecute cada una de las celdas siguiendo las instrucciones.

Al posicionarse en alguna de las celdas, usted puede ejecutar dicha celda haciendo clic en el botón Run. También puede ejecutar todas las celdas a la vez haciendo clic en el menú de Run > Run All Cells. Este notebook está dividido en cuatro secciones:

  1. Definición de parámetros. En esta sección se importan las librerías necesarias para la correcta ejecución del análisis. También se consultan las APIs de precios de AWS para actualizar los precios de Amazon EBS y de tráfico de salida en la región de N. Virginia.
  2. Pre-procesamiento de datos: En esta sección se unen las tablas contenidas en los archivos EC2InstanceRecomendations.csv y SystemPerformance.csv, se renombran algunas columnas, y se hace una limpieza de datos para mantener únicamente las columnas que son de interés para el análisis. En esta sección se llevan a cabo las siguientes tareas:
  • Se genera una lista de los servidores para las cuales ADS no pudo emitir una recomendación de tipo de instancia, y se guarda en el archivo EC2SinRecomendacion.csv.
  • Se define una función que determina el tipo de volumen Amazon EBS (gp3 o magnetic/standard) para cada instancia con base en los IOPS y se calcula el costo asociado.
  • Se descartan los servidores apagados.
  • Se convierte la salida de MB y Bytes a GB, para la memoria, para los discos y para el ancho de banda.
  • Se descartan los servidores para los que ADS no emitió recomendación.

Al final de esta sección se obtiene una tabla en memoria con todos los servidores para los que ADS sí emitió una recomendación, junto con sus costos asociados de tipo de instancia Amazon EC2 y tipo de volumen Amazon EBS. Esta tabla se analizará en las siguientes secciones.

  1. Análisis exploratorio de datos: En esta sección se ejecutan las siguientes tareas:
  • Se grafica la distribución de tipos de instancias Amazon EC2 recomendadas, sistemas operativos y de tipos de volúmenes Amazon EBS.
  • Se genera una lista de los servidores que reportaron 0 IOPS, y se guarda en el archivo Zombie_vm.csv.
  • Se genera una lista de los servidores que reportaron menos de 10 IOPS, y se guarda en el archivo Zombie_vm_menos_10_iops.csv.
  • Se genera una lista de los 10 servidores con mayor costo de cómputo, y se guarda en el archivo top_10.csv.

Ejemplos de gráficas generadas:

 

 Distribución de tipos de instancias

 

Distribución de sistemas operativos

Tipo de volumen Amazon EBS recomendado

 

  1. Análisis de costos y exportación de la tabla de recomendaciones: En esta sección se realiza la suma de las columnas de costos estimados mensuales de Amazon EC2, Amazon EBS y transferencia de salida (para esto se asume que 20% del tráfico de red reportado por cada servidor es tráfico que sale hacia Internet). Al final, se exporta la tabla de instancias recomendadas en el archivo EC2InstanceRecomendations _output.csv. La salida del notebook de Jupyter se puede exportar en formato HTML para futura referencia (File > Download as > HTML).

Exportar datos de AWS Application Discovery Service

 Si usted ejecutó su propio análisis con ADS dentro de un ambiente VMware, puede exportar los resultados desde AWS Migration Hub y analizarlos siguiendo los mismos pasos que en el ejercicio anterior.

Nota: El notebook de Jupyter que se utiliza en este análisis fue creado exclusivamente para procesar los resultados del análisis de un ambiente Vmware en el que se utilizó el AWS Discovery Connector para la recopilación de datos. Si usted desea analizar los resultados de un análisis en el que se utilizó el agente, tendría que hacer cambios en el código del notebook.
  1. Haga clic en Services y posteriormente en AWS Migration Hub.
  2. Haga clic en Servers bajo el apartado de Discover.
  3. Haga clic en el menú desplegable de Actions y posteriormente haga clic en Export Discovery data.

 

 

Este procedimiento descargará un archivo ZIP que contiene varios archivos de texto CSV. Dentro de estos archivos CSV encontrará un archivo con la siguiente nomenclatura: <AWS account ID>_systemPerformance.csv. Renombre este archivo como SystemPerformance.csv y guárdelo ya que lo utilizará más adelante.

  1. Dentro del servicio de AWS Migration Hub haga clic en EC2 Instance Recommendations.

En la pantalla de Export EC2 instance recommendations deberá seleccionar los parámetros bajo los cuales exportará las recomendaciones para sus instancias tales como las preferencias del dimensionamiento, región de AWS, tenencia y el modelo de precios.

  1. Para efectos de este ejercicio seleccione las siguientes opciones:
  • CPU/RAM sizing = Maximum utilization.
  • Region = US East (N. Virginia).
  • Tenancy = Shared instances.
  • Pricing model = On-Demand.
  1. Haga clic en Export recommendations.

 

 

  1. Guarde el archivo ZIP que se descargará a continuación.
  2. Extraiga el archivo CSV que se encuentra dentro del archivo ZIP y renómbrelo como como EC2InstanceRecommendations.csv. Guarde este archivo ya que lo utilizará más adelante.

Cargar archivos en Amazon SageMaker Notebook Instance

Para este nuevo análisis, deberá subir a su ambiente Jupyter los archivos EC2InstanceRecommendations.csv y SystemPerformance.csv que exportó desde AWS Migration Hub. Para este análisis, puede reutilizar la instancia de Amazon SageMaker del ejercicio anterior.

  1. De regreso en Jupyter, haga clic en el botón de Upload y seleccione los archivos como EC2InstanceRecommendations.csv. y SystemPerformance.csv.
  2. Haga clic en el botón de Upload de cada uno de los archivos.

 

 

  1. Haga clic en el archivo joinclean-ads-v2.ipynb para ingresar al notebook.
  2. Verifique en la esquina superior derecha que el runtime (o kernel) sea conda_python3.
  3. Ejecute cada una de las celdas siguiendo las instrucciones tal cual como lo hizo en el ejercicio con los resultados de muestra.

Limpieza del ambiente

La instancia Notebook de Amazon SageMaker tiene un costo asociado, por lo cual es altamente recomendable apagarla o eliminarla una vez que termine el análisis para así evitar cargos adicionales.

 

Conclusión

En esta publicación se explicó como utilizar herramientas de análisis de datos como Jupyter Notebooks, Python y Pandas para sacar mayor provecho de los resultados de descubrimiento generados por AWS Application Discovery Service. El uso en conjunto de estas herramientas le permitirá ver nuevas perspectivas que no se detectan a simple vista. Estas herramientas también lo ayudarán a automatizar tareas manuales como la definición del tipo de volumen Amazon EBS basada en IOPS, y la estimación de costos totales del cómputo y almacenamiento de nube necesarios para su proyecto de migración.

 


Sobre los autores

Daniel Bravo es Arquitecto de Soluciones en AWS México y ayuda a clientes en su viaje de adopción y uso de la nube de AWS.

 

 

 

 

 

José Peñúñuri es Arquitecto de Soluciones en AWS enfocado en ayudar a sus clientes en la adopción de herramientas y servicios que los ayudan a acelerar su migración a la nube.

 

 

 

 

 

Sobre los revisores

Santiago Abarca es Arquitecto de Soluciones Especialista en Analytics con atención a clientes de México y Latinoamérica, enfocado a estrategias de integración y análisis de datos, con soluciones basadas en Lagos de Datos, Data Warehouse, Big Data y visualización de información.

 

 

 

 

 

Angélica Ortega es Arquitecta de Soluciones para Socios de Negocio (PSA) enfocada en atención a socios de Latinoamérica, es líder regional de programas como APN Immersion Day y APN Ambassador. Ha sido Arquitecta de Soluciones, especialista en cloud, encargada de diseño de servicios administrados y desarrolladora de soluciones móviles.