Blog de Amazon Web Services (AWS)

Empoderando a las Organizaciones en la Gestión de Costos en AWS

Por: Alfonso Barbosa, Partner Solutions Architect, Sector Público en Amazon Web Services (AWS) y
Nicolás Bolaños, Solutions Architect Intern, Sector Público en Amazon Web Services (AWS).

Desafíos de la gestión financiera en la nube

La infraestructura de la nube proporciona más agilidad y capacidad de respuesta que los entornos de TI tradicionales, requiriendo que las organizaciones piensen de manera diferente sobre cómo diseñar, construir y administrar sus cargas de trabajo, y cómo llevar a cabo la gestión financiera bajo un modelo de gasto variable. Esto implica establecer desde un principio las expectativas sobre los costos de la nube para los proyectos y aplicaciones, además de facilitar la gestión y el control de los costos para todos los roles de la organización. Adicionalmente, es importante poder entregar información relevante sobre costos, así como optimizar continuamente el gasto en función del uso real y pronosticado de servicios en la nube.

En la experiencia con clientes y socios de negocio hemos identificado desafíos de la gestión financiera en la nube, tales como: la falta de visibilidad de los costos asociados a las cargas de trabajo, tener datos de costos en silos en diferentes cuentas y organizaciones, la incapacidad de rastrear los costos según algún criterio (ej. por proyecto, aplicación, centro de costos, unidad de negocio, cliente) y no contar con información relevante para analizar la rentabilidad de las cargas de trabajo.

Hemos conocido casos en los que se recurre a exportar facturas o informes predefinidos para luego construir reportes en hojas de cálculo, demandando esfuerzo y tiempo considerable para los tipos de análisis requeridos. Por otro lado, se hace uso de servicios como el AWS Cost Explorer, el cual provee una experiencia interactiva basada en reportes para visualizar y comprender costos. También se usan recursos como el Panel de Facturación y la página de Facturas de la consola de AWS Billing, los cuales permiten visualizar información relevante de costos (por servicios, cuenta y región) y consultar facturas por mes. Sin embargo, es necesario una mayor flexibilidad y nivel de granularidad de los datos para hacer análisis más personalizados y profundos.

A partir de los desafíos mencionados anteriormente y el conjunto amplio de servicios, herramientas y recursos que componen el portafolio de AWS de gestión financiera en la nube (Cloud Financial Management – CFM), definimos el marco de una iniciativa a la que denominamos gestión centralizada de costos. Este comprende la arquitectura de una solución basada en tableros de control preconstruidos, además de una práctica con recomendaciones para su despliegue, aprovechamiento y personalización. A continuación, abordamos estos elementos al detalle.

Arquitectura y despliegue de la solución de gestión centralizada de costos

Herramientas como los Cloud Intelligence Dashboards de AWS proveen una serie de análisis preconstruidos a través de tableros de control que facilitan el entendimiento de los costos y consumos en AWS, así como la identificación de oportunidades de optimización de los mismos. Recomendamos hacer una exploración inicial de los siguientes dashboards públicos con datos de ejemplo, siguiendo el orden presentado a continuación:

  1. El Cost Intelligence Dashboard brinda una vista resumen de la facturación y diferentes análisis asociados al consumo de servicios de AWS y por categorías como cómputo, almacenamiento, instancias reservadas/planes de ahorro (ver blog para conocer más al detalle su alcance y beneficios).
  2. El CUDOS Dashboard es un panel detallado, granular y basado en recomendaciones, para ayudar a los clientes a profundizar en sus costos y consumos, y mejorar la eficiencia.
  3. El KPI Dashboard permite definir y dar seguimiento a indicadores relacionados con objetivos de optimización de costos.
  4. El Trusted Advisor Organizational (TAO) Dashboard provee un conjunto de visualizaciones con detalles y tendencias relacionadas con recomendaciones del servicio AWS Trusted Advisor en optimización de costos, seguridad, tolerancia a fallos, rendimiento y límites de servicios para toda la organización.
  5. El Compute Optimizer Dashboard (COD) ayuda a visualizar y dar seguimiento a las recomendaciones del servicio AWS Compute Optimizer, permitiendo identificar oportunidades de optimización de costos para los recursos sobre-aprovisionados y conocer el riesgo operacional de los recursos sub-aprovisionados.

El Cost Intelligence, CUDOS y KPI Dashboards comparten los mismos recursos base asociados con servicios serverless de Analítica y CFM de AWS, estos recursos componen lo que hemos denominado la base (Foundation) de la solución de gestión centralizada de costos, cuya arquitectura se muestra a continuación.

1. Arquitectura base (Foundation) de solución de gestión centralizada de costos

El AWS Cost and Usage Report (CUR) consolida la información al detalle de costos y consumos de servicios, permitiendo definir el nivel de granularidad de los datos (hasta por hora) y su formato (Parquet, CSV), generados en archivos que se almacenan en un bucket de Amazon S3 y se actualizan por lo menos una vez al día. Este componente se puede habilitar en una cuenta de administración de una organización (Organization Management Account) para consolidar los datos de costos y consumos de todas las cuentas vinculadas.

En el CUR también se generan datos asociados a Cost Allocation Tags, los cuales corresponden a etiquetas (tags) de recursos que se activan para organizar y rastrear los costos y consumos bajo diferentes criterios (ej. proyecto, aplicación, centro de costos, unidad de negocio, cliente). Estos archivos se replican a un bucket de S3 de una cuenta de gestión de costos (Cost Management Account) en la que se despliegan los recursos principales de la solución.

Para facilitar el acceso a los datos del CUR, se ejecuta un AWS Glue Crawler (rastreador) que los «escanea» en el servicio de almacenamiento, infiere su estructura y genera una tabla de metadata en el AWS Glue Data Catalog, la cual queda habilitada para ejecutar consultas SQL con Amazon Athena. La solución incluye unas vistas SQL predefinidas que facilitan la comprensión de los datos de costos y consumos del CUR (ver diccionario de datos para conocer todas las columnas con descripciones y ejemplos) al renombrar y crear nuevos campos a partir de lógica de negocio basada en cálculos, validaciones y agregaciones; adicionalmente en estas se incluyen los campos asociados a los Cost Allocation Tags. Por último, los conjuntos de datos (datasets) de Amazon QuickSight acceden a las vistas de Athena y disponibilizan los datos para los tableros de control importados.

Si se requiere considerar atributos de cuentas adicionales a sus IDs, como nombres y etiquetas (los tags de cuenta no se pueden habilitar como Cost Allocation Tags, por lo tanto, sus datos asociados no se generan en el CUR), además de información complementaria de una organización, es necesario desplegar unos recursos adicionales (Organization Attributes) para obtenerlos y generarlos de forma dinámica. A continuación, se muestra la arquitectura base con el componente para obtener los atributos de organización.

2. Arquitectura base (Foundation) + atributos de organización (Organization Attributes) de solución de gestión centralizada de costos

AWS Lambda consulta AWS Organizations periódicamente a partir de una regla de Amazon CloudWatch Events, generando los datos en archivos que se almacenan en Amazon S3. Así como con el CUR, se ejecuta un AWS Glue Crawler que genera una tabla de metadata en el AWS Glue Data Catalog y se despliega una vista en Amazon Athena, que es importada en conjuntos de datos de Amazon QuickSight y cruzada con vistas del CUR. Los datos complementarios de cuentas y la organización quedan disponibles para ser usados en los tableros de control.

El paso a paso de cómo desplegar la solución se encuentra en el workshop Level 200: Cloud Intelligence Dashboards de AWS Well-Architected Labs, que brinda la opción de Advance Setup para el despliegue a partir de tres templates de CloudFormation o Alternative Setup que incluye la guía para hacer el despliegue a partir del CLI (Command Line Interface) o manualmente. Para entender cómo usar servicios fundamentales de Analítica de AWS desde la creación de un «data lake de costos», la consulta de los datos y su visualización, recomendamos seguir la guía de despliegue manual iniciando con el despliegue del Cost Intelligence Dashboard. Una vez desplegados los tableros de control, se pueden guardar como análisis editables para personalizarlos y crear nuevos reportes.

Ejemplos de casos de uso de la solución

Entre las organizaciones que usan una o múltiples cuentas de AWS es común encontrar socios de negocio, incluyendo proveedores de software como servicio (SaaS), que despliegan sus cargas de trabajo (proyectos o soluciones para clientes finales) a través de recursos de nube específicos por cliente (single-tenant) o compartidos entre clientes (multi-tenant). En este caso cada cliente representa un tenant.

La solución de gestión centralizada de costos cubre un amplio rango de casos de uso. Por ejemplo, aquellas organizaciones que tienen soluciones single-tenant pueden conocer los costos para cada tenant según su consumo de servicios de AWS. Para ello es necesario etiquetar cada recurso con un identificador del tenant. Esta etiqueta (tag) se debe habilitar como Cost Allocation Tag para que los datos asociados se generen en el CUR, y posteriormente como campo adicional en las vistas de Athena correspondientes. De esta manera el ID del tenant queda disponible como criterio de agrupación en los análisis a construir, permitiendo unificar los costos y consumos de todos los recursos relacionados con cada uno de los clientes. Este mismo caso aplica para otros criterios de agrupación como entornos (ej. desarrollo, pruebas, producción), proyectos, entre otros.

Otro caso de uso es la consolidación de costos para clientes con cargas de trabajo en una o más cuentas bajo la administración de AWS Organizations. Para esto recomendamos etiquetar cada cuenta con un identificador de cliente y aprovechar los recursos adicionales (Organization Attributes) descritos en la sección anterior, de manera que estos datos queden disponibles como criterio de agrupación para los análisis requeridos.

Adicionalmente, si se gestiona más de una organización, es posible habilitar el CUR en cada una de las cuentas de administración (Organization Management Account) y replicar los datos a la cuenta de gestión de costos (Cost Management Account), en la que se tendría el «data lake de costos». De esta manera toda la información de costos y consumos queda consolidada y disponible para su visualización en los tableros de control.

Extendiendo la solución a entornos multi-tenant

Sin embargo, no todas las soluciones van a tener una infraestructura dedicada para cada uno de sus clientes finales, existirán casos en los cuales uno o varios recursos de nube son compartidos. En este caso ya no es viable la etiqueta (tag) para distinguirlos por tenant. Aquí es necesario implementar otras estrategias de recolección de métricas de consumo y asignación de costos (cost allocation).

Antes de poder dar una respuesta es necesario tener claros dos conceptos fundamentales, las unidades de costo y las unidades de consumo. El primer concepto hace referencia al recurso como la unidad a la cual se le atribuye el costo, por ejemplo, una instancia de EC2 o una función Lambda. Por otra parte, si tenemos varios tenants que usan un recurso en particular, las unidades de consumo representan la proporción (%) de uso por tenant respecto al uso total del recurso. A continuación, se muestra un ejemplo para AWS Lambda y Amazon DynamoDB.

3. Unidades de costo vs Unidades de consumo

El desafío multi-tenant consiste en identificar las unidades de consumo para cada uno de los recursos compartidos entre tenants en una aplicación. La situación se vuelve más compleja cuando cada tipo de recurso puede que necesite una estrategia diferente de instrumentación y cálculo de agregación de costos para cada uno de los tenants. Es posible usar distintas estrategias para recolectar métricas que nos ayuden a inferir los consumos, como el uso de CPU o el número de llamadas por segundo. Sin embargo, estas estimaciones no van a ser del todo precisas en contraste con la realidad del uso de la aplicación, se necesita un nivel de precisión mayor.

Para llegar a ser más precisos es necesario extender la solución de gestión centralizada de costos. El servicio AWS Application Cost Profiler (ACP) será la columna vertebral de la solución para un enfoque multi-tenant. ACP está especialmente diseñado para monitorear el consumo de recursos compartidos en AWS y reportar costos granulares por tenant. Es importante tener en cuenta que ACP, al momento de redacción de este blog, está habilitado para los servicios de Amazon EC2, AWS Lambda, Amazon DynamoDB, Amazon ECS, Amazon SNS y Amazon SQS. Aunque esta lista puede cubrir una cantidad considerable de casos de uso, no es la solución absoluta para todas las posibles cargas de trabajo con arquitectura multi-tenant en AWS.

Para usar ACP es necesario instrumentar la recolección de métricas en la aplicación para que registren información de consumo por tenant. Mediante un microservicio desarrollado con AWS Lambda se podrían capturar estas métricas a partir de logs de registro y transformarlas según la estructura y formato requeridos por ACP (ver blog para conocer más de esta instrumentación). Esta información transformada se almacena en un bucket de Amazon S3 para ser ingestada posteriormente por el servicio AWS Application Cost Profiler.

Detrás de escenas, ACP toma estos datos de consumo y los correlaciona con las tarifas de costo de cada servicio de AWS soportado y la operación respectiva. Por ejemplo, al invocar una función de AWS Lambda se provee información de la duración de la ejecución, el tenant que realiza la acción y el identificador de la función. ACP calcula el costo asociado a esta ejecución (teniendo en cuenta recursos de memoria y cómputo asociados a dicha invocación) y lo atribuye a dicho tenant, como se muestra a continuación.

4. Correlación de costos con AWS Application Cost Profiler (ACP)

Luego, se genera un reporte con estos consumos agrupados tanto por servicio como tenant y lo almacena en un bucket de Amazon S3 que hace parte del «data lake de costos». Así como en los escenarios descritos anteriormente, se ejecuta un AWS Glue Crawler que genera una tabla de metadata en el AWS Glue Data Catalog y se despliega una vista en Amazon Athena, que es importada en conjuntos de datos de Amazon QuickSight y cruzada con vistas del CUR. Los datos de costos granulares multi-tenant quedan disponibles para ser usados en los tableros de control. A continuación, se muestra la arquitectura base con el componente para calcular los costos multi-tenant.

5. Arquitectura base (Foundation) + costos multi-tenant (Multi-tenant Costs) de solución de gestión centralizada de costos

Conclusiones

La solución de gestión centralizada de costos responde a desafíos de la gestión financiera en la nube de AWS, permitiendo tener una visibilidad detallada de los costos de las cargas de trabajo, consolidar los costos a partir de consumos en diferentes cuentas y organizaciones, rastrear y analizar los costos bajo diferentes criterios de agrupación, obtener insights para análisis de rentabilidad de cargas de trabajo, entre otros beneficios. Además, abre las puertas para identificar oportunidades de optimización de costos.

También ofrece la flexibilidad para adaptar otros casos de uso integrando más fuentes de datos y enriqueciendo el «data lake de costos», y habilita la implementación de escenarios más complejos como la gestión de costos de entornos multi-tenant. Yendo más allá se podría considerar integrar el modelo de facturación de la comercialización de una solución a partir de los costos granulares identificados. Así mismo, los datos disponibles pueden ser transformados para otros requerimientos, como la construcción de reportes en un formato específico para cargar en un software de contabilidad.

Para empezar los invitamos a hacer el despliegue de la solución base y explorar los demás Cloud Intelligence Dashboards. A partir de esta experiencia podrán identificar diferentes tipos de análisis que se adapten a sus necesidades, entender cómo están hechos e iniciar la construcción de sus propios análisis. Para esto último recomendamos profundizar en Amazon QuickSight, en esta página pueden encontrar workshops para diferentes escenarios de uso del servicio (dar prioridad a Author Workshop).

Siempre surgirán nuevos retos y por ende nuevas formas de resolver desafíos de la gestión financiera en la nube. En AWS estamos muy atentos a escuchar a nuestros clientes y socios de negocio, conocer sus experiencias y necesidades. Gracias a esto es que la iniciativa de gestión centralizada de costos se ha venido enriqueciendo y evolucionando, permitiendo dar más valor a las organizaciones. ¡Esperamos que puedan sacarle todo el provecho!


Sobre los autores

Alfonso Barbosa es Arquitecto de Soluciones Sr. para Partners de Sector Público en Amazon Web Services. Alfonso ayuda a Independent Software Vendors (ISVs) en la habilitación de capacidades técnicas para la evolución de sus soluciones. Le apasiona la analítica de datos y el desarrollo de iniciativas regionales basadas en la adopción de tecnologías, para impulsar la transformación digital en las compañías.

 

 

Nicolás Bolaños es Arquitecto de Soluciones Intern en Amazon Web Services para Sector Público. Nicolás colabora con partners y clientes del sector público a lo largo de Latinoamérica. Le apasiona el desarrollo de soluciones SaaS, tecnologías serverless y campos disruptivos como la IA generativa.

 

 

Revisores técnicos

 

Gabriel Paredes es Arquitecto de Soluciones Sr. en Amazon Web Services para Sector Público. Gabriel ayuda a múltiples instituciones de educación en Latinoamérica en la adopción tecnológica y mejora de sus servicios estudiantiles.

 

 

 

Ingrid Sánchez es Arquitecta de Soluciones en Amazon Web Services para Sector Público. Ingrid cuenta con 5 años de experiencia, a lo largo de este tiempo ha profundizado en temas de CloudOps, con énfasis en estrategias multi-cuenta. Le apasionan los temas como administración, gobernanza y analítica en las organizaciones. En sus inicios en AWS, apoyaba el Sector Comercial para cuentas “Small & Medium Business”, actualmente forma parte del equipo de Central SA para cuentas en Latinoamérica.

 

 

Mauricio Romero es Arquitecto de Soluciones Sr. en Amazon Web Services para Sector Público. Mauricio ha trabajado en diferentes proyectos de gobierno electrónico y transformación digital. Le apasionan los temas de transformación digital, adopción de nube y seguridad de la información.