OpenFeature は、特徴旗標(feature flagging)の統一的な管理と柔軟な運用を可能にするオープンソースプロジェクトであり、CNCF(Cloud Native Computing Foundation)のエコシステムに位置づけられています。本記事では、Dynatrace が OpenFeature を採用し、システムの信頼性向上に向けた取り組みと、その過程で直面した技術的課題について詳しく解説します。特に、旗標管理の課題解決、技術的実裝、および実際の運用における成果と課題を焦點にします。
舊システムでは、GitOps 風の旗標管理が行われており、Git リポジトリに保存されていた。しかし、このアプローチでは、多言語サポートが不足し、特定ユーザー向けの細かい條件設定や実験的なリリースが困難でした。また、旗標の可観測性が欠如しており、保守性が低下していました。
OpenFeature は、これらの課題を解決するために設計されたフレームワークです。多言語サポート、リアルタイムでの旗標変更、高精度な目標設定、実験機能の統合、そして可観測性の強化が特徴です。また、CNCF のエコシステムに位置づけられることで、クラウドネイティブな環境での信頼性向上に貢獻しています。
OpenFeature は、旗標評価のための API と、旗標ソース(Provider)を抽象化したアーキテクチャを採用しています。この設計により、Java、React など多言語での利用が可能となり、旗標の運用が一貫性を持ちます。また、flagd D という旗標評価エンジンが、リアルタイムでの変更や、地理、ユーザー屬性などに基づく目標設定をサポートしています。
性能面では、後端での旗標評価は 1 ミリ秒未満、フロントエンドでは 20 ミリ秒程度と、高スループットでの運用が可能です。また、旗標の管理は、自社の UI とデータベースを組み合わせることで、GitOps 風の管理を迴避し、簡易な操作が可能となっています。
Dynatrace では、OpenFeature の標準を採用しつつ、自社の UI とデータベースを統合しました。これにより、旗標の設定は UI で行い、flagd D が各ワークロードに旗標を配布する仕組みを構築しました。また、gRPC 協議を用いて旗標の同期を行い、JSON ルールや偽亂數分配をサポートしています。
導入過程で、いくつかの課題が生じました。例えば、旗標に極めて大きな數値(ナノ秒やバイト)が設定され、Java での処理でエラーが発生するケースがありました。また、UI のレンダリングに旗標評価が依存しており、評価の遅延がページのロードに影響を與える問題も発生しました。
これらの課題に対して、以下の対応を行いました。
OpenFeature の導入により、Dynatrace 內部では、旗標管理の信頼性が大幅に向上しました。80 個のチームが利用しており、旗標數は千に近づき、高頻度での評価が可能となっています。また、可観測性の向上により、旗標の退役や問題の追跡が容易になり、エンジニアの運用負擔が軽減されました。
今後は、さらに高度な目標設定や、旗標の実験機能の拡張に注力していく予定です。また、OpenFeature のエコシステムの拡大により、他の企業でも同様の信頼性向上が期待されます。
OpenFeature は、特徴旗標の管理において、信頼性と柔軟性を両立させるための強力なツールです。Dynatrace の導入事例からも、その実用性と拡張性が確認できます。ただし、導入時には、極端な値の検証やエラーハンドリングの強化が不可欠です。今後、OpenFeature が CNCF のエコシステムでさらに発展し、多くの企業が信頼して利用できるようになることを期待しています。