bucketeer-io / bucketeer Goto Github PK
View Code? Open in Web Editor NEWFeature Flag Management and A/B Testing platform
Home Page: https://bucketeer.io
License: Apache License 2.0
Feature Flag Management and A/B Testing platform
Home Page: https://bucketeer.io
License: Apache License 2.0
No response
No response
Currently, Bucketeer evaluates all the feature flags when a single flag changes.
For environments with a small number of flags, it doesn't impact the loading on the server and network traffic. But there are a few projects running more than 300 flags simultaneously, and it could affect the response time and network traffic in the future.
To avoid that, we decided to change the evaluation process to evaluate and return only the changed flags.
We will also need to make changes in the client SDKs.
TODO:
When the user adds many variations and changes the default and off variation to use anything above index 1, changing the variation type from STRING to BOOLEAN will delete the extra variations. Still, it doesn't update the default and off variation.
1- Add a new Feature Flag
2- Change the variation type to STRING
3- Add 3 new variations
4- Change the ON and OFF variation values to variations 4 and 5, respectively
5- Change the variation type to BOOLEAN
Currently, Bucketeer shows the segment user as follows:
If the segment user is used, it shows "In Use". If not, "Not In Use". Although it's useful, it would be better to show which feature uses this segment user. I implement this part of the backend.
No response
No response
The feature checking evaluation on UI would be helpful for users to confirm the returned value on current settings.
When setting complicated evaluation strategy, it would be hard for users to check if the settings are valid or expected.
No response
Currently, we manage the SQL migration and schema changes in another repository. This must be done in the main repository. Otherwise, people hosting the project can't get the updates.
In addition to that, we will modify the migration-mysql service implementation not to access the GitHub repo so that we don't have to put an extra secret (GitHub personal access token) on the Kubernetes cluster.
Bucketeer chose a microservices architecture in the early stages of development, but as the number of services grew, the following problems emerged:
These disadvantages could intimidate future users from adopting Bucketeer.
While the benefits gained by microservices architecture are also hard to dismiss.
Microservices architecture has allowed us to implement properly separated services quickly.
We think the modular monolithic architecture will allow us to enjoy the benefits of microservices architecture while reducing its disadvantages.
We have integrated eleven microservices into a service named backend
with the following PRs:
Currently, it's only in Japanese.
https://github.com/bucketeer-io/bucketeer/blob/main/pkg/notification/sender/notifier/message.go
https://github.com/bucketeer-io/bucketeer/blob/main/pkg/notification/sender/notifier/slack.go#L230
https://github.com/bucketeer-io/bucketeer/blob/main/pkg/notification/sender/notifier/slack.go#L266
https://github.com/bucketeer-io/bucketeer/blob/main/pkg/notification/sender/notifier/slack.go#L284
1 - Access the link
2- Switch to experiment 2 on the select menu on the top left
3- After it is loaded, switch again to experiment 1
4- The dashboard becomes blank.
To improve the feature flag page search, we should add the tag filter in the filter options.
Also, we should list the current tags saved in the DB on the feature flag create and push create pages to make it easier to know what flag is used in the current environment.
Currently, when we run make test-go the unit tests for the experiment will fail because they make requests to the httpstan server.
In the GitHub Actions, we deploy it as a service.
https://github.com/bucketeer-io/bucketeer/blob/main/.github/workflows/pr-go.yaml#L26-L31
It would be nice if we automated the httpstan process before running the unit tests locally in the Makefile.
No response
No response
Currently, Bucketeer only can be operated in the Google Cloud Platform.
Because we are also getting requests to support AWS, let's implement it!
If there is demand, we also may consider supporting Microsoft Azure.
support multi language for audit log
No response
No response
A new UI is coming!
UX Audit
Design
Frontend development
Organization page
In some cases, we want to re-order the configured rules on the targeting tab. We could move them using drag-and-drop functionality to re-order them. So we won't need to recreate them.
No response
No response
Add CODEOWNERS to assign reviewers automatically.
No response
No response
0.3.0
To delete the e2e data using the hack script, we include the test ID in the flag trigger description. There was a test not including the description in the test which caused the SQL error Cannot delete or update a parent row
.
No response
No response
Error 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`master`.`flag_trigger`, CONSTRAINT `foreign_flag_trigger_feature_id_environment_namespace` FOREIGN KEY (`feature_id`, `environment_namespace`) REFERENCES `feature` (`id`, `environment_namespa)
### Additional information
_No response_
Currently, we have a few batch services running cron jobs and executing some tasks from time to time.
To improve maintenance and reduce the number of microservices, we decided to use Kubernetes cron job.
Currently, Bucketeer documentation only covers the SDK integration. It needs to provide guides about how users can use the dashboard.
The Bucketeer dashboard has several configuration tabs whose functions are not clear for new users. In addition, the documentation does not present any guide on how to start using the dashboard and creating flags. Therefore, we can add new sections to the documentation covering these issues.
No response
Currently, we count the MAU by checking the partition size on the mau
table.
Every month, we need to create a new partition manually. Because we could forget to create it, we must automate this process to avoid future issues.
For deletion, we already have the batch running once per month to delete old partitions. We can reuse this batch and change it to create a partition instead of deleting it. We might need to make other changes, but it can be used as a reference.
https://github.com/bucketeer-io/bucketeer/blob/main/pkg/batch/jobs/mau/mau_partition_deleter.go
Manifest (Batch service)
https://github.com/bucketeer-io/bucketeer/blob/main/manifests/bucketeer/charts/batch/values.yaml
API
https://github.com/bucketeer-io/bucketeer/blob/main/pkg/batch/api/api.go#L100-L103
PR(deleter)
#584
No response
No response
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are awaiting their schedule. Click on a checkbox to get an update now.
@types/react
, @types/react-dom
, eslint-plugin-react-hooks
)PyMySQL
, pymysql
)@babel/core
, @babel/preset-env
, @babel/preset-react
, @babel/preset-typescript
)@emotion/babel-preset-css-prop
, @emotion/react
, @emotion/styled
)@formatjs/cli
, react-intl
)babel-jest
, jest
)@nrwl/cli
, @nrwl/cypress
, @nrwl/eslint-plugin-nx
, @nrwl/jest
, @nrwl/linter
, @nrwl/react
, @nrwl/tao
, @nrwl/web
, @nrwl/workspace
, nx
)@typescript-eslint/eslint-plugin
, @typescript-eslint/parser
)APScheduler
, apscheduler
)@material-ui/core
, @material-ui/icons
, @material-ui/lab
)@formatjs/cli
, react-intl
)@types/jest
, babel-jest
, jest
, ts-jest
)@nrwl/cli
, @nrwl/cypress
, @nrwl/eslint-plugin-nx
, @nrwl/jest
, @nrwl/linter
, @nrwl/react
, @nrwl/tao
, @nrwl/web
, @nrwl/workspace
, nx
)@types/react
, @types/react-dom
, react
, react-dom
)@typescript-eslint/eslint-plugin
, @typescript-eslint/parser
)These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
hack/delete-e2e-data-mysql/Dockerfile
python/Dockerfile
index.docker.io/library/python 3.7.6-buster
index.docker.io/library/python 3.7.6-slim-buster
tools/dex/Dockerfile
ghcr.io/dexidp/dex v2.36.0
tools/httpstan/Dockerfile
python 3.9-slim
tools/runner/Dockerfile
ubuntu 18.04
ui/web-v2/Dockerfile
nginx 1.13.11-alpine
.github/workflows/auto_merge.yaml
lewagon/wait-on-check-action v1.3.1@e106e5c43e8ca1edea6383a39a01c5ca495fd812
dependabot/fetch-metadata v1.5.1@cd6e996708b8cfe0b639401134a3b9a3177be7b2
.github/workflows/cla.yaml
contributor-assistant/github-action v2.3.0@5bfe123a0731f017d9c29550976bf724fe0870f5
.github/workflows/pr-go.yaml
actions/checkout v3
actions/setup-go v4
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
actions/checkout v3
actions/setup-go v4
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
actions/checkout v3
actions/setup-go v4
actions/checkout v3
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
actions/checkout v3
actions/setup-go v4
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
actions/checkout v3
actions/setup-go v4
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
actions/checkout v3
actions/setup-go v4
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
.github/workflows/pr-python.yaml
actions/checkout v3
actions/setup-python v4
snok/install-poetry v1.3.3@d45b6d76012debf457ab49dffc7fb7b2efe8071d
actions/cache v3
.github/workflows/pr-title-validation.yaml
amannn/action-semantic-pull-request v5.2.0@c3cd5d1ea3580753008872425915e343e351ab54
.github/workflows/pr-ui-web.yaml
actions/checkout v3
actions/setup-node v3
actions/cache v3
actions/checkout v3
actions/setup-node v3
actions/cache v3
actions/checkout v3
actions/setup-node v3
actions/cache v3
arduino/setup-protoc v1
.github/workflows/publish_chart.yaml
actions/checkout v3
lewagon/wait-on-check-action v1.3.1@e106e5c43e8ca1edea6383a39a01c5ca495fd812
Azure/setup-helm v3.5@5119fcb9089d432beecbf79bb2c7915207344b78
google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
.github/workflows/push-image.yaml
actions/checkout v3
actions/checkout v3
lewagon/wait-on-check-action v1.3.1@e106e5c43e8ca1edea6383a39a01c5ca495fd812
actions/setup-go v4
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
docker/setup-buildx-action v2.5.0@4b4e9c3e2d4531116a6f8ba8e71fc6e2cb6e6c8c
docker/login-action v2.1.0@f4ef78c080cd8ba55a85445d5b36e214a81df20a
google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
docker/login-action v2
actions/checkout v3
actions/setup-python v4
snok/install-poetry v1.3.3@d45b6d76012debf457ab49dffc7fb7b2efe8071d
actions/cache v3
docker/setup-buildx-action v2.5.0@4b4e9c3e2d4531116a6f8ba8e71fc6e2cb6e6c8c
docker/login-action v2.1.0@f4ef78c080cd8ba55a85445d5b36e214a81df20a
google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
docker/login-action v2
actions/checkout v3
actions/setup-node v3
actions/cache v3
arduino/setup-protoc v1.1.2@64c0c85d18e984422218383b81c52f8b077404d3
docker/setup-buildx-action v2.5.0@4b4e9c3e2d4531116a6f8ba8e71fc6e2cb6e6c8c
docker/login-action v2.1.0@f4ef78c080cd8ba55a85445d5b36e214a81df20a
google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
docker/login-action v2
actions/checkout v3
benc-uk/workflow-dispatch v1.2.2@798e70c97009500150087d30d9f11c5444830385
slackapi/slack-github-action v1.23.0@007b2c3c751a190b6f0f040e47ed024deaa72844
slackapi/slack-github-action v1.23.0@007b2c3c751a190b6f0f040e47ed024deaa72844
.github/workflows/release.yaml
google-github-actions/release-please-action v3.7.9
go.mod
go 1.20
cloud.google.com/go/bigquery v1.51.2
cloud.google.com/go/kms v1.11.0
cloud.google.com/go/profiler v0.3.1
cloud.google.com/go/pubsub v1.31.0
contrib.go.opencensus.io/exporter/stackdriver v0.8.0
github.com/VividCortex/mysqlerr v1.0.0
github.com/aws/aws-sdk-go-v2/config v1.17.10
github.com/aws/aws-sdk-go-v2/service/kms v1.21.1
github.com/blang/semver v3.5.1+incompatible
github.com/coreos/go-oidc v2.2.1+incompatible
github.com/go-redis/redis v6.15.9+incompatible
github.com/go-sql-driver/mysql v1.6.0
github.com/golang-migrate/migrate/v4 v4.11.0
github.com/golang/mock v1.6.0
github.com/golang/protobuf v1.5.3
github.com/gomodule/redigo v2.0.0+incompatible
github.com/google/go-cmp v0.5.9
github.com/googleapis/gax-go/v2 v2.10.0
github.com/itchyny/gojq v0.12.5
github.com/lib/pq v1.10.9
github.com/mna/redisc v1.3.2
github.com/nicksnyder/go-i18n/v2 v2.2.0
github.com/prometheus/client_golang v1.15.1
github.com/robfig/cron v0.0.0-20171101201047-2315d5715e36@2315d5715e36
github.com/slack-go/slack v0.12.2
github.com/stretchr/testify v1.8.4
github.com/tkuchiki/go-timezone v0.2.2
go.opencensus.io v0.24.0
go.uber.org/zap v1.13.0
golang.org/x/oauth2 v0.8.0
golang.org/x/sync v0.2.0
golang.org/x/text v0.9.0
golang.org/x/time v0.3.0
google.golang.org/api v0.125.0
google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc@e85fd2cbaebc
google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc@e85fd2cbaebc
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc@e85fd2cbaebc
google.golang.org/grpc v1.55.0
google.golang.org/protobuf v1.30.0
gopkg.in/alecthomas/kingpin.v2 v2.2.6
gopkg.in/square/go-jose.v2 v2.6.0
gopkg.in/yaml.v2 v2.4.0
k8s.io/code-generator v0.0.0-20191003035328-700b1226c0bd@700b1226c0bd
hack/delete-e2e-data-mysql/go.mod
go 1.20
github.com/bucketeer-io/bucketeer v0.0.0-00010101000000-000000000000@000000000000
go.uber.org/zap v1.23.0
gopkg.in/alecthomas/kingpin.v2 v2.2.6
manifests/bucketeer/charts/account-apikey-cacher/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/account/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/api-gateway/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/auditlog-persister/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/auditlog/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/auth/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/auto-ops/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/calculator/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/dex/values.yaml
asia-docker.pkg.dev/bucketeer-io/bucketeer/bucketeer-dex v0.2.0-134-g797e90c
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/environment/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/event-counter/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/event-persister-evaluation-events-dwh/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/event-persister-evaluation-events-evaluation-count/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/event-persister-evaluation-events-ops/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/event-persister-goal-events-dwh/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/event-persister-goal-events-ops/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/experiment/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/feature-recorder/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/feature-segment-persister/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/feature/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/metrics-event-persister/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/migration-mysql/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/notification-sender/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/notification/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/ops-event-batch/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/push-sender/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/push/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/user-persister/values.yaml
envoyproxy/envoy-alpine v1.21.1
manifests/bucketeer/charts/web-gateway/values.yaml
envoyproxy/envoy-alpine v1.21.1
ui/web-v2/package.json
@date-io/date-fns 1.3.13
@emotion/react 11.1.5
@emotion/styled 11.1.5
@headlessui/react ^1.5.0
@heroicons/react 1.0.5
@hookform/resolvers 2.6.1
@improbable-eng/grpc-web 0.15.0
@material-ui/core 4.11.1
@material-ui/icons 4.9.1
@material-ui/lab 4.0.0-alpha.56
@material-ui/pickers 3.2.10
@popperjs/core ^2.11.3
@reduxjs/toolkit 1.5.0
@tailwindcss/forms 0.3.4
@types/react-intl 3.0.0
babel-plugin-react-intl 8.2.25
bytes 3.1.1
chart.js 2.9.4
classnames 2.2.6
core-js 3.9.1
date-fns 2.16.1
date-fns-tz 1.2.2
dayjs 1.8.34
deep-equal 2.2.1
document-register-element 1.13.1
formik 2.2.9
google-protobuf 3.14.0
history 4.10.1
js-cookie 2.2.1
jstat 1.9.4
option-t 23.0.2
query-string 7.0.1
react 17.0.2
react-chartjs-2 2.11.1
react-date-range ^1.4.0
react-datepicker 4.1.1
react-datetime-picker 3.3.0
react-dom 17.0.2
react-dropzone 11.2.4
react-hook-form 7.14.1
react-intl 5.20.10
react-popper ^2.2.5
react-redux 7.2.6
react-router-dom 5.2.0
react-select 4.3.1
redux 4.1.0
redux-thunk 2.3.0
shallowequal 1.1.0
timeago.js 4.0.2
tslib 2.1.0
twin.macro 2.5.0
uuid 8.3.1
yup 0.32.9
@babel/core 7.14.8
@babel/preset-env 7.14.8
@babel/preset-react 7.14.5
@babel/preset-typescript 7.14.5
@emotion/babel-preset-css-prop 11.0.0
@formatjs/cli 4.2.33
@nrwl/cli 12.5.2
@nrwl/cypress 12.5.2
@nrwl/eslint-plugin-nx 12.5.2
@nrwl/jest 11.4.0
@nrwl/linter 12.5.2
@nrwl/react 12.5.2
@nrwl/tao 12.5.2
@nrwl/web 12.5.2
@nrwl/workspace 12.5.2
@testing-library/react 11.2.7
@types/jest 26.0.24
@types/node 14.14.33
@types/react 17.0.3
@types/react-dom 17.0.15
@typescript-eslint/eslint-plugin 4.3.0
@typescript-eslint/parser 4.3.0
autoprefixer 9.8.8
babel-jest 26.2.2
cypress 6.6.0
dotenv 8.2.0
eslint 7.10.0
eslint-config-prettier 8.1.0
eslint-plugin-cypress 2.11.2
eslint-plugin-import 2.23.4
eslint-plugin-jsx-a11y 6.4.1
eslint-plugin-react 7.23.1
eslint-plugin-react-hooks 4.2.0
jest 26.2.2
mini-css-extract-plugin 1.3.1
nx 11.4.0
optimize-css-assets-webpack-plugin 5.0.4
postcss 8.4.24
postcss-cli 8.3.1
postcss-import 14.0.2
postcss-loader 4.0.4
prettier 2.3.2
ts-jest 26.4.0
ts-node 9.1.1
ts-protoc-gen 0.15.0
typescript 4.3.4
python/requirements.txt
aiohttp ==3.7.4.post0
apscheduler ==3.7.0
async-timeout ==3.0.1
attrs ==21.4.0
cachetools ==4.2.4
certifi ==2021.10.8
chardet ==4.0.0
charset-normalizer ==2.0.12
cython ==0.29.35
environs ==9.5.0
google-api-core ==1.31.5
google-api-python-client ==2.46.0
google-auth-httplib2 ==0.1.0
google-auth ==1.35.0
google-cloud-core ==1.7.2
google-cloud-logging ==1.15.1
google-cloud ==0.34.0
googleapis-common-protos ==1.56.0
grpc-health-checking ==0.0.1
grpcio-health-checking ==1.27.2
grpcio ==1.45.0
httplib2 ==0.20.4
idna ==3.3
marshmallow ==3.15.0
multidict ==6.0.4
numpy ==1.21.6
packaging ==21.3
pandas ==1.3.5
prometheus-async ==19.2.0
prometheus-client ==0.7.1
protobuf ==3.20.2
pyasn1-modules ==0.2.8
pyasn1 ==0.4.8
pymysql ==1.0.2
pyparsing ==3.0.8
pystan ==2.19.1.1
python-dateutil ==2.8.2
python-dotenv ==0.20.0
pytz ==2022.1
requests ==2.27.1
rsa ==4.8
scipy ==1.7.3
six ==1.16.0
typing-extensions ==4.2.0
tzlocal ==2.1
uritemplate ==4.1.1
urllib3 ==1.26.9
wrapt ==1.14.0
yarl ==1.7.2
python/pyproject.toml
APScheduler 3.7.0
PyMySQL 1.0.2
pandas ^1.2.5
prometheus-client 0.7.1
pystan 2.19.1.1
scipy ^1.5.3
environs ^9.3.4
grpc-health-checking 0.0.1
grpcio-health-checking 1.27.2
google-cloud-logging 1.15.1
prometheus-async 19.2.0
aiohttp 3.7.4.post0
google-cloud ^0.34.0
protobuf ^3.20.1
google-api-python-client ^2.45.0
flake8 ^3.9.2
pycodestyle ^2.7.0
pytest ^6.2.5
pytest-mock ^3.7.0
grpcio-tools ^1.45.0
black ^22.3.0
This feature allows controlling the feature flag dependencies. It can make flags depend on other flags, making them prerequisites to enable a feature.
Currently, all the services are using JST as the timezone. Since people from other regions will want to operate Bucketeer in their timezone, we must make this configuration available to the users.
The calendar filter is opening over the select menu. It should open below it.
This feature will allow the user to switch on/off remotely from a third-party application, like the NewRelic, DataDog, etc.
Make it possible to turn on/off a flag via webhooks. It will make it easier for users who want to integrate actions in their metrics monitoring.
This feature allows the user to progressively roll out a feature flag by scheduling it.
Basically, the user will schedule the rollout from 1 to 100% of a feature flag, and Bucketeer will change the rollout percentage based on the user's configuration.
No response
No response
Format YYYY/MM/DD
.
Currently, the calculator service is written in Python, using Bayesian Algorithm to calculate the experiment probabilities.
Due to the following reasons, we want to rewrite the service in Go and, for Bayesian analysis, use the HttpStan.
Besides the Bayesian analysis, we can rewrite the entire calculator service in Go without any issues.
For the analysis, we can deploy a new service for HttpStan and the Go app to make requests to it.
It will also allow us to have the following features.
Currently, the calculator service calculates the probabilities once at a time. The Parallel sampling will also help us to improve this.
To simplify the implementation, we can implement it as an API in the experiment service, so we won't need to make changes in the helm chart, CI, etc. Also, most APIs we need for this task, the experiment service, have it already, and since it is related to the experiment, having this API in the experiment service makes sense.
This is not an issue. The problem is the variation is being used in the default variation
or the off variation
settings, so it cannot be deleted until the user changes those settings to other variations.
It can be improved by adding a tooltip on the delete icon, letting the user know why he can't delete it.
Note: The default variation has two types. Fixed and Rollout. To make it simple, let's use the same message for both.
Add rule
button, the Save with comment
button should stay disabled until the validation returns trueCompare
, it must check the value field has at least one valueUser segment
, it must check the segment user ID is selectedDate
, it must check the fieldCreate an environment for the people considering using Bucketeer, so they can check the UI and also give us feedback.
add the ability to support timezone
No response
No response
To reduce compute engine and PubSub costs, it would be great to implement the serverless architecture to those services that only need to run when there are experiments or auto operations.
We must remove the duration field from LatencyMetricsEvent after updating all the SDKs in production.
bucketeer/pkg/gateway/api/metrics_event.go
Lines 184 to 217 in 077d1b6
Currently, there is no way to run the project locally, making it hard for the contributors to contribute.
We have two gateways, and we deploy the microservices in Kubernetes via helm.
The api-gateway uses managed Google services such as Pubsub, Memorystore (Redis), CloudSQL (MySQL), and BigQuery. We also use Bigtable, Kafka, and Druid for real-time analysis, but we will replace them with BigQuery in January.
The web-gateway uses managed Google services such as Memorystore (Redis) and CloudSQL (MySQL).
Currently, the error messages returned in response to the Dashboard are in Japanese. We must support it in other languages so the user can use it in English.
As part of #181, first, we need to add the Webhook admin page, so the user can create Webhook URLs to be used as a trigger in the Auto Operations.
main
dispatch
job in push-image workflow fails if commit message has multiple lines.
No response
No response
No response
No response
Currently, when the user configures a rule on the Targeting tab on the console, he needs to type the custom attribute key.
Because the attributes are sent from the SDK to the server, we can automate this by generating a list to display on the console, it will avoid typos and misconfiguration, causing incorrect conditions when evaluating the end-user.
When the user adds a new condition or operation in the Auto Ops tab after clicking on the Submit
button, it reloads the page but doesn't clear the data used in the request. The Submit
button should be disabled.
Because of that, if the user clicks again on the Submit
, it will duplicate the data until the data used in the request is cleared.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.