Logotipo de Zephyrnet

Automatice la implementación y las actualizaciones de versiones para las aplicaciones de Amazon Kinesis Data Analytics con AWS CodePipeline

Fecha:

Análisis de datos de Amazon Kinesis es la forma más fácil de transformar y analizar datos de transmisión en tiempo real utilizando Apache Flink. Los clientes ya están utilizando Kinesis Data Analytics para realizar análisis en tiempo real sobre datos de rápido movimiento generados a partir de fuentes de datos como sensores de IoT, eventos de captura de datos modificados (CDC), juegos, redes sociales y muchos otros. Apache Flink es un marco de código abierto popular y un motor de procesamiento distribuido para cálculos con estado sobre flujos de datos ilimitados y limitados.

Aunque la creación de aplicaciones Apache Flink suele ser responsabilidad de un equipo de ingeniería de datos, la automatización de la infraestructura de implementación y aprovisionamiento como código (IaC) suele ser propiedad del equipo de la plataforma (o DevOps).

Las siguientes son responsabilidades típicas del rol de ingeniería de datos:

  • Escribir código para análisis en tiempo real de aplicaciones Apache Flink
  • Implementar nuevas versiones de la aplicación o revertirlas (por ejemplo, en el caso de un error crítico)

Las siguientes son responsabilidades típicas del rol de plataforma:

  • Escribir código para IaC
  • Aprovisione los recursos necesarios en la nube y gestione su acceso

En esta publicación, le mostramos cómo puede automatizar la implementación y las actualizaciones de versiones para las aplicaciones de Kinesis Data Analytics y permitir que tanto la Plataforma como los equipos de ingeniería colaboren de manera efectiva y sean copropietarios de la solución final usando AWS CodePipeline con el Kit de desarrollo en la nube de AWS (CDK de AWS).

Resumen de la solución

Para demostrar la implementación automatizada y la actualización de la versión de una aplicación Kinesis Data Analytics, utilizamos el siguiente ejemplo de arquitectura de análisis de datos en tiempo real para esta publicación.

Arquitectura de análisis de datos en tiempo real

El flujo de trabajo incluye los siguientes pasos:

  1. An AWS Lambda La función (que actúa como fuente de datos) es el productor de eventos que envía eventos a pedido para Secuencias de datos de Amazon Kinesis cuando se invoca.
  2. El flujo de datos de Kinesis recibe y almacena eventos en tiempo real.
  3. La aplicación Kinesis Data Analytics lee eventos del flujo de datos y realiza análisis en tiempo real.

Arquitectura genérica

Puede consultar la siguiente arquitectura genérica para adaptar este ejemplo a su herramienta de CI/CD preferida (por ejemplo, Jenkins). El proceso de implementación general se divide en tres partes de alto nivel:

  1. Infraestructura CI/CD – Esta parte está resaltada en naranja. La canalización de CI/CD de infraestructura es responsable de implementar todos los componentes de la arquitectura de transmisión en tiempo real, incluida la aplicación Kinesis Data Analytics y cualquier recurso conectado que se implemente normalmente mediante Formación en la nube de AWS.
  2. Pila de aplicaciones – Esta parte está resaltada en gris. El componente de CI/CD de la infraestructura implementa la pila de aplicaciones mediante AWS CloudFormation.
  3. Aplicación CI/CD – Esta parte está resaltada en verde. La canalización de CI/CD de la aplicación actualiza la aplicación Kinesis Data Analytics en tres pasos:
    1. La canalización crea el código fuente de Java o Python de la aplicación Kinesis Data Analytics y produce la aplicación como un archivo binario.
    2. La canalización empuja el archivo binario más reciente al Servicio de almacenamiento simple de Amazon (Amazon S3) depósito de artefactos después de una compilación correcta, ya que se hace referencia a los archivos binarios de la aplicación Kinesis Data Analytics desde S3.
    3. El evento de colocación del archivo del depósito de S3 activa una función Lambda, que actualiza la versión de la aplicación Kinesis Data Analytics mediante la implementación del binario más reciente.

El siguiente diagrama ilustra este flujo de trabajo.

Flujo de trabajo ilustrado

Arquitectura CI/CD con CodePipeline

En esta publicación, implementamos la arquitectura genérica utilizando CodePipeline. El siguiente diagrama ilustra nuestra arquitectura actualizada.

Arquitectura actualizada ilustrada

La solución final incluye los siguientes pasos:

  1. El equipo de la plataforma (DevOps) y el equipo de ingeniería de datos envían su código fuente a sus respectivos repositorios de código.
  2. CodePipeline implementa toda la infraestructura como tres pilas:
    1. InfraPipelinePila – Contiene una canalización para implementar la infraestructura general.
    2. AplicaciónPipelineStack – Contiene una canalización para crear e implementar archivos binarios de aplicaciones de Kinesis Data Analytics. En esta publicación, construimos una fuente Java usando el JavaBuildPipeline Construcción de CDK de AWS. Puede utilizar el Construcción de CDK de AWS de PythonBuildPipeline para construir una fuente de Python.
    3. Pila de aplicaciones – Contiene recursos de canalización de análisis de datos en tiempo real, incluidos Lambda (fuente de datos), Kinesis Data Streams (almacenamiento) y Kinesis Data Analytics (aplicación Apache Flink).

Implemente recursos con AWS CDK

Las siguientes Repositorio GitHub contiene el código AWS CDK para crear todos los recursos necesarios para la canalización de datos. Esto elimina las oportunidades de error manual, aumenta la eficiencia y garantiza configuraciones uniformes a lo largo del tiempo. Para implementar los recursos, complete los siguientes pasos:

  1. Clone el repositorio de GitHub en su computadora local usando el siguiente comando:
git clone https://github.com/aws-samples/automate-deployment-and-version-update-of-kda-application

  1. Descargar e instale la última versión de Node.js.
  2. Ejecute el siguiente comando para instalar la última versión de AWS CDK:
npm install -g aws-cdk

  1. Ejecutar cdk bootstrap para inicializar el entorno de AWS CDK en su cuenta de AWS. Reemplace su ID de cuenta y región de AWS antes de ejecutar el siguiente comando.
cdk bootstrap aws://123456789012/us-east-1

Para obtener más información sobre el proceso de arranque, consulte Bootstrapping.

Parte 1: los equipos de plataforma e ingeniería de datos envían el código fuente a sus repositorios de código

Los equipos de ingeniería de datos y plataforma comienzan a trabajar en sus respectivos repositorios de código, como se ilustra en la siguiente figura.

Los equipos de ingeniería de datos y plataforma comienzan a trabajar en sus respectivos repositorios de código, como se ilustra en la siguiente figura.

En esta publicación, usamos dos carpetas en lugar de dos repositorios de GitHub, que puede encontrar en la carpeta raíz del repositorio clonado:

  • Kinesis-analytics-aplicación – Esta carpeta contiene código fuente de ejemplo de la aplicación Kinesis Data Analytics. Esto representa el código fuente de su aplicación Kinesis Data Analytics desarrollado por su equipo de ingeniería de datos.
  • infraestructura-cdk – Esta carpeta contiene un ejemplo de código fuente de AWS CDK de la solución final utilizada para aprovisionar todos los recursos necesarios y CodePipeline. Puede reutilizar este código para la implementación de su aplicación Kinesis Data Analytics.

Los equipos de desarrollo de aplicaciones suelen almacenar el código fuente de la aplicación en repositorios git. Para fines de demostración, utilizaremos el código fuente como un archivo zip descargado de Github en lugar de conectar CodePipeline al repositorio de Github. Es posible que desee conectar directamente el repositorio de origen con CodePipeline. Para obtener más información sobre cómo conectarse, consulte Crear una conexión a GitHub.

Parte 2: el equipo de la plataforma implementa la canalización de la aplicación

La siguiente figura ilustra el siguiente paso en el flujo de trabajo.

Siguiente paso en el flujo de trabajo ilustrado

En este paso, implementa la primera canalización para compilar el código fuente de Java a partir de kinesis-analytics-application. Complete los siguientes pasos para implementar ApplicationPipelineStack:

  1. Abra su terminal, bash o ventana de comandos según su sistema operativo.
  2. Cambiar la ruta actual a la carpeta infrastructure-cdk.
  3. Ejecutar npm install para descargar todas las dependencias.
  4. Ejecutar cdk deploy ApplicationPipelineStack para implementar la canalización de la aplicación.

Este proceso debe tomar alrededor 5 minutos para completar e implementar los siguientes recursos en su cuenta de AWS, resaltados en verde en el diagrama anterior:

Desencadenar una compilación automática para la canalización de la aplicación

Una vez que el cdk deploy el comando es exitoso, complete los siguientes pasos para ejecutar automáticamente la canalización:

  1. Descargue nuestra código fuente archivo .zip.
  2. En la consola de AWS CloudFormation, elija Stacks en el panel de navegación.
  3. Elige la pila ApplicationPipelineStack.Elija la pila ApplicationPipelineStack.
  4. En Salidas pestaña, elija el enlace para la clave ArtifactBucketLink.En la pestaña Salidas, elija el enlace para la clave ArtifactBucketLink.

Se le redirigirá al depósito de artefactos de S3.

  1. Elige Subir.
  2. Cargue el archivo .zip del código fuente que descargó.

La primera ejecución de canalización (que se muestra como Creación automática en el siguiente diagrama) se inicia automáticamente y dura aproximadamente 5 minutos para llegar a la etapa de aprobación manual. La canalización descarga automáticamente el código fuente del depósito de artefactos, construye el proyecto Java kinesis-analytics-application utilizando Maven, y publica el archivo JAR binario de salida de nuevo en el depósito de artefactos en el directorio jars.

La canalización descarga automáticamente el código fuente del depósito de artefactos, crea el proyecto de Java kinesis-analytics-application con Maven y publica el archivo JAR binario de salida en el depósito de artefactos en el directorio jars.

Ver la ejecución de canalización de la aplicación

Complete los siguientes pasos para ver la ejecución de la canalización de la aplicación:

  1. En la consola de AWS CloudFormation, vaya a la pila ApplicationPipelineStack.
  2. En Salidas pestaña, elija el enlace para la clave ApplicationCodePipelineLink.En la pestaña Salidas, elija el enlace para la clave ApplicationCodePipelineLink.

Se le redirigirá a la página de detalles de canalización. Puede ver una vista detallada de la canalización, incluido el estado de cada acción en cada etapa y el estado de las transiciones.

No apruebe la compilación para la etapa de aprobación manual todavía; esto se hace más tarde.

Parte 3: El equipo de la plataforma implementa la canalización de infraestructura

La ejecución de la canalización de la aplicación publica un archivo JAR llamado kinesis-analytics-application-final.jar al cubo de artefactos. A continuación, implementamos la arquitectura de Kinesis Data Analytics. Complete los siguientes pasos para implementar el flujo de ejemplo:

  1. Abra una ventana de terminal, bash o comando según su sistema operativo.
  2. Cambiar la ruta actual a la carpeta infrastructure-cdk.
  3. Ejecutar cdk deploy InfraPipelineStack para implementar la tubería de infraestructura.

Este proceso debe tomar alrededor 5 minutos para completar e implementar una canalización que contiene etapas para CodeBuild y CodeDeploy en su cuenta de AWS, como se resalta en verde en el siguiente diagrama.

Este proceso debería tardar unos 5 minutos en completarse e implementa una canalización que contiene etapas para CodeBuild y CodeDeploy en su cuenta de AWS, como se resalta en verde en el siguiente diagrama.

Cuando el cdk deploy se completa, la ejecución de la canalización de la infraestructura se inicia automáticamente (se muestra como Auto Build 1 en el siguiente diagrama) y toma aproximadamente 10 minutos para descargar el código fuente del depósito de artefactos, cree el proyecto AWS CDK infrastructure-stacky desplegar ApplicationStack automáticamente a su cuenta de AWS. Cuando se completa la ejecución de la canalización de la infraestructura, se implementan los siguientes recursos en su cuenta (que se muestran en verde en el siguiente diagrama):

  • Una plantilla de CloudFormation llamada app-ApplicationStack
  • Una función Lambda que actúa como fuente de datos
  • Un flujo de datos de Kinesis que actúa como almacenamiento de flujo
  • Una aplicación Kinesis Data Analytics con la primera versión de kinesis-analytics-application-final.jarCuando se completa la ejecución de la canalización de la infraestructura, se implementan los siguientes recursos en su cuenta (que se muestran en verde en el siguiente diagrama):

Ver la ejecución de canalización de infraestructura

Complete los siguientes pasos para ver la ejecución de la canalización de la aplicación:

  1. En la consola de AWS CloudFormation, vaya a la pila InfraPipelineStack.En la consola de AWS CloudFormation, vaya a la pila InfraPipelineStack.
  2. En Salidas pestaña, elija el enlace para la clave InfraCodePipelineLink.En la pestaña Salidas, elija el enlace para la clave InfraCodePipelineLink.

Se le redirigirá a la página de detalles de canalización. Puede ver una vista detallada de la canalización, incluido el estado de cada acción en cada etapa y el estado de las transiciones.

Paso 4: El equipo de ingeniería de datos implementa la aplicación

Ahora su cuenta tiene todo listo para que el equipo de ingeniería de datos trabaje de forma independiente e implemente nuevas versiones de la aplicación Kinesis Data Analytics. Puede aprobar la compilación de la aplicación respectiva desde la canalización de la aplicación para implementar nuevas versiones de la aplicación. El siguiente diagrama ilustra el flujo de trabajo completo.

El diagrama ilustra el flujo de trabajo completo.

El proceso de compilación se inicia automáticamente cuando detecta cambios en el código fuente. Puede probar una actualización de versión volviendo a cargar el archivo .zip del código fuente en el depósito de artefactos de S3. En un caso de uso del mundo real, actualiza la rama principal mediante una solicitud de incorporación de cambios o fusionando sus cambios, y esta acción desencadena una nueva canalización que se ejecuta automáticamente.

Ver la versión actual de la aplicación

Para ver la versión actual de la aplicación Kinesis Data Analytics, complete los siguientes pasos:

  1. En la consola de AWS CloudFormation, vaya a la pila InfraPipelineStack.
  2. En Salidas pestaña, elija el enlace para la clave KDAApplicationLink.En la pestaña Salidas, elija el enlace para la clave KDAApplicationLink.

Será redirigido a la página de detalles de la aplicación Kinesis Data Analytics. Puede encontrar la versión actual de la aplicación mirando Identificación de la versión.

Encuentre la versión actual de la aplicación mirando el ID de la versión

Aprobar el despliegue de la aplicación

Complete los siguientes pasos para aprobar la implementación (o la actualización de la versión) de la aplicación Kinesis Data Analytics:

  1. En la consola de AWS CloudFormation, vaya a la pila ApplicationPipelineStack.
  2. En Salidas pestaña, elija el enlace para la clave ApplicationCodePipelineLink.
  3. Elige Revisar desde la etapa de aprobación de la tubería.Elija Revisar desde la etapa de aprobación de la canalización
  4. Cuando se le solicite, elija Aprobar para proporcionar aprobación (opcionalmente agregando cualquier comentario) para la implementación de la aplicación Kinesis Data Analytics o la actualización de la versión.Elija Aprobar para proporcionar aprobación
  5. Repita los pasos mencionados anteriormente para ver la versión actual de la aplicación.

Debería ver la versión de la aplicación como se define en Identificación de la versión aumentado en uno, como se muestra en la siguiente captura de pantalla.

La versión de la aplicación como se define en ID de versión aumentó en uno

La implementación de una nueva versión de la aplicación Kinesis Data Analytics provocará un tiempo de inactividad de alrededor 5 minutos porque la función Lambda responsable de la actualización de la versión hace la llamada a la API ActualizarAplicación, que reinicia la aplicación después de actualizar la versión. Sin embargo, la aplicación reanuda el procesamiento de secuencias donde lo dejó después del reinicio.

Limpiar

Complete los siguientes pasos para eliminar sus recursos y dejar de incurrir en costos:

  1. En la consola de AWS CloudFormation, seleccione la pila InfraPipelineStack y elige Borrar.
  2. Seleccione la pila app-ApplicationStack y elige Borrar.
  3. Seleccionar pila ApplicationPipelineStack y elige Borrar.
  4. En la consola de Amazon S3, seleccione el depósito con el nombre que comienza con javaappCodePipeline y elige Vacío.
  5. Ingrese eliminar permanentemente para confirmar la elección.
  6. Seleccione el cubo de nuevo y elija Borrar.
  7. Confirme la acción ingresando el nombre del depósito cuando se le solicite.
  8. Repita estos pasos para eliminar el cubo con el nombre que comienza con infrapipelinestack-pipelineartifactsbucket.

Resumen

Esta publicación demostró cómo automatizar la implementación y las actualizaciones de versión para sus aplicaciones de Kinesis Data Analytics mediante CodePipeline y AWS CDK.

Para más información, consulte la Integración y entrega continuas (CI/CD) mediante CDK Pipelines y Tutoriales de CodePipeline.


Sobre la autora

Sobre la autoraanand shah es arquitecto de soluciones de creación de prototipos de Big Data en AWS. Trabaja con los clientes de AWS y sus equipos de ingeniería para crear prototipos utilizando los servicios de análisis de AWS y bases de datos especialmente diseñadas. Anand ayuda a los clientes a resolver los problemas más desafiantes utilizando el arte de la tecnología posible. Disfruta de las playas en su tiempo libre.

punto_img

café vc

vidacienciav

Información más reciente

café vc

vidacienciav

punto_img