Principales différences et similitudes
Au cours de l’année écoulée, j’ai construit 2 produits avec un trafic et des utilisateurs réels. L’un utilisait Amplify et l’autre Firebase. Je vais partager mes leçons apprises et une comparaison directe entre amplifier et firebase.
Je diviserai cet article en deux parties. La première partie parlera de Firebase, et la deuxième partie parlera d’Amplify.
En bref, je suis un ingénieur front-end avec quatre ans d’expérience. D’après mon expérience, j’ai rarement travaillé sur des backends de qualité production, vous pouvez donc supposer que je n’ai qu’une petite connaissance des meilleures pratiques en matière de qualité backend.
Je veux me concentrer sur la construction d’un produit et je veux le publier le plus rapidement possible sans compromettre la qualité du côté backend, y compris l’authentification, la base de données CRUD, le stockage des actifs et bien sûr, la sécurité du backend elle-même.
Amplify et Firebase résolvent tous deux le même problème, qui fournit une solution complète qui permet aux développeurs Web et mobiles frontaux de créer et de mettre à l’échelle facilement des applications ou des jeux que les utilisateurs adorent.
j’ai construit un page communautaire basé sur Projet Sekai jeu pour collecter toutes les listes de souhaits de chansons que les joueurs souhaitent publier dans le jeu du monde entier.
Authentification
J’ai utilisé Firebase Authentication pour gérer l’authentification et l’autorisation des utilisateurs. Il existe de nombreuses options d’authentification, mais pour ce projet, j’ai choisi d’utiliser la connexion avec Google et de me connecter avec Twitter.
Firestore
J’ai utilisé Cloud Firestore comme option de base de données. Il s’agit d’une base de données NoSQL avec une structure basée sur des documents, similaire à MongoDB. J’ai utilisé cette base de données pour gérer:
- les votes des utilisateurs avec des mises à jour intégrées en temps réel.
- Soumission par l’utilisateur de sa chanson de liste de souhaits
- Gérez les chansons qui ont déjà été publiées dans le jeu.
Stockage
J’ai utilisé Cloud Storage avec un cas d’utilisation simple, comme la gestion du stockage d’éléments, comme des bannières d’images.
Règles de sécurité
J’ai utilisé des règles de sécurité pour gérer la validation, que les utilisateurs peuvent manipuler pour accéder à des données spécifiques.
Algolie
Cloud Firestore est livré avec d’excellentes fonctionnalités de manipulation de données, mais il y a une chose importante qu’il ne peut pas faire : la recherche en texte intégral et en texte partiel. Cependant, il dispose d’un support de première classe pour l’intégration avec la recherche Algolia via son extension Firebase.
Avantages
- Productivité – Firebase est livré avec d’excellentes fonctionnalités pour les ingénieurs frontaux ; cela nous aide vraiment à lancer des produits plus rapidement, à évoluer automatiquement en fonction du trafic des utilisateurs et à garantir la sécurité. Ils disposent également d’un support en temps réel prêt à l’emploi. Sous le capot de Firebase se trouve GCP lui-même, de sorte qu’il peut être facilement étendu aux capacités de votre projet Firebase vers Google Cloud Platform.
- Courbe d’apprentissage – Il a une courbe d’apprentissage facile car il est assez simple à intégrer à toutes les fonctionnalités de Firebase.
- Authentification – Firebase Authentication a de nombreux supports intégrés pour l’intégration avec des services tiers, tels que Google, Pomme, Facebook, Twitter, Microsoft, GitHubet Yahoo.
Les inconvénients
Pas de panneau d’administration – Firebase n’est pas livré avec un panneau d’administration intégré. Alors que les utilisateurs peuvent manipuler directement les données dans la console Firebase, l’interface utilisateur peut être trop technique pour ceux qui n’ont pas de connaissances techniques. Dans ce cas, un panneau d’administration doit être créé séparément
Recherche de texte intégral et partiel — L’absence de fonctionnalités intégrées pour effectuer une recherche partielle ou intégrale signifie que l’intégration avec un service tiers, tel que Algolie, Recherche élastiqueou alors Sens de la typographieest nécessaire.
Modélisation d’objets de base de données — Lorsque je construisais ce projet, j’utilisais encore la version Firebase 8.10.0
, et j’ai trouvé assez difficile de maintenir la cohérence des types de données entre le cloud et le code. Alors que les bases de données comme MongoDB ont des solutions comme Mongoose pour la modélisation d’objets, je n’ai pas trouvé de solution similaire pour Firestore. Cela entraîne une réduction de la productivité et de la qualité du code car je rencontre parfois des fautes de frappe dans les noms de champ, ou les noms de champ peuvent ne pas encore être définis.
Mais dans la dernière version de Firebase, ils ont une fonctionnalité pour gérer des objets personnalisés qui peut résoudre ce problème :
class City {
constructor (name, state, country ) {
this.name = name;
this.state = state;
this.country = country;
}
toString() {
return this.name + ', ' + this.state + ', ' + this.country;
}
}// Firestore data converter
const cityConverter = {
toFirestore: (city) => {
return {
name: city.name,
state: city.state,
country: city.country
};
},
fromFirestore: (snapshot, options) => {
const data = snapshot.data(options);
return new City(data.name, data.state, data.country);
}
};
j’ai construit un magasin de location de costumes de bout en bout dédié aux loisirs de cosplay.
- Amazon Cognito — J’ai utilisé Amazon Cognito pour gérer l’authentification et l’autorisation des utilisateurs. Il existe de nombreuses options d’authentification, mais pour ce projet, j’ai choisi d’utiliser se connecter avec Google et Se connecter avec Facebook.
- Amazon CloudFormation — AWS CloudFormation vous permet de modéliser, de provisionner et de gérer des ressources AWS et tierces en traitant l’infrastructure comme du code. Grâce à CloudFormation, je peux facilement créer des environnements de branche tels que la mise en scène et la production.
- AmazonAppSync — AWS AppSync crée des API GraphQL et Pub/Sub sans serveur qui simplifient le développement d’applications via un point de terminaison unique pour interroger, mettre à jour ou publier des données en toute sécurité.
- Amazon DynamoDB — Dans la section précédente, nous avons discuté de Firestore, qui utilise un concept basé sur des documents. DynamoDB, en revanche, utilise un schéma clé-valeur similaire à Redis. J’ai utilisé DynamoDB pour gérer toutes les données de mon site Web, telles que les données utilisateur, les données produit, les données de transaction, les données de paiement, etc.
- AmazonS3 — S3 est un stockage d’objets conçu pour récupérer n’importe quelle quantité de données de n’importe où. J’ai utilisé Amazon S3 pour gérer les images de produits, les actifs du site Web et les actifs des utilisateurs.
- Amazon Pinpoint — Amazon Pinpoint est un outil de communication multicanal ciblé. C’est l’équivalent de Google Analytics, mais pour la plateforme AWS. J’ai utilisé Amazon Pinpoint pour gérer tout le suivi et les analyses liés à mon site Web.
- Amazon Lambda — Amazon lambda est un service de calcul sans serveur et piloté par les événements. J’ai utilisé AWS Lambda pour gérer toutes les communications d’API avec des fournisseurs tiers, tels que des passerelles de paiement et des passerelles de messagerie.
Avantages
- Amplifier Studio — Contrairement à la version Firebase décrite dans la section précédente, AWS Amplify est livré avec un panneau d’administration général appelé Amplify Studio. Ce studio Amplify peut gérer la gestion des données, la gestion des utilisateurs et la gestion des actifs. Voici quelques exemples de ce à quoi ressemblent les capacités d’Amplify Studio.
- CloudFormation — Avec AWS CloudFormation, vous pouvez facilement cloner votre environnement, en particulier lors de la création d’environnements intermédiaires et de production. C’est l’un des principaux avantages par rapport à Firebase.
- Modélisation d’objets de base de données — Grâce à AWS AppSync, nous pouvons définir notre schéma de base de données à l’aide des types de schéma GraphQL. Cela crée une approche « base de données en tant que code », garantissant la cohérence de toutes les configurations de données. Nous pouvons également configurer l’autorisation des données à l’aide de ce schéma.
type Products @model @auth(rules: [{allow: public}]) {
id: ID!
available_size: [AvailableSizeEnums!]!
day_rent_price: Int!
is_active: Boolean!
minimum_rent_duration: Int!
product_name: String!
quantity: Int!
weight: Int!
s3_path: String!
product_image: [String!]!
product_description: String!
}
Recherche de texte intégral et partiel — Amazon a une fonction intégrée pour gérer la recherche avec Amazon OpenSearch.
Les inconvénients
Authentification — AWS Cognito propose moins d’options d’intégration sociale que Firebase. Il n’a que des options de connexion avec Amazone, Facebook, Googleet Pommemais il peut être étendu avec Auth0.
Courbe d’apprentissage – J’ai l’impression qu’AWS Amplify a une courbe d’apprentissage plus abrupte et est plus difficile à comprendre pour les ingénieurs frontaux par rapport à Firebase. Amplify n’est qu’un bloc de construction et une commande guidée par CLI pour gérer les ressources AWS. Vous devez donc comprendre plusieurs produits AWS pour comprendre le fonctionnement d’Amplify. Par exemple, si je veux ajouter de nouveaux champs de données à DynamoDB, je dois passer par quelques étapes, contrairement à Firestore, où je peux directement créer de nouvelles données sur la console Firebase.
Moins de discussion communautaire — Comme je l’ai déjà mentionné, AWS Amplify a une courbe d’apprentissage plus élevée. Ainsi, si vous rencontrez des erreurs, des problèmes ou quelque chose que vous ne savez pas, la discussion et les questions-réponses sur Stack Overflow ou GitHub sont moins nombreuses que sur Firebase. Je me suis même abonné à AWS Developer Support afin de pouvoir accéder au support développeur d’AWS lui-même si j’ai des questions techniques.
En tant qu’ingénieurs front-end, Amplify et Firebase peuvent résoudre des problèmes complexes liés au back-end lors de la création de notre propre produit. Si on me demande lequel je préfère, ça dépend.
Si je veux créer un produit non sérieux ou quelque chose juste pour m’amuser avec la communauté, je choisirais Firebase. Cependant, si je veux construire un produit sérieux qui sera mon revenu secondaire, je choisirais Amplify.