

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Migración de aplicaciones Java locales en las instalaciones a AWS mediante AWS App2Container
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container"></a>

*Dhananjay Karanjkar, Amazon Web Services*

## Resumen
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-summary"></a>

AWS App2Container (A2C) es una herramienta de línea de comandos que le ayuda a transformar en contenedores las aplicaciones existentes que se ejecutan en máquinas virtuales sin necesidad de cambiar el código. A2C descubre aplicaciones en ejecución en un servidor, identifica las dependencias y genera artefactos relevantes para una implementación sin interrupciones en Amazon Elastic Container Service (Amazon ECS) y Amazon Elastic Kubernetes Service (Amazon EKS).

Este patrón proporciona los pasos para migrar de forma remota las aplicaciones Java en las instalaciones implementadas en un servidor de aplicaciones a AWS Fargate o Amazon EKS mediante App2Container a través de la máquina de trabajo. 

La máquina de trabajo se puede utilizar en los siguientes casos de uso:
+ La instalación de Docker no está permitida o no está disponible en los servidores de aplicaciones donde se ejecutan las aplicaciones Java.
+ Debe gestionar la migración de varias aplicaciones implementadas en distintos servidores físicos o virtuales.

Este patrón usa AWS CodeCommit AWS CodePipeline, y AWS CodeBuild.

## Requisitos previos y limitaciones
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-prereqs"></a>

**Requisitos previos **
+ Un servidor de aplicaciones con una aplicación Java que se ejecuta en un servidor Linux
+ Una máquina de trabajo con un sistema operativo Linux
+ Una máquina de trabajo con al menos 20 GB de espacio disponible en disco

**Limitaciones**
+ No todas las aplicaciones son compatibles. Para más información, consulte [Aplicaciones compatibles para Linux](https://docs.aws.amazon.com/app2container/latest/UserGuide/supported-applications.html).

## Arquitectura
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-architecture"></a>

**Pila de tecnología de origen**
+ Aplicaciones Java que se ejecutan en un servidor Linux

**Pila de tecnología de destino**
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS CodeDeploy
+ AWS CodePipeline
+ Amazon Elastic Container Registry
+ AWS Fargate

**Arquitectura de destino**

![Arquitectura para aplicaciones Java en las instalaciones en AWS.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/61ed65a0-fab2-4fc8-8531-18bfd56a25b3/images/602cde7b-ab0c-46a5-8c37-afe304adf061.png)


 

## Tools (Herramientas)
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-tools"></a>

**Herramientas**
+ [AWS App2Container (A2C)](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html) es una herramienta de la línea de comandos que le ayuda a migrar mediante lift-and-shift las aplicaciones que se ejecutan en centros de datos en las instalaciones o en máquinas virtuales, de modo que se ejecuten en contenedores administrados por Amazon ECS o Amazon EKS.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html): AWS CodeBuild es un servicio de compilación en la nube totalmente gestionado. CodeBuild compila su código fuente, ejecuta pruebas unitarias y produce artefactos que están listos para su implementación.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html): AWS CodeCommit es un servicio de control de versiones alojado por Amazon Web Services que puede utilizar para almacenar y gestionar activos (como documentos, código fuente y archivos binarios) en la nube de forma privada.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html): AWS CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para lanzar su software.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html): Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores altamente escalable y rápido que facilita la tarea de ejecutar, detener y administrar contenedores en un clúster.
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html): Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado por AWS que es seguro, escalable y fiable.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html): Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado que puede utilizar para ejecutar Kubernetes en AWS sin necesidad de instalar, operar ni mantener su propio plano de control o nodos de Kubernetes.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html): AWS Fargate es una tecnología que puede usar con Amazon ECS para ejecutar contenedores sin tener que administrar servidores o clústeres de instancias de Amazon Elastic Compute Cloud (Amazon). EC2 Con Fargate, ya no tendrá que aprovisionar, configurar ni escalar clústeres de máquinas virtuales para ejecutar los contenedores.

## Epics
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-epics"></a>

### Configuración de credenciales
<a name="set-up-credentials"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un secreto para acceder al servidor de aplicaciones. | Para acceder al servidor de aplicaciones de forma remota desde la máquina de trabajo, cree un secreto en AWS Secrets Manager. Como secreto, puede utilizar la clave privada de SSH o el certificado y la clave privada de SSH. Para obtener más información, consulte [Administrar secretos para AWS App2Container](https://docs.aws.amazon.com/app2container/latest/UserGuide/manage-secrets.html). | DevOps, desarrollador | 

### Configure la máquina de trabajo
<a name="set-up-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instalar el archivo tar. | Ejecute `sudo yum install -y tar`. | DevOps, Desarrollador | 
| Instale la AWS CLI. | Para instalar la interfaz de la línea de comandos de AWS (AWS CLI), ejecute `curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"`. Descomprima `awscliv2.zip`.Ejecute `sudo ./aws/install`. | DevOps, Desarrollador | 
| Instale App2Container. | Ejecute los siguientes comandos :`curl -o AWSApp2Container-installer-linux.tar.gz https://app2container-release-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz``sudo tar xvf AWSApp2Container-installer-linux.tar.gz``sudo ./install.sh` | DevOps, Desarrollador | 
| Configure los perfiles. | Para configurar el perfil predeterminado de AWS, ejecute `sudo aws configure`.Para configurar el perfil predeterminado de AWS con nombre, ejecute `sudo aws configure --profile <profile name>`. | DevOps, Desarrollador | 
| Instale Docker. | Use los siguientes comandos.`sudo yum install -y docker``sudo systemctl enable docker & sudo systemctl restart docker` |  | 
| Inicie App2Container. | Para inicializar App2Container, necesita la siguiente información:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)Ejecute `sudo app2container init`. | DevOps, Desarrollador | 

### Configure la máquina de trabajo
<a name="configure-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure la máquina de trabajo para conectarse remotamente y ejecutar los comandos de App2Container en el servidor de aplicaciones. | Para configurar la máquina de trabajo, se requiere la siguiente información:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/migrate-on-premises-java-applications-to-aws-using-aws-app2container.html)Ejecute `sudo app2container remote configure`. | DevOps, Desarrollador | 

### Descubra, analice y extraiga aplicaciones en la máquina de trabajo
<a name="discover-analyze-and-extract-applications-on-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Descubra las aplicaciones Java en las instalaciones. | Para descubrir de forma remota todas las aplicaciones en ejecución en el servidor de aplicaciones, ejecute el siguiente comando.`sudo app2container remote inventory --target <FQDN/IP of App server>`Este comando genera una lista de las aplicaciones implementadas en `inventory.json`. | Desarrollador, DevOps | 
| Analice las aplicaciones descubiertas. | Para analizar de forma remota cada aplicación mediante el identificador de aplicación obtenido en la fase de inventario, ejecute el siguiente comando.`sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>`Esto genera un archivo `analysis.json` en la ubicación del espacio de trabajo. Una vez generado este archivo, puede modificar los parámetros de contenerización en función de sus necesidades. | Desarrollador, DevOps | 
| Extraiga las aplicaciones analizadas. | Para generar un archivo de aplicaciones para la aplicación analizada, ejecute de forma remota el siguiente comando, que generará el paquete tar en la ubicación del espacio de trabajo.`sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>`Los artefactos extraídos se pueden generar en la máquina de trabajo local. | Desarrollador, DevOps | 

### Guarde en contenedores los artefactos extraídos en la máquina de trabajo
<a name="containerize-the-extracted-artifacts-on-the-worker-machine"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Coloque en contenedores los artefactos extraídos. | Guarde en contenedores los artefactos extraídos en el paso anterior ejecutando el siguiente comando.`sudo app2container containerize --input-archive <tar bundle location on worker machine>` | Desarrollador, DevOps | 
| Finalice el objetivo. | Para finalizar el objetivo, abra `deployment.json`, que se crea cuando se ejecuta el comando `containerize`. Para especificar AWS Fargate como objetivo, establezca `createEcsArtifacts` en `true`. Para establecer Amazon EKS como objetivo, establezca `createEksArtifacts` en true. | Desarrollador, DevOps | 

### Genere y aprovisione artefactos de AWS
<a name="generate-and-provision-aws-artifacts"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere artefactos de implementación de AWS en la máquina de trabajo. | Para generar artefactos de implementación, ejecute el siguiente comando.`sudo app2container generate app-deployment --application-id <application id>`Esto genera la CloudFormation plantilla de `ecs-master.yml` AWS en el espacio de trabajo. | DevOps | 
| Aprovisione los artefactos. | Para aprovisionar aún más los artefactos generados, implemente la CloudFormation plantilla de AWS ejecutando el siguiente comando.`aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS` | DevOps | 
| Genere la canalización. | Modifique `pipeline.json`, que se creó en la historia anterior, en función de sus necesidades. A continuación, ejecute el comando `generate pipeline` para generar los artefactos de implementación de la canalización. | DevOps | 

## Recursos relacionados
<a name="migrate-on-premises-java-applications-to-aws-using-aws-app2container-resources"></a>
+ [¿Qué es App2Container?](https://docs.aws.amazon.com/app2container/latest/UserGuide/what-is-a2c.html)
+ [Entrada de blog sobre AWS App2Container](https://aws.amazon.com/blogs/aws/aws-app2container-a-new-containerizing-tool-for-java-and-asp-net-applications/)
+ [Conceptos básicos de configuración de la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
+ [Conceptos básicos de Docker para Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)
+ [Comandos de Docker](https://docs.docker.com/engine/reference/commandline/cli/)