Cela fait maintenant plus de deux ans et demi que Kuzzle est sorti en version 1.0.0.
Aujourd’hui après 10 versions mineures et des dizaines de nouvelles fonctionnalités, nous sommes heureux de vous annoncer la sortie de la version 2.0 !
Quelles sont les nouveautés de Kuzzle 2.0 ?
Support Elasticsearch 7
Kuzzle supporte maintenant la dernière version d’Elasticsearch: Elasticsearch 7.4.0.
En plus des nombreuses nouvelles fonctionnalités apportées par cette version, Elasticsearch 7 supprime définitivement la notion de types au sein des index.
Nous avons décidé de garde la logique actuelle de collections et d’index dans Kuzzle et nous avons donc émulé les collections. Chaque collection est contenue dans son propre index Elasticsearch.
L’utilisation des collections émulées est transparente pour les utilisateurs.
Seule une migration des anciennes données sera nécessaire pour passer à Kuzzle 2.0, cette migration est réalisée de manière automatique par le script de migration fourni.
Support Node.js 12
Kuzzle 2.0 est livré avec la dernière version LTS de Node.js, la version 12.
Cette version inclut notamment une optimisation de l’utilisation des promises avec async/await.
Cela signifie que vous pouvez maintenant user et abuser de ces mots clés dans le développement de plugins ;-)
Génération de clés d'API
Il est maintenant possible de gérer des clés d'API pour chaque utilisateur.
Ces clés d'API peuvent être d'une durée indéterminée et permettent à des applications tierces de se connecter à Kuzzle en tant qu'un utilisateur.
Elles sont notamment utiles lors pour authentifier une callback venant de Sigfox ou LoRa.
Voir la documentation des routes associées:
- auth:createApiKey, auth:searchApiKeys et auth:deleteApiKey
- security:createApiKey, security:searchApiKeys et security:deleteApiKey
Externalisation de la CLI
La CLI de Kuzzle est à présent un projet à part entière.
Ce package est disponible sur NPM et permet d’administrer à distance votre cluster Kuzzle.
Toutes les fonctionnalités de l’ancienne CLI sont disponibles.
Remaniement des routes document:m*
Les routes document:m* ont été remaniées pour une plus grande cohérence des réponses de l’API.
Ces routes ne renvoient plus de PartialError lorsqu’une ou plusieurs actions échouent. À la place, deux tableaux sont renvoyés:
- successes: contient les actions exécutées avec succès
- errors: contient les actions ayant échouées
Suppression des fonctionnalités dépréciées
De nombreuses fonctionnalités dépréciés ont été supprimé de Kuzzle:
- Permission closures
- Documents trashcan et le Garbage Collector
- La propriété _meta
Pourquoi faire une 2.0 maintenant ?
Étant donné que les supports LTS de Elasticsearch 5 et Node.js 6 étaient arrivé à leur terme, nous ne pouvions plus nous permettre de continuer à utiliser ces versions obsolètes.
Nous avons choisi de faire le moins de breaking changes possible afin de faciliter la montée en version des clusters existants.
Ceux-ci sont fortement incités à se mettre à jour rapidement.
Comment je fait pour migrer depuis Kuzzle v1 ?
Afin de faciliter au maximum la transition depuis Kuzzle v1 vers Kuzzle v2, nous avons prévu un script de migration qui s’occupera entièrement de la migration du stockage, du cache et de la configuration d’un cluster Kuzzle v1 vers un cluster Kuzzle v2.
Cette migration peut se faire directement sur le même cluster (migration “in-place”) ou alors depuis un cluster A en Kuzzle v1 vers un cluster B en Kuzzle v2.
Le script de migration nécessite un accès à Elasticsearch, Redis et au fichier de configuration de Kuzzle pour fonctionner correctement.
Voir le guide du script de migration.
Vous pouvez également consulter la liste des différences entre les deux version.
Chaque changement y a été scrupuleusement noté afin de faciliter la compréhension de l’impact de la migration sur vos applications clientes.
Voir la liste des changements.
Qu’est-ce que cela implique pour mon projet avec Kuzzle v1 ?
Conformément à notre politique de support LTS, nous supporterons la dernière version mineure de Kuzzle v1 (1.11.0) pendant 18 mois.
Ce support inclut exclusivement les correctifs de bugs et de sécurité.
A présent, les nouvelles fonctionnalités seront réalisés sur Kuzzle V2.
Si vous rencontrez des difficultés dans votre processus de migration ou que vous souhaitez vous assurer d’une migration sans encombre, nous pouvons vous proposer des services d’accompagnement et du consulting.
Compatibilité de l’Admin Console, des SDKs et des plugins
Nous avons également mis à jour la documentation et l’Admin Console pour supporter plusieurs versions majeures de Kuzzle.
Lorsque vous visitez une de ces deux applications, vous pouvez choisir quelle version majeure de Kuzzle vous souhaitez utiliser.
Concernant nos SDK et nos plugins, une version majeure va être rendue disponible pour chacun d’entre eux.
Afin de faciliter la transition et éviter les erreurs de compatibilité, Kuzzle vérifie à présent que la version du SDK utilisée est bien compatible avec la version actuelle.
Vous pouvez dès à présent utiliser le SDK Javascript avec Kuzzle v2 dans sa version 7, les autres SDKs seront bientôt disponibles.
Et maintenant ?
Nous souhaitons remercier tous les utilisateurs et les contributeurs qui nous ont aidé à réaliser Kuzzle v2 en apportant leur feedback et en testant pour nous les nouvelles versions.
L’année 2020 sera riche en fonctionnalité pour Kuzzle avec notamment l’intégration du cluster au coeur ou encore un système de limitation des requêtes.
Venez consulter la totalité de notre roadmap publique sur Trello !
Si vous rencontrez des problèmes lors de l’utilisation de Kuzzle v2, n’hésitez pas à nous en faire part en créant une issue sur Github ou en venant nous parler sur Gitter !