ホームページ >Java >&#&チュートリアル >Togglz による API 呼び出しと UI を使用した Spring Boot アプリケーションへの機能フラグ管理の実装

Togglz による API 呼び出しと UI を使用した Spring Boot アプリケーションへの機能フラグ管理の実装

DDD
DDDオリジナル
2024-12-30 19:53:12833ブラウズ

Implementing Feature Flag Management in Your Spring Boot Application Using API Calls and UI with Togglz

現代のソフトウェア開発では、新しいコードをデプロイせずにライブ アプリケーションの機能を制御できることが重要です。機能フラグ管理と呼ばれるこの機能により、チームは機能をリアルタイムでオンまたはオフにできるため、継続的デリバリー、A/B テスト、カナリア リリースが可能になります。また、ユーザーへの新機能の公開を制御することで、新しい展開に関連するリスクを軽減する上でも重要な役割を果たします。

この記事では、Togglz を使用して Spring Boot アプリケーションに機能フラグ管理を実装するプロセスについて説明します。 Togglz を構成し、機能フラグを定義し、アプリケーション内での動作を制御する方法を見ていきます。

1. Spring Boot アプリケーションでの Togglz のセットアップ

Togglz を開始するには、必要な依存関係を Spring Boot プロジェクトに追加する必要があります。 build.gradle または pom.xml ファイルを開き、次の依存関係を追加します:

implementation 'org.togglz:togglz-spring-boot-starter:3.1.2'
implementation 'org.togglz:togglz-console:3.3.3'

これらの依存関係には、Togglz のコア機能と、機能フラグを管理するためのオプションの Web ベースのコンソールが含まれます。

2. Togglz

の構成

次に、Spring Boot アプリケーションで Togglz を構成する必要があります。これには、Togglz が機能フラグを管理するために使用する FeatureManager Bean のセットアップが含まれます。

その方法は次のとおりです:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.togglz.core.manager.FeatureManager;
import org.togglz.core.manager.FeatureManagerBuilder;
import org.togglz.core.repository.jdbc.JdbcStateRepository;
import org.togglz.core.user.NoOpUserProvider;

import javax.sql.DataSource;

@Configuration
public class TogglzConfiguration {

    private final DataSource dataSource;

    @Autowired
    public TogglzConfiguration(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Bean
    public FeatureManager featureManager() {
        return new FeatureManagerBuilder()
                .featureEnum(ProductCheckFeature.class)
                .stateRepository(new JdbcStateRepository(dataSource))
                .userProvider(new NoOpUserProvider())
                .build();
    }
}

説明:

  • DataSource: DataSource は、JdbcStateRepository によって使用されるために挿入されます。これにより、Togglz は機能フラグの状態をデータベースに保持できるようになります。
  • FeatureManager:FeatureManager は、FeatureManagerBuilder を使用して構築されます。機能を定義する列挙型 (ProductCheckFeature.class) を指定し、機能の状態を保存するために JdbcStateRepository を使用します。この例ではユーザーを機能に関連付けていないため、NoOpUserProvider を使用します。

3.列挙型を使用した機能フラグの定義

Togglz は列挙型を使用して機能フラグを定義します。列挙型の各定数は、オンまたはオフに切り替えることができる機能を表します。以下に例を示します:

import org.togglz.core.Feature;
import org.togglz.core.annotation.Label;

public enum ProductCheckFeature implements Feature {

    @Label("product-check")
    PRODUCT_CHECK,

}

説明:

Label: @Label アノテーションは、人間が読める形式の機能名を提供します。この名前を使用すると、Togglz コンソールに表示されます。

4.アプリケーションでの機能フラグの使用

機能フラグが定義され、設定が完了したら、アプリケーションでそれらの使用を開始できます。以下は、特定のコードを実行する前に機能がアクティブかどうかを確認する方法の例です:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.togglz.core.manager.FeatureManager;
import reactor.core.publisher.Mono;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/api/products")
public class ProductController {

    private final FeatureManager featureManager;
    private final ProductService productService;

    public ProductController(FeatureManager featureManager, ProductService productService) {
        this.featureManager = featureManager;
        this.productService = productService;
    }

    @GetMapping("/check")
    public Mono<ResponseEntity<?>> checkProduct(@RequestParam String isbn, HttpServletRequest httpServletRequest) {
        if (featureManager.isActive(ProductCheckFeature.PRODUCT_CHECK)) {
            return productService
                    .productCheck(isbn, JwtUtils.getUserJwt(httpServletRequest), Boolean.FALSE)
                    .flatMap(response -> Mono.just(ResponseEntity.ok(response)));
        } 
        return Mono.just(ResponseEntity.status(HttpStatus.NOT_IMPLEMENTED).body("Feature is disabled"));
    }
}

説明:

  • FeatureManager:FeatureManager はコントローラーに挿入され、PRODUCT_CHECK 機能がアクティブかどうかを確認するために使用されます。
  • 条件付きロジック: 機能がアクティブな場合、製品チェック操作が実行されます。それ以外の場合は、「機能は無効です」というメッセージが返されます。

5. Togglz コンソールによる機能フラグの管理

Togglz コンソールは、Web インターフェイスを通じて機能フラグを管理できる強力なツールです。 Togglz コンソールを有効にするには、次のプロパティを application.properties または application.yml ファイルに追加するだけです:

implementation 'org.togglz:togglz-spring-boot-starter:3.1.2'
implementation 'org.togglz:togglz-console:3.3.3'

Web ブラウザで /togglz-console に移動すると、コンソールにアクセスできます。コンソールには、機能のオン/オフ、戦略の変更、現在の状態の表示のための使いやすいインターフェイスが用意されています。

結論

Spring Boot アプリケーションに Togglz を使用して機能フラグ管理を実装することは、機能に対する強力な制御を提供する簡単なプロセスです。この記事で説明する手順に従うことで、機能フラグを簡単に構成、定義、管理できるため、自信と柔軟性を持って新機能をリリースできます。

新機能を段階的にロールアウトする場合でも、A/B テストを実施する場合でも、単に展開リスクを最小限に抑えたい場合でも、Togglz は Spring Boot アプリケーションにシームレスに統合する堅牢なソリューションを提供します。

コーディングを楽しんでください! ?

以上がTogglz による API 呼び出しと UI を使用した Spring Boot アプリケーションへの機能フラグ管理の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。