Today we are announcing the third generation of the Natrium and Kalium APIs and Backend. The new backend has already replaced the old one and existing users should notice no difference or interruption in service. If you do experience new problems, file a detailed bug report, so we can address it right away.
Almost 4 years of Natrium, 3 backends
Natrium is approaching its 4 year anniversary and this is the 3rd iteration of the backend that drives the app.
Here's a brief history of Natrium's (backside) Development over the last 4 years.
First generation, nano wallet company, python+tornado
The first generation backend was a fork of the nano wallet company server. Which is a very simple service based on the Python Tornado Framework. The server quickly became difficult to maintain as we added new features and expanded functionality. Tornado's coroutine implementation predates the python native implementation by several years, this resulted in more difficulty during development as many libraries were incompatible, etc. In addition, the server was just generally inefficient and slow.
The second generation, python+aiohttp
After less than a year, it was decided to rewrite the server using aiohttp. This is a much more modern python framework that utilizes the native Python coroutines using the asyncio package. It served our users very well, although it has some occasional hiccups. The primary problem is that Natrium and Kalium adoption and usage increased during the bull market of late 2020 and 2021 to very high levels. The server always has active connections and requests all day, every day. This continues, albeit, a bit less than before the market crash, to this day.
The third generation, GOLang
The new APIs/backend is written in GOLang. A language that is essentially perfectly tailored to the use case that Natrium and Kalium have, that is highly concurrent and highly performant web services. Aside from a different language, the new server is more robust, it utilizes PostgreSQL for storing some user data such as tokens for push notifications - which solves a major pain point of the old server using Redis to store this data. The Redis data store quickly grew to unmanageable sizes with the number of users we have. In general, all of the engineering choices behind the new backend also lead to easier extensibility and enhancements in the future.
In summary, the new backend is:
- Faster, much faster
- Better tested with a better structure
- Cheaper and more efficient, using fewer system resources by several orders of magnitude
Natrium v2.5 and Kalium v2.4
The new backend is a transparent upgrade for users, there is an upcoming v2.5 release of the Natrium app and Kalium v2.4 that will be arriving soon, the primary change is the migration to Flutter v3 as well as some material design 3 features for Android.
Support Natrium Development
Natrium is open source and released under the MIT license — it is completely free. If you would like to support the development of Natrium, you can donate using the link below:
For more info & regular updates:
Natrium Twitter: @NatriumIO
Natrium Website: Natrium.io
Appditto Twitter: @Appditto
Appditto Website: Appditto.com
Appditto Github: @Appditto