Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Poignant <[email protected]>
  • Loading branch information
thomaspoignant committed Jan 6, 2025
1 parent cad7efd commit 44ebfd9
Show file tree
Hide file tree
Showing 88 changed files with 828 additions and 1,840 deletions.
4 changes: 2 additions & 2 deletions website/data/integrations.js
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ export const integrations = {
description: 'Export evaluation data inside the application logger.',
type: 'sync',
bgColor: '#000000',
faLogo: 'fas fa-file-lines fa-stack-1x fa-inverse',
faLogo: 'fa-solid fa-file-lines fa-inverse',
docLink: 'log',
},
],
Expand Down Expand Up @@ -243,7 +243,7 @@ export const integrations = {
name: 'Log',
description: 'Send notifications as a log in your application logger.',
bgColor: '#000000',
faLogo: 'fas fa-file-lines fa-stack-1x fa-inverse',
faLogo: 'fa-solid fa-file-lines fa-inverse',
},
],
};
1 change: 0 additions & 1 deletion website/data/notifier/aws_s3_relay_proxy.md

This file was deleted.

221 changes: 221 additions & 0 deletions website/data/sdk.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,65 +3,286 @@ export const sdk = [
name: 'GO',
paradigm: ['Server'],
faLogo: 'devicon-go-original-wordmark colored',
badgeUrl:
'https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fproxy.golang.org%2Fgithub.com%2Fopen-feature%2Fgo-sdk-contrib%2Fproviders%2Fgo-feature-flag%2F%40latest&query=%24.Version&label=GO&color=blue&style=flat-square&log=go',
docLink: 'server_providers/openfeature_go',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Java',
paradigm: ['Server'],
faLogo: 'devicon-java-plain colored',
badgeUrl:
'https://img.shields.io/maven-central/v/dev.openfeature.contrib.providers/go-feature-flag?color=blue&style=flat-square&logo=java',
docLink: 'server_providers/openfeature_java',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Kotlin',
paradigm: ['Server'],
faLogo: 'devicon-kotlin-plain colored',
badgeUrl:
'https://img.shields.io/maven-central/v/dev.openfeature.contrib.providers/go-feature-flag?color=blue&style=flat-square&logo=java',
docLink: 'server_providers/openfeature_java',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: '.NET',
paradigm: ['Server'],
faLogo: 'devicon-dot-net-plain-wordmark colored',
badgeUrl:
'https://img.shields.io/nuget/v/OpenFeature.Contrib.GOFeatureFlag?color=blue&style=flat-square&logo=nuget',
docLink: 'server_providers/openfeature_dotnet',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'not implemented',
},
{
name: 'Dynamic Cache Refresh',
status: 'not implemented',
},
],
},
{
name: 'Python',
paradigm: ['Server'],
faLogo: 'devicon-python-plain colored',
badgeUrl:
'https://img.shields.io/pypi/v/gofeatureflag-python-provider?color=blue&style=flat-square&logo=pypi',
docLink: 'server_providers/openfeature_python',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Javascript',
paradigm: ['Client'],
faLogo: 'devicon-javascript-plain colored',
badgeUrl:
'https://img.shields.io/npm/v/%40openfeature%2Fgo-feature-flag-web-provider?color=blue&style=flat-square&logo=npm',
docLink: 'client_providers/openfeature_javascript',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Typescript',
paradigm: ['Client'],
faLogo: 'devicon-typescript-plain colored',
badgeUrl:
'https://img.shields.io/npm/v/%40openfeature%2Fgo-feature-flag-web-provider?color=blue&style=flat-square&logo=npm',
docLink: 'client_providers/openfeature_javascript',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'React',
paradigm: ['Client'],
faLogo: 'devicon-react-original colored',
badgeUrl:
'https://img.shields.io/npm/v/%40openfeature%2Fgo-feature-flag-web-provider?color=blue&style=flat-square&logo=npm',
docLink: 'client_providers/openfeature_react',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Swift',
paradigm: ['Client'],
faLogo: 'devicon-swift-plain colored',
docLink: 'client_providers/openfeature_swift',
badgeUrl:
'https://img.shields.io/github/v/release/go-feature-flag/openfeature-swift-provider?label=Swift&amp;display_name=tag&style=flat-square&logo=Swift',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Kotlin / Android',
paradigm: ['Client'],
faLogo: 'devicon-android-plain colored',
docLink: 'client_providers/openfeature_android',
badgeUrl:
'https://img.shields.io/maven-central/v/org.gofeatureflag.openfeature/gofeatureflag-kotlin-provider?color=blue&style=flat-square&logo=android',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'Node.JS',
paradigm: ['Server'],
faLogo: 'devicon-nodejs-plain colored',
docLink: 'server_providers/openfeature_javascript',
badgeUrl:
'https://img.shields.io/npm/v/%40openfeature%2Fgo-feature-flag-provider?color=blue&style=flat-square&logo=npm',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'done',
},
{
name: 'Dynamic Cache Refresh',
status: 'done',
},
],
},
{
name: 'PHP',
paradigm: ['Server'],
faLogo: 'devicon-php-plain colored',
badgeUrl:
'https://img.shields.io/packagist/v/open-feature/go-feature-flag-provider?logo=php&color=blue&style=flat-square',
docLink: 'server_providers/openfeature_php',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'not implemented',
},
{
name: 'Dynamic Cache Refresh',
status: 'not implemented',
},
],
},
{
name: 'Ruby',
paradigm: ['Server'],
faLogo: 'devicon-ruby-plain colored',
badgeUrl:
'https://img.shields.io/gem/v/openfeature-go-feature-flag-provider?color=blue&style=flat-square&logo=ruby',
docLink: 'server_providers/openfeature_ruby',
featureList: [
{
name: 'Remote Evaluation',
status: 'done',
},
{
name: 'Local Cache',
status: 'not implemented',
},
{
name: 'Dynamic Cache Refresh',
status: 'not implemented',
},
],
},
];
56 changes: 56 additions & 0 deletions website/docs/concepts/architecture.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
sidebar_position: 40
description: What is the GO Feature Flag architecture
---

# 🏗️ Architecture

## Overview
GO Feature Flag is a feature flagging system that allows you to manage feature flags in your application.
The architecture is really simple and efficient with the goal to be easy to use and let you experiment with feature flags in your application as fast as possible.

In most cases you have 1 microservice running the `relay-proxy` and multiple applications running the SDKs, nothing else.

:::note
GO Feature Flag can also be run without the `relay-proxy` if you only use the GO Module.

The relay-proxy is an API layer on top of the GO Module, so it has the same logic inside.
:::

## Architecture concepts

![GO Feature Flag architecture](../../static/docs/openfeature/architecture.svg)

### 🧩 OpenFeature Providers
GO Feature Flag is working in collaboration with OpenFeature to be integrated with all the languages supported by GO Feature Flag.
To achieve this goal, we have created the OpenFeature providers that combines with OpenFeature SDKs to allow you to use GO Feature Flag in your application.

> **OpenFeature Providers**
> An SDK-compliant implementation which resolves flag values from a particular flag management system, allowing the use of the Evaluation API as an abstraction for the system in question.
This is what developers will use to interact with GO Feature Flag in their application.

### ↔️ Relay-Proxy
The relay-proxy is the only component you have to run in your infrastructure to use GO Feature Flag with the different SDKs.
This is a standalone GO binary that you can run in your infrastructure to expose the GO Feature Flag API to your applications.

:::info
Want to know more about the relay-proxy? [Check the relay-proxy documentation](../relay-proxy).
:::

The relay-proxy is designed to be simple, lightweight, and stateless. It operates without the need for any databases or complex systems, as it loads feature flag configuration files from a specified location and stores them in memory.

### ⬇️ Internal concepts
**You have 3 main concepts in GO Feature Flag architecture:**
- [retrievers](./retriever): This is the component in charge of fetching the feature flag configuration.
- [notifiers](./notifier): This is the component in charge of notifying external systems that a flag configuration has changed.
- [exporters](./exporter): This is the component in charge of exporting the flag evaluation results for analytics or monitoring.

Those 3 concepts are the core of GO Feature Flag and allows you to integrate GO Feature Flag in your current ecosystem with a minimum of effort.
Every component is designed to be as lightweight as possible and to be easy to configure.

## 🧑‍💻 Technologies

- GO Feature Flag is written in `golang`.
- The `retrievers`, `notifiers`, and `exporters` are using official libraries to interact with external systems.
- Providers are written in the language of the system they are interacting with and we are limiting the dependencies to the minimum to be as lightweight as possible.
2 changes: 1 addition & 1 deletion website/docs/concepts/exporter.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 50
sidebar_position: 60
description: Exporter are used to export your evaluation data to a remote source.
---
import {integrations} from "../../data/integrations";
Expand Down
2 changes: 1 addition & 1 deletion website/docs/concepts/notifier.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 60
sidebar_position: 70
description: Notifier are used to notified external systems that a flag configuration has changed.
---
import {integrations} from "../../data/integrations";
Expand Down
2 changes: 1 addition & 1 deletion website/docs/concepts/retriever.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 40
sidebar_position: 50
description: Retrievers are used to fetch the feature flag configuration from a remote source.
---
import {integrations} from "../../data/integrations";
Expand Down
6 changes: 0 additions & 6 deletions website/docs/experimental/_category_.json

This file was deleted.

Loading

0 comments on commit 44ebfd9

Please sign in to comment.