A la découverte d'AWS Amplify

thumbernail Amazon Web Services

Amazon Web Services poursuit son chemin dans la simplification de la gestion des cycles de vie de nos applications et dans l'adoption des infrastructures serverless (sans serveur). Les infrastructures serverless sont un modèle d'infrastructures dans le cloud qui ont pour particularité de céder la responsabilité de l'exécution du code des applications au cloud provider. Ce sont donc des ressources allouées dynamiquement pour exécuter du code à la demande.

Annoncé à l'AWS re:Invent 2018 à Las Vegas, AWS Amplify est disponible depuis un moment déjà dans de nombreuses régions. Sur le blog alterway nous avons pour habitude de vous parler de services AWS qui vous permettent de déployer facilement vos applications et c'est justement ce que nous allons faire ici.

L'objectif n'est pas de fournir des connaissances exhaustives sur AWS Amplify mais d'aborder les fonctionnalités clés du service et de voir dans quelle mesure celui-ci peut être utilisé afin de créer, de configurer et de déployer des applications.

Qu'est ce qu'AWS Amplify?

AWS Amplify est une combinaison d'outils, de bibliothèques et d'une console permettant de gérer le cycle de déploiement continu et l'hébergement d'applications sur des infrastructures serverless. Amplify approvisionne et gère le backend mobile et fournit un cadre simple pour intégrer facilement le backend avec les frontends iOS, Android, Web et React Native. Le service permet donc d'automatiser la livraison continue du backend et du frontend en se basant sur ses composants: les outils pour développeurs, les services cloud et le framework qui fournit une interface en ligne de commandes.

AWS Amplify Components

Pour les applications mobiles, Amplify fournit des services cloud pour l'authentification, la synchronisation, le stockage ou le partage. Ceci facilite l'intégration de nombreuses fonctionalités dans les applications. Il suffit de sélectionner les fonctionalités dont on a besoin et Amplify approvisionnera et gérera automatiquement les services AWS correspondants. Il faudra ensuite intégrer ces services directement dans l'application par le biais des bibliothèques Amplify et des composants d'interface utilisateur.

Le Framework Amplify

Le framework est le coeur d'Amplify, il met à disposition un ensemble de bibliothèques, de composants d'interface utilisateur et une CLI permettant de développer directement un backend mobile ou web auquel sera ensuite intégré le front. Ce sont essentiellement les bibliothèques JavaScript, iOS, et Android pour l'accès aux ressources AWS et les bibliotheques spécifiques à React, React Native, Angular, Ionic et Vue pour la partie front.

La CLI permet, elle, de créer et de gérer le backend serverless, l'hébergement web, le code et les différents services qui seront intégrés au backend.

Dans les exemples de cet article, nous suivrons la configuration et le déploiement du projet Chatt disponible sur github.

Exemple:

  • Installation et configuration de d'AWS Amplify CLI

Elle requiert au minimum Node.js 8.x et npm 5.x.

$ git clone https://github.com/aws-samples/aws-appsync-chat.git

$ npm install

$ npm install -g @aws-amplify

$ amplify configure

Voir les étapes de configuration du compte en vidéo ici

  • Création d'un nouveau projet Amplify
$ amplify init

Une fois l'initiation lancée, un fichier de configuration du projet sera alors créé au format JSON. On y retrouve des informations telles que le nom du projet et les commandes de build. Derrière la commande amplify init se cache un ensemble d'actions qui vont construire une pile de services (Lambda, bucket S3, etc) sous la forme d'un template CloudFormation prêt à être déployé. En savoir plus

{
    "projectName" : "chatt",
    "version" : "1.0",
    "frontend" : "javascript",
    "javascript" : {
        "framework" : "react",
        "config" : {
            "SourceDir" : "src",
            "DistributionDir" : "build",
            "BuildCommand" : "npm run-script build",
            "StartCommand" : "npm run-script start"
        }
    },
    "providers" : [
        "awscloudformation"
    ]
}

Pour la suite, nous intégrerons des services cloud AWS à notre backend.

Les services cloud

Ce sont les services AWS qui constitueront le backend de l'application. Ils sont classés en plusieurs catégories:

  • Donées et stockage : synchronisation, stockage, manipulation de données avec prise en charge de GraphQL
  • Authentification : utilise Amazon Cognito comme source d'identité et service d'authentification
  • Analyse : suivi des sessions utilisateurs, métriques d'application...
  • Robots : interfaces vocales et textuelles reposant sur le deep learning
  • API : requêtes HTTP REST et GraphQL simplifées et sécurisées
  • Notifications : notifications push personnalisées avec analyse et ciblage intégrés
  • AR et VR : intégration de scènes de réalité virtuelle (VR), de réalité augmentée (AR) et des scènes 3D

Exemple:

  • Ajout des services AWS API et Authentification au backend
$ amplify add auth

$ amplify add api

Une fois les services ajoutés au backend, le code de l'application doit être modifié pour utiliser les User Pools d'Amazon Cognito . En fonction du langage utilisé, il faudra consulter la documentation d'Amplify Authentication pour avoir les détails. Vous pourrez retrouver les modifications à effectuer sur le repo Git du projet. Ces commandes vont aussi rajouter des éléments à la pile précédemment créée.

Maintenant que notre code et nos services sont prêts, la commande amplify push va créer les ressources sur le compte AWS.

  • Activation de l'hébergement web statique de l'application sur Amazon S3 et CloudFront
$ amplify add hosting

$ amplify publish

Avec la dernière commande, l'infrastructure et l'application sont déployées sur AWS. Pour supprimer l'application et tout ce qui a été déployé, la commande à utiliser est amplify delete.

Les outils pour développeurs

AWS Amplify permet d'automatiser les tests d'applications mobiles, de rationaliser les déploiements des applications Web et des ressources backend en utilisant la console Amplify. Cela permet de tester rapidement et facilement chaque modification et de repérer les erreurs. Deux services participent à obtenir ces fonctionalités d'Amplify:

  • Amplify Console : fournit des pipelines de livraison continue basées sur Git, permettant donc d'accélérer le cycle de publication des applications. Avec Amplify Console il est possible de déployer plusieurs versions de l'application en se basant sur les branches du dépot Git et de configurer un nom de domaine personnalisé géré par Amazon Route 53 avec un certificat HTTPS gratuit.

AWS Amplify Console

  • Device farm : Device Farm est un service d'automatisation de tests d'applications qui permet de tester et d'interagir avec des applications Android, iOS et Web sur plusieurs appareils à la fois, ou de reproduire les problèmes sur un appareil en temps réel. Ces tests peuvent être utilisés pour obtenir des résultats depuis des IDE ou des outils d'intégration continue comme Jenkins.

Tests automatisés Accès à distance

Tout ça c'est bien !! Mais combien ça coûte ?

Le pricing d'AWS Amplify se fait sur deux plans: le build et le déploiement, puis l'hébergement. Sur le build, le prix par minute est de 0.01USD. Et sur la partie hébergement, le prix par GB servi est de 0.15USD et 0.023USD par GB stockés.

Il y a une limite d'utilisation gratuite de 1000 minutes de build par mois, de 15 GB servis et de 5 GB de stockage par mois pour l'hébergement. A noter que l'utilisation gratuite se limite à la première année.

Voilà, vous savez l'essentiel sur AWS Amplify et l'étendue de ce qui est possible de réaliser avec ce service. Je vous invite à lire la documentation si vous voulez en savoir plus

Découvrez les technologies d'alter way