Announcing Izanami v2
#OSSByMAIF Team is proud to release Izanami v2.
This version is a complete rewrite of Izanami, that focuses on feature flags.
French version of this article is available here.
What is feature flag ?
Feature flag is a development pattern that allows to decorrelate new features activation from their delivery.
Placing a feature behind a flag allows enabling or disabling it at will or only at some conditions, without needing to redeploy the application.
Moreover, feature flags are a stepping stone toward trunk-based development flow, delivering development teams from the pain of long living feature branches and complicated merges. Instead, all pending features can be on the main branch, behind flags.
Local flags VS Izanami
Local flags are the most common implementation of feature flags. They are defined entirely in application code, it could be through the use of if/else statement with environment variables, using dedicated library…
While local flags are a good way to get started and a great solution for simple needs, Izanami offers an alternative by allowing to centralize flags. This comes with advantages:
- Flags can be shared between applications, and technologies
- Flag activation condition can be changed without any impact on client applications
- All flags are in the same places, which ease their administration and monitoring
- Toggling a flag has immediate effect on all consumers.
Izanami
As we’ve seen, Izanami is a centralized feature flags solution. It allows defining and exposing feature flags easily.
Feature flags can either be simple toggles or have more complex activation conditions, based on date, users, or even custom scripts.
Izanami exposes flags through HTTP, allowing any application to retrieve flag(s) state(s).
Last but not least, Izanami is Open Source (under Apache 2 license), meaning that you can suggest improvements or help making them happen !
What changes with v2
This new Izanami version focuses on feature flags. It introduces some enterprise-friendly features, such as multi tenancy, organization of features by projects and tags and support for environments (and much more) through contexts. Feature flags are also way more flexible, since they can now have several activation conditions.
This new version also reimplements script features using WASM through the use of Extism and WASMO.
WASM makes script execution completely sandboxed and allows writing features using a variety of languages (Go, Rust, Js, …).
While V2 is a complete rewrite of Izanami, it keeps compatibility with existing clients, except for some rare edge cases.
However, a new Java client come with this version, which has fewer dependencies and provides more flexibility, especially regarding error strategies and cache management.
Another big change is the choice of Postgres as a database, which allows leveraging its specifics features for better performances.
A/B testing is absent for v2 for now, however we plan to add it soon.
Finally, Izanami v2 does not include distributed configuration management. We abandoned this feature because there are many open-source solutions that do it very well, such as Spring cloud config, Consul, ZooKeeper…
What’s next
While v2 is production ready, there are some big features coming:
- Audit log : this will allow monitoring exactly how a feature flag was modified by users and accessed by client. This could be used to understand how a flag ended up in a given state, or to make sure that a feature is not used anymore before deleting it.
- JavaScript client: we plan to rewrite JavaScript client to leverage full power of Izanami v2.
- A/B testing: A/B testing is not present in v2 yet, but we plan to add an improved version of it, as we did for feature flags.
To learn more, go to Izanami documentation or Github repository.