Before I arrived at Kuzzle, I had never heard of a backend in the sense of a "Complete Backend Solution".
I had only worked with frameworks that allowed me to create a backend from a set of software components such as Ruby-On-Rails or Symfony.
What is the purpose of a backend?
Nowadays, almost all web, mobile or IoT applications require an application backend. This backend fulfills several essential functions.
Manage Data
The backend is the repository for application data. It will store the data for the different applications and then make them available so that applications on different platforms can synchronize with each other.
Execute critical business logic
A backend is also the part that executes the critical business logic of your application. It is it that will edit the invoices, distribute accesses or perform processing.
Even if today more and more business logic is executed on the client side, some processing can only be done in the secure environment of your backend.
Expose your application functionalities
Your backend makes your data and features accessible to applications through an API. These APIs most often use on web-based protocols such as HTTP or Websocket.
They will allow your different applications to interact with your backend regardless of the language or platform used.
Restrict access
The last thing you expect from a backend is the management of a users and rights system.
Each application and user is assigned a set of rights giving them access only to certain application segments. Thus it is possible to control and track the actions of the different applications within the backend.
Complete Backend Solution VS Backend Framework
When I was developing REST APIs in Ruby-On-Rails, I was creating an application backend using a Framework. I realized that it was mainly a repetitive development of the same structure.
If you are a developer and you have already developed a REST API in Ruby-On-Rails, Symfony, Django or Node.js you certainly know what I mean.
A Complete Backend Solution offers all the features described above that are always needed in an application backend.
This means at least data storage, user and rights management, addition of business functionalities and exposure of an API.
All these features will take time to develop, test and debug, which will delay the deployment of your application.
In addition, you will have to manage the security and performance parts of your backend yourself, whereas these two areas require a certain level of technical expertise.
Have you ever heard of timing attacks or V8 internal optimizations? The designers of a Complete Backend Solution certainly know these issues and know how to solve them.
Fortunately, it is possible to get away from writing the repetitive and complex code of the Backend and write as little code as possible which is a the goal in software development :-)
When you use a Complete Backend Solution, you have:
- Less code to write
- Fewer bugs to fix
- Fewer performance problems
- Fewer security problems
- A reduction in time-to-market
- A reduction in investments
In short, the use of a Complete Backend Solution means reducing the usual risks associated with software development while allowing you to capitalize on what really brings added value to your users.
What about Kuzzle ?
Kuzzle was developed specifically to provide a secure and powerful Complete Backend Solution with many features for developers.
A modern Complete Backend Solution
In addition to the basic functionalities of a Backend, it offers advanced functionalities such as advanced search thanks to Elasticsearch, real time or geofencing to develop modern applications.
Getting started couldn't be easier! With Docker and Docker Compose installed, you can launch Kuzzle in a single command line:
bash -c "$(curl http://get.kuzzle.io/)"
Many SDKs
You can then use one of the many SDKs available to start developing your application with Kuzzle. Currently you can use Javascript, PHP, Android, Go or Java and soon C++, C#, Python, Ruby and Lua ! (in beta currently)
These SDKs have been developed with the constraints of the modern web in mind and can automatically manage connection loss and offline mode.
Administration Dashboard
For Kuzzle administration and data visualization tasks, you can use the Admin Console which is a Vue.js application using the Javascript SDK.
This application is available online but you can also install it locally. The online version is totally safe to use, no data passes through our server! The Admin Console is just a browser application that connect to your instance of Kuzzle.
With the Admin Console you can create users, configure rights, manage data in collections or receive real-time notifications.
Production Ready
Kuzzle was developed using enterprise grade technologies: Node.js, Elasticsearch and Redis.
Today, Kuzzle is already deployed in production environments thanks to our cluster plugin. Once activated, the plugin allows you to deploy as many Kuzzle nodes as necessary to support the load.
Elasticsearch and Redis are proven technologies known to be able to manage very large volumes of data with their integrated cluster modes.
Entirely Open Source
At Kuzzle we are all concerned about the issues related to non-free closed source software. We believe that Open Source and free software are the best ways to achieve quality software that developers can rely on with confidence.
All our projects are Open Source and distributed under Apache2 license. This means that they can be used and redistributed free of charge without conditions.
We are transparent about our development processes, you can come and see for yourself by browsing the issues and pull requests on Github or read our articles about releases.
A Discord chat is also available if you want to talk directly with the team and we still answer emails of course:-)