

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Mise à niveau vers Flink 2.2 : guide complet
<a name="flink-2-2-upgrade-guide"></a>

Ce guide fournit des step-by-step instructions pour mettre à niveau votre application Amazon Managed Service for Apache Flink de Flink 1.x vers Flink 2.2. Il s'agit d'une mise à niveau majeure avec des modifications importantes qui nécessitent une planification et des tests minutieux.

**La mise à niveau de la version majeure est unidirectionnelle**  
L'opération de mise à niveau peut déplacer votre application de Flink 1.x vers la version 2.2 avec préservation de l'état, mais vous ne pouvez pas revenir de la version 2.2 à la version 1.x avec l'état 2.2. Si votre application ne fonctionne plus correctement après la mise à niveau, utilisez l'API Rollback pour revenir à la version 1.x avec l'état 1.x d'origine enregistré dans le dernier instantané.

## Conditions préalables
<a name="upgrade-guide-prerequisites"></a>

Avant de commencer votre mise à niveau :
+ Révision [Changements majeurs et dépréciations](flink-2-2.md#flink-2-2-breaking-changes)
+ Révision [Guide de compatibilité d'état pour les mises à niveau de Flink 2.2](state-compatibility.md)
+ Assurez-vous de disposer d'un environnement hors production pour les tests
+ Documentez la configuration et les dépendances actuelles de votre application

## Comprendre vos parcours de migration
<a name="upgrade-guide-migration-paths"></a>

Votre expérience de mise à niveau dépend de la compatibilité de votre application avec Flink 2.2. La compréhension de ces parcours vous aide à vous préparer de manière appropriée et à définir des attentes réalistes.

**Chemin 1 : Binaire compatible et état de l'application**

**À quoi s'attendre :**
+ Invoquez l'opération de mise à niveau
+ Terminez la migration vers la version 2.2 avec la transition du statut de l'application : `RUNNING` → → `UPDATING` `RUNNING`
+ Préservez l'état de toutes les applications sans perte de données ni retraitement
+ Même expérience que les migrations de versions mineures

Idéal pour : les applications apatrides ou les applications utilisant une sérialisation compatible (Avro, schémas Protobuf compatibles, sans collections) POJOs 

**Voie 2 : Incompatibilités binaires**

**À quoi s'attendre :**
+ Invoquez l'opération de mise à niveau
+ L'opération échoue et révèle l'incompatibilité binaire via l'API Operations et les journaux
+ Lorsque la restauration automatique est activée : les applications sont automatiquement annulées en quelques minutes sans votre intervention
+ Lorsque la restauration automatique est désactivée : les applications restent en cours d'exécution sans traitement des données ; vous revenez manuellement à l'ancienne version
+ Une fois le binaire corrigé, utilisez l'[UpdateApplication API](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) pour une expérience similaire à Path 1

Idéal pour : les applications utilisant des applications supprimées APIs détectées lors du démarrage d'une tâche Flink

**Chemin 3 : État de l'application incompatible**

**À quoi s'attendre :**
+ Invoquez l'opération de mise à niveau
+ La migration semble réussir au début
+ Les applications entrent dans des boucles de redémarrage en quelques secondes lorsque la restauration de l'état échoue
+ Détectez les défaillances grâce à CloudWatch des métriques indiquant des redémarrages continus
+ Invoquer manuellement l'opération Rollback
+ Revenez à la production dans les minutes qui suivent le lancement du rollback
+ Révision [Migration d'État](state-compatibility.md#state-compat-migration) de votre candidature

Idéal pour : les applications présentant des incompatibilités de sérialisation d'états (POJOs avec des collections, certains états sérialisés en Kryo)

**Note**  
Il est vivement recommandé de créer une réplique de votre application de production et de tester chacune des phases suivantes de la mise à niveau sur la réplique avant de suivre les mêmes étapes pour votre application de production.

## Phase 1 : Préparation
<a name="upgrade-guide-phase-1"></a>

**Mettre à jour le code d'application**

Mettez à jour le code de votre application pour qu'il soit compatible avec Flink 2.2 :
+ **Mettez à jour les dépendances de Flink** vers la version 2.2.0 dans votre ou `pom.xml` `build.gradle`
+ **Mettre à jour les dépendances du connecteur** vers des versions compatibles avec Flink 2.2 (voir) [Disponibilité du connecteur](flink-2-2.md#flink-2-2-connectors)
+ **Supprimez l'utilisation obsolète de l'API** :
  + Remplacer DataSet l'API par une DataStream API ou une table API/SQL
  + Remplacez l'ancien`SourceFunction`//`SinkFunction`par la source FLIP-27 et le récepteur FLIP-143 APIs
  + Remplacez l'utilisation de l'API Scala par l'API Java
+ **Mise à jour vers Java 17**

**Téléchargez le code d'application mis à jour**
+ Créez le fichier JAR de votre application avec les dépendances de Flink 2.2
+ Chargez vers Amazon S3 avec un **nom de fichier différent** de celui de votre fichier JAR actuel (par exemple,`my-app-flink-2.2.jar`)
+ Notez le compartiment S3 et la clé à utiliser lors de l'étape de mise à niveau

## Phase 2 : activer la restauration automatique
<a name="upgrade-guide-phase-2"></a>

La restauration automatique permet à Amazon Managed Service pour Apache Flink de revenir automatiquement à la version précédente en cas d'échec de la mise à niveau.

**Vérifier l'état de la restauration automatique**

*AWS Management Console:*

1. Accédez à votre application

1. Choisissez **la configuration**

1. Sous **Paramètres de l'application**, vérifiez que la **restauration du système** est activée

*AWS CLI:*

```
aws kinesisanalyticsv2 describe-application \
    --application-name MyApplication \
    --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'
```

**Activer la restauration automatique (si elle n'est pas activée)**

```
aws kinesisanalyticsv2 update-application \
    --application-name MyApplication \
    --current-application-version-id <version-id> \
    --application-configuration-update '{
        "ApplicationSystemRollbackConfigurationUpdate": {
            "RollbackEnabledUpdate": true
        }
    }'
```

## Phase 3 : Prendre un instantané (facultatif)
<a name="upgrade-guide-phase-3"></a>

Si les instantanés automatiques sont activés pour votre application, vous pouvez ignorer cette étape. Sinon, prenez un instantané de votre application pour enregistrer son état avant de procéder à la mise à niveau.

**Prendre un instantané depuis une application en cours d'exécution**

*AWS Management Console:*

1. Accédez à votre application

1. Choisissez **Snapshots**

1. Choisissez **Créer un instantané**

1. Entrez le nom d'un instantané (par exemple,`pre-flink-2.2-upgrade`)

1. Sélectionnez **Create** (Créer).

*AWS CLI:*

```
aws kinesisanalyticsv2 create-application-snapshot \
    --application-name MyApplication \
    --snapshot-name pre-flink-2.2-upgrade
```

**Vérifier la création de snapshots**

```
aws kinesisanalyticsv2 describe-application-snapshot \
    --application-name MyApplication \
    --snapshot-name pre-flink-2.2-upgrade
```

Attendez jusqu'à ce que ce `SnapshotStatus` soit `READY` le cas avant de continuer.

## Phase 4 : mise à niveau de l'application
<a name="upgrade-guide-phase-4"></a>

Vous pouvez mettre à niveau votre application Flink à l'aide de cette [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)action.

Vous pouvez appeler l'`UpdateApplication`API de différentes manières :
+ **Utilisez le AWS Management Console.**
  + Accédez à la page de votre application sur le AWS Management Console.
  + Choisissez **Configurer**.
  + Sélectionnez le nouveau runtime et le snapshot à partir desquels vous souhaitez démarrer, également appelé configuration de restauration. Utilisez le dernier paramètre comme configuration de restauration pour démarrer l'application à partir du dernier instantané. Pointez sur la nouvelle application mise à niveau JAR/zip sur Amazon S3.
+ **Utilisez l' AWS CLI[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html)**action.
+ **Utiliser CloudFormation.**
  + Mettez à jour le `RuntimeEnvironment` champ. Auparavant, vous CloudFormation supprimiez l'application et créez-en une nouvelle, ce qui entraînait la perte de vos instantanés et de l'historique des autres applications. Met désormais CloudFormation à jour votre `RuntimeEnvironment` place et ne supprime pas votre application.
+ **Utilisez le AWS SDK.**
  + Consultez la documentation du SDK pour le langage de programmation de votre choix. Consultez [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html).

Vous pouvez effectuer la mise à niveau pendant que l'application est en `RUNNING` état ou pendant que l'application est arrêtée. `READY` Amazon Managed Service pour Apache Flink valide la compatibilité entre la version d'exécution d'origine et la version d'exécution cible. Ce contrôle de compatibilité s'exécute lorsque vous effectuez une mise à niveau `UpdateApplication` alors que vous êtes dans `RUNNING` l'état ou le suivant `StartApplication` si vous effectuez une mise à niveau alors que vous êtes dans `READY` l'état.

**Mise à niveau depuis l'état RUNNING**

```
aws kinesisanalyticsv2 update-application \
    --application-name MyApplication \
    --current-application-version-id <version-id> \
    --runtime-environment-update FLINK-2_2 \
    --application-configuration-update '{
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "FileKeyUpdate": "my-app-flink-2.2.jar"
                }
            }
        }
    }'
```

**Mise à niveau depuis l'état PRÊT**

```
aws kinesisanalyticsv2 update-application \
    --application-name MyApplication \
    --current-application-version-id <version-id> \
    --runtime-environment-update FLINK-2_2 \
    --application-configuration-update '{
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "FileKeyUpdate": "my-app-flink-2.2.jar"
                }
            }
        }
    }'
```

## Phase 5 : mise à niveau du moniteur
<a name="upgrade-guide-phase-5"></a>

**Contrôle de compatibilité**
+ Utilisez l'API Operations pour vérifier l'état de la mise à niveau. En cas d'incompatibilités binaires ou de problèmes lors du démarrage de la tâche, l'opération de mise à niveau échouera avec les journaux.
+ Si l'opération de mise à niveau a réussi mais que l'application est bloquée dans des boucles de redémarrage, cela signifie que l'état est incompatible avec la nouvelle version de Flink ou qu'il y a un problème avec le code mis à jour. Découvrez [Guide de compatibilité d'état pour les mises à niveau de Flink 2.2](state-compatibility.md) comment identifier les problèmes d'incompatibilité entre états.

**Surveiller l'état des applications**

*État de l'application :*
+ Le statut de la candidature devrait changer : `RUNNING` → `UPDATING` → `RUNNING`
+ Vérifiez le temps d'exécution de l'application. S'il s'agit de la version 2.2, l'opération de mise à niveau a réussi.
+ Si votre application est active `RUNNING` mais qu'elle utilise toujours l'ancien environnement d'exécution, le rollback automatique est activé. L'API des opérations affichera l'opération sous la forme`FAILED`. Consultez les journaux pour trouver l'exception en cas d'échec.

En outre, surveillez ces indicateurs dans CloudWatch :

*Métrique de redémarrage :*
+ `numRestarts`: Surveillez les redémarrages inattendus : la mise à niveau est réussie si la valeur `numRestarts` est nulle `uptime` et/ou `runningTime` si elle augmente.

*Mesures relatives aux points de contrôle :*
+ `lastCheckpointDuration`: Doit être similaire aux valeurs d'avant la mise à niveau
+ `numberOfFailedCheckpoints`: Doit rester à 0

## Phase 6 : Valider le comportement de l'application
<a name="upgrade-guide-phase-6"></a>

Après l'exécution de l'application sur Flink 2.2 :

**Validation fonctionnelle**
+ Vérifiez que les données sont lues à partir des sources
+ Vérifiez que les données sont écrites sur les récepteurs
+ Vérifier que la logique métier produit les résultats attendus
+ Comparaison des résultats avec la base de référence avant la mise à niveau

**Validation des performances**
+ Surveiller les mesures de latence (temps end-to-end de traitement)
+ Surveiller les mesures de débit (enregistrements par seconde)
+ Surveiller la durée et la taille du point de contrôle
+ Surveiller l'utilisation de la mémoire et du processeur

**Courez pendant plus de 24 heures**

Permettez à l'application de fonctionner pendant au moins 24 heures en production afin de garantir :
+ Aucune fuite de mémoire
+ Comportement stable aux points de contrôle
+ Pas de redémarrages inattendus
+ Débit constant

## Phase 7 : Procédures de rétrogradation
<a name="upgrade-guide-phase-7"></a>

Si la mise à niveau échoue ou si l'application est en cours d'exécution mais ne fonctionne pas correctement, revenez à la version précédente.

**Annulation automatique**

Si la restauration automatique est activée et que la mise à niveau échoue au démarrage, Amazon Managed Service pour Apache Flink revient automatiquement à la version précédente.

**Annulation manuelle**

Si l'application est en cours d'exécution mais ne fonctionne pas correctement, utilisez l'`RollbackApplication`API :

*AWS Management Console:*

1. Accédez à votre application

1. Choisissez **Actions** **→ Annuler**

1. Confirmez le rollback

*AWS CLI:*

```
aws kinesisanalyticsv2 rollback-application \
    --application-name MyApplication \
    --current-application-version-id <version-id>
```

**Que se passe-t-il lors du rollback :**
+ L'application s'arrête
+ Runtime revient à la version précédente de Flink
+ Le code de l'application revient au JAR précédent
+ L'application redémarre à partir du dernier instantané réussi pris **avant** la mise à niveau

**Important**  
Vous ne pouvez pas restaurer un instantané Flink 2.2 sur Flink 1.x
Le rollback utilise le snapshot pris avant la mise à niveau
Prenez toujours un instantané avant de procéder à la mise à niveau (phase 3)

## Étapes suivantes
<a name="upgrade-guide-next-steps"></a>

Pour toute question ou problème lors de la mise à niveau, consultez le Support [Résoudre les problèmes liés au service géré pour Apache Flink](troubleshooting.md) ou contactez le AWS Support.