Overview

Flipt is a CloudNative feature flag solution. While Flipt can run in almost any environment, it is especially well suited for CloudNative environments.

CloudNative means different things to different people. We define CloudNative as an environment that is:

  • Containerized - Flipt is distributed as a container image and can be deployed to any container orchestration platform.
  • Dynamic - Flipt is designed to be deployed and updated with minimal downtime.
  • Scalable - Flipt is designed to scale horizontally and vertically.
  • Observable - Flipt is designed to be observable. It exposes Prometheus metrics and logs in a structured format.
  • Stateless - Flipt is designed to be stateless. It supports multiple storage backends, including cloud object storage and SQL databases.

Kubernetes and Helm

Flipt is mainly distributed as a container image. While it is a single binary and can run easily on bare metal, most users choose to deploy Flipt to a container orchestration platform such as Kubernetes.

To deploy Flipt to Kubernetes, use our Helm chart as described in our Kubernetes documentation.

Flipt also integrates directly with Kubernetes service account tokens for authentication. This allows services deployed into the same Kubernetes cluster as Flipt to automatically gain authenticated access to the Flipt API without additional management of static client tokens.

See our Kubernetes Authentication documentation for more information on how to configure Kubernetes service account authentication.

Metrics and Observability

Metrics

Flipt exposes Prometheus metrics on the /metrics endpoint. These metrics are designed to be scraped by Prometheus and visualized in external tools such as Grafana.

See the Metrics Configuration documentation for more information on the metrics exposed by Flipt and how to configure them.

Logging

Flipt writes structured logs in JSON format. These logs are designed to be ingested by external log aggregation tools such as Elasticsearch, Splunk, and Grafana Loki.

For more information on the logs exposed by Flipt and how to configure them, see the Logging Configuration documentation.

Tracing

Flipt exposes tracing information in the OpenTelemetry format. This allows you to trace requests through Flipt and into your application. Flipt also annotates the traces with information such as the feature flag and variant that was evaluated.

For more information on the tracing exposed by Flipt and how to configure it, see the Tracing Configuration documentation.

Storage

Flipt is designed to be stateless. It supports multiple storage backends, including cloud object storage, git, OCI, and SQL databases.

Our Declarative Storage also allows you to easily migrate between storage backends. For example, you can start with a local SQLite database and migrate to a cloud object storage backend as your usage grows.

Security and Performance

Security

Flipt supports multiple authentication methods, including static tokens, Kubernetes service account tokens, JWT, and OIDC.

See our Authentication documentation for more information on the authentication methods supported by Flipt.

Performance

Flipt is written in Go and is designed to be performant. It’s horizontally scalable and can be deployed to multiple replicas to handle increased load.

Flipt also supports caching of feature flag evaluations. This allows you to cache the results of feature flag evaluations in memory to reduce the load on your storage backend.

Finally, Flipt’s GRPC API is meant to be used in a cloud environment such as Kubernetes. This allows you to deploy Flipt in the same Kubernetes cluster as your applications and take advantage of the low latency and high throughput of the Kubernetes network.

See our Architecture and Deployment documentation for more information on how to deploy Flipt for performance and scalability.