Back from Re:Invent 2022 — Comment construire un POC en quelques minutes

David Charles
Mistertemp’s kitchen
5 min readJun 6, 2023

--

Re:Invent — Las Vegas — 2022

Le 22 novembre 2022, je me trouvais dans un avion pour aller faire un petit road-trip en partant de Los Angeles et à destination de Las Vegas en passant par Yosemite et Death Valley (plus de détail ici).
Arrivé à Las Vegas cinq jours plus tard, et non content de pouvoir visiter cette ville qui ne dort jamais, j’en ai également profité pour m’intéresser à toute cette agitation dans les casinos. Pas celle autour des machines à sous, non, mais celle qui se déroulait un peu plus profondément dans les galeries interminables de ces établissements luxueux.

Quelle ne fut pas ma surprise lorsque je me suis rendu compte qu’il s’agissait de l’AWS Re:Invent Summit, l’un des évènements les plus impressionnants organisé par AWS auquel j’ai pu assister. Le hasard fait quand même bien les choses…

Outre les différentes Keynotes matinales animées par les plus grands d’AWS, on peut également assister à une myriade de présentations, de conférences, ou encore d’ateliers. Et c’est justement lors d’un de ces ateliers que je me suis rendu compte qu’AWS (Amazon), ce n’était pas juste qu’une lettre dans l’acronyme GAFA.

Dans cet atelier, après une brève présentation du sujet, j’ai pu manipuler AWS (dans lequel je ne suis pas débutant) pour créer et déployer un back-end et un front-end en quelques clics. Et ce, dans le but, peu gratifiant certes, de jouer au tic-tac-toe en “direct” entre deux joueurs.

Ce qui m’a le plus surpris, c’est la rapidité avec laquelle le back-end et le front-end ont été créés, déployés et disponibles. Quelques minutes on suffit. Tout cela a été rendu possible grâce à la performance de deux outils AWS : Amplify et AppSync.

AWS Amplify

Il est vrai que se plonger dans AWS et ses concepts peut ressembler à un véritable obstacle et même freiner les ardeurs de nombreux développeurs tant la tâche peut paraître compliquée. Et elle l’est sous bien des abords sans une solide connaissance d’AWS.

Cependant, il existe quand même un moyen d’entrer “facilement” dans AWS, sans trop en perdre son latin : AWS Amplify.

AWS Amplify est un service proposé par … AWS, qui va permettre au plus néophyte des développeurs de créer, déployer et maintenir une architecture dite “serverless” en seulement quelques clics et commandes.

Amplify se sert d’autres services d’AWS, tels que AWS S3, AWS Cognito ou encore AWS Lambda pour n‘en citer que quelques uns’, et vous pourrez par conséquent les approcher sans crainte, voire même, soyons fous, les comprendre !

Moyennant une préparation de votre machine en installant AWS Amplify dans votre projet, et en ayant configuré celui-ci pour se connecter à votre compte AWS, vous serez prêts à devenir le développeur chevronné dont vous avez toujours rêvé.

Préparer sa machine

npm install -g @aws-amplify/cli

Créer son projet

amplify init

Cette commande vous posera une série de questions pour connaitre la techno que vous souhaitez utiliser (React, Angular, etc. ) ainsi que les services AWS qui doivent être ajoutés.

Créer un front (appli web)

amplify add hosting
  • Déployer sur AWS
amplify publish

Cette commande vous donnera également le lien que vous pourrez utiliser pour accéder à votre front.

Ajouter une API à votre projet

amplify add api

Cette commande va vous poser une série de questions, et notamment va demander quel type d’API vous voulez mettre en place (API REST ou API GraphQL)

  • Déployer l’API sur AWS
amplify push

La encore, cette commande va vous poser une série de question pour pouvoir déployer toutes les ressources proprement sur AWS.

Et voila, votre API est prête et utilisable.

AWS AppSync

AWS AppSync est un service géré d’API GraphQL fourni par AWS, qui simplifie la création et la gestion d’API sans avoir à se soucier de l’hébergement. Il offre un support complet des abonnements GraphQL et propose de nombreuses autres fonctionnalités pour faciliter la récupération de données à partir d’autres services AWS.

L’utilisation d’AWS AppSync permet de bénéficier de plusieurs avantages. Tout d’abord, il offre une expérience de développement rapide grâce à des outils de génération automatique de schémas GraphQL à partir de modèles de données existants. Cela permet de créer rapidement une API GraphQL cohérente et bien structurée.

De plus, AppSync simplifie la gestion des abonnements en temps réel grâce à l’intégration native de GraphQL Subscriptions. Cela permet aux clients d’écouter les modifications sur les données et de recevoir des mises à jour en temps réel, ce qui est particulièrement utile dans les applications nécessitant une communication en temps réel, telles que les applications de chat ou les tableaux de bord en direct.

Enfin, AppSync offre une intégration transparente avec d’autres services AWS tels que AWS Lambda, AWS DynamoDB, AWS Elasticsearch, etc. Cela permet de combiner facilement différentes sources de données et de les exposer via une seule API GraphQL cohérente.

La liste des sources de données compatibles est disponible ici.

Voici un exemple simplifié d’implémentation d’AWS AppSync avec une API GraphQL :

Définir le schéma GraphQL

Dans votre projet, créez un fichier schema.graphql décrivant le schéma de votre API GraphQL. Par exemple :

type Post {
id: ID!
title: String!
content: String!
}

type Query {
getPost(id: ID!): Post
listPosts: [Post]
}

type Mutation {
createPost(title: String!, content: String!): Post
updatePost(id: ID!, title: String, content: String): Post
deletePost(id: ID!): Boolean
}

Configurer AWS AppSync

Utilisez la commande amplify add api pour configurer AWS AppSync dans votre projet. Suivez les instructions pour choisir le type d'API (GraphQL dans ce cas) et spécifier votre schéma GraphQL.

Déployer l’API

Exécutez la commande amplify push pour déployer votre API GraphQL sur AWS AppSync. Cela créera automatiquement les ressources nécessaires, telles que le schéma GraphQL, les résolveurs et les bases de données associées.

Utiliser l’API GraphQL

Une fois l’API déployée, vous pouvez interagir avec celle-ci à l’aide d’outils tels que GraphQL Playground ou des clients GraphQL. Par exemple, vous pouvez exécuter des requêtes GraphQL pour récupérer des données ou effectuer des mutations pour créer, mettre à jour ou supprimer des données.

# Exemple de requête pour récupérer tous les articles
query ListPosts {
listPosts {
id
title
content
}
}

j# Exemple de mutation pour créer un nouvel article
mutation CreatePost {
createPost(title: "Mon nouvel article", content: "Contenu de mon article") {
id
title
content
}
}

En utilisant AWS AppSync, vous pouvez rapidement créer une API GraphQL et la déployer en quelques minutes, en bénéficiant des fonctionnalités avancées de GraphQL telles que les abonnements en temps réel et l’intégration avec d’autres services AWS. Cela facilite le développement d’applications réactives et évolutives basées sur GraphQL.

Alternative

AWS Amplify Studio

C’est un outil qui permet de créer une interface utilisateur rapidement en quelques clics, voire même directement depuis des maquettes Figma, par exemple ce qui peut grandement faciliter la tâche d’intégration d’un développeur.

Conclusion

Chez Mistertemp’, on a toujours envie de tester et s’assurer qu’une feature est réalisable, mais c’est souvent trop long à mettre en place. En revanche, si on peut réduire le temps de préparation pour déployer une stack back-end/front-end, ça pourrait devenir une bonne habitude à prendre, et des POCs pourraient voir le jour plus facilement.

--

--