Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4

Arthur
December 13, 2024

Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4

Arthur

December 13, 2024
Tweet

More Decks by Arthur

Other Decks in Programming

Transcript

  1. コード例(Java) 16 // OpenFeature Clientの初期化 OpenFeatureAPI api = OpenFeatureAPI.getInstance(); api.setProvider(new

    YourFavoriteProvider()); Client client = api.getClient("my-app"); // フラグの評価 Boolean boolValue = client.getBooleanValue("feature1", false);
  2. コード例(Java) 17 // OpenFeature Clientの初期化 OpenFeatureAPI api = OpenFeatureAPI.getInstance(); api.setProvider(new

    YourFavoriteProvider()); api.setProvider(new YetAnotherFavoriteProvider()); Client client = api.getClient("my-app"); // フラグの評価 Boolean boolValue = client.getBooleanValue("feature1", false);
  3. 様々なProvider(Go SDKの場合) https://github.com/open-feature/go-sdk-contrib • 環境変数 • flagd • ConfigCat など、self-hosted

    / SaaS問わず、様々なフィーチャフラグ バックエンド向けのものが、OpenFeatureのリポジトリで 用意されている 20
  4. デモ $ scala-cli package --power -o server server.scala $ ./server

    30 Scala Native環境のhttp4sサーバで openfeature-scalaを使うデモコー ドを用意しました https://gist.github.com/Arthur1/ea142 d3cffbfe2f65f0d34340fa0dbc2
  5. サーバ起動・Client作成部分 31 for provider <- MemoryProvider[IO]( Map("feature1" -> FlagValue.BooleanValue(true)) )

    given FeatureClient[IO] = FeatureClientImpl[IO](provider) server = EmberServerBuilder.default[IO] .withHttpApp(RootRoutes.routes.orNotFound) .build _ <- server.useForever.as(ExitCode.Success) yield ()
  6. ハンドラ・フラグ評価部分 32 def routes(using featureClient: FeatureClient[IO]) = HttpRoutes.of[IO]: case Get

    -> Root => featureClient.getBooleanValue("feature1", false) .flatMap { case true => Ok("Hello, world!") case false => Ok(“Hello!”) }