Avant d’arriver chez Kuzzle, je n’avais jamais entendu parler de backend dans le sens de “Backend clé en main”.
Je n’avais travaillé qu’avec des Framework permettant de créer un backend en partant d’un ensemble de composants logiciels comme Ruby-On-Rails ou Symfony.
À quoi sert un Backend ?
De nos jours, la quasi totalité des applications web, mobile ou IoT ont besoin d’un backend applicatif. Ce backend remplit plusieurs fonctions essentiels.
Gérer des données
Le backend est le support des données des applications. Il va stocker les données pour les différentes applications puis les rendre disponibles afin que des applications réalisées sur des plateforme différentes puissent se synchroniser.
Exécuter la logique métier critique
Un backend est aussi le support de la logique métier critique de votre application. C’est lui qui va éditer les factures, distribuer des accès ou effectuer des traitements.
Même si aujourd’hui de plus en plus de logique métier est exécutée côté client, certains traitements ne peuvent s’effectuer que dans l’environnement sécurisé de votre backend.
Exposer votre applicatif
Votre backend rend accessible vos données et vos fonctionnalités aux application au travers d’une API. Ces API utilisent le plus souvent sur des protocoles issus du web comme HTTP ou Websocket.
Elles vont permettre à vos différentes applications d'interagir avec votre backend quel que soit le langage ou la plateforme utilisée.
Restreindre les accès
La dernière chose que l’on attend d’un backend est la gestion d’un système d’utilisateurs et de droits.
Chaque application et utilisateur se voit attribuer un ensemble de droits lui donnant accès uniquement à certains segments applicatifs. Ainsi il est possible de contrôler et de tracer les actions des différentes applications au sein du backend.
Backend clé en main VS Framework pour Backend
Lorsque je développais des API REST en Ruby-On-Rails, j’étais entrain de créer un backend applicatif à l’aide d’un Framework. J’ai pu me rendre compte que c’était principalement un développement répétitif de la même structure.
Si vous êtes développeur et que vous avez déjà développé une API REST en Ruby-On-Rails, Symfony, Django ou Node.js vous savez certainement ce que je veux dire.
Un Backend clé en main offre l’ensemble des fonctionnalités décrites précédemment dont on a toujours besoin dans un backend applicatif.
C’est à dire à minima stockage des données, gestion des utilisateurs et droits, ajout de fonctionnalités métier et exposition d’une API.
Toutes ces fonctionnalités vont prendre du temps à être développées, testées et déboguées ce qui retardera la mise en production de votre application.
En plus, vous allez devoir gérer vous même la partie sécurité et la partie performances de votre backend alors que ces deux domaines nécessitent un certain niveau d’expertise technique.
Avez-vous entendu parler d’attaques temporelles ou des optimisations de V8 ? Les concepteurs d’un Backend clé en main connaissent certainement ces problématiques et savent les résoudre.
Heureusement, il est possible de s’abstraire de l’écriture du code répétitif et complexe du Backend et écrire le moins de code possible c’est un peu le but en informatique :-)
Lorsque vous utilisez un Backend clé en main, vous avez donc:
- Moins de code à écrire
- Moins de bugs à corriger
- Moins de problèmes de performance
- Moins de problèmes de sécurité
- Une réduction du time-to-market
- Une réduction des investissements
En somme l’utilisation d’un Backend clé en main c’est la réduction des risques habituels liés au développement logiciel tout en permettant de capitaliser sur ce qui apporte une véritable valeur ajoutée à vos utilisateurs.
Et Kuzzle dans tout ça ?
Kuzzle a été développé spécifiquement dans le but de fournir un Backend clé en main sécurisé et performant offrant de nombreuses fonctionnalités aux développeurs.
Un Backend clé en main moderne
En plus des fonctionnalités de base d’un Backend, il offre des fonctionnalités avancées comme la recherche avancée grâce à Elasticsearch, le temps réel ou le geofencing pour développer des applications modernes.
Pour commencer à l’utiliser, rien de plus simple ! Grâce à Docker et Docker Compose, vous pouvez lancer Kuzzle en une seule ligne:
bash -c "$(curl http://get.kuzzle.io/)"
De nombreux SDKs
Vous pouvez ensuite utiliser un des nombreux SDK disponible pour commencer à développer votre application avec Kuzzle. Actuellement vous pouvez utiliser Javascript, PHP, Android ou Go et bientôt Java, C++, C#, Python, Ruby et Lua (en beta actuellement) !
Ces SDK ont été développés en pensant aux contraintes du web moderne et gèrent tous automatiquement les pertes de connexions et le mode hors ligne.
Une console d’administration
Pour les tâches d’administration de Kuzzle et de visualisation de vos données, vous pouvez utiliser l’Admin Console qui est une application Vue.js utilisant le SDK Javascript.
Cette application est disponible en ligne mais vous pouvez aussi l’installer en local. La version en ligne est complètement sécurisée, aucune donnée ne passe par nos serveurs! L’Admin Console est juste une application dans le navigateur qui se connecte à l’instance Kuzzle de votre choix.
Avec l’Admin Console vous pouvez créer vos utilisateurs, configurer vos droits, gérer vos données dans vos collections ou encore recevoir des notifications en temps réel.
Production Ready
Kuzzle a été développé en s’appuyant sur des technologies ayant fait leurs preuves: Node.js, Elasticsearch et Redis.
Aujourd’hui, Kuzzle est déjà déployé dans des environnements de production grâce à notre plugin cluster. Une fois activé, le plugin permet de déployer autant de nœuds Kuzzle que nécessaire pour soutenir la charge.
Elasticsearch et Redis de leur côté sont des technologies éprouvées connues pour pouvoir gérer de très gros volumes de données avec leurs modes cluster intégrés.
Complétement Open Source
Chez Kuzzle nous sommes tous concernés par les problématiques liés aux logiciels non libre à sources fermées. Nous pensons que l’Open Source et le libre sont les meilleurs moyens d’arriver à des logiciels de qualité sur lesquels les développeurs pourront s’appuyer avec confiance.
L’ensemble de nos projets sont Open Source sous licence Apache2. Cela signifie qu’ils peuvent être utilisés et redistribués gratuitement sans conditions.
Nous sommes transparents sur nos processus de développement, vous pouvez venir voir vous même en parcourant les issues et les pull requests sur Github ou encore lire nos articles à propos des releases.
Un chat Discord est également disponible si vous souhaitez parler directement avec l’équipe et nous répondons encore aux mails bien sur :-)