2022年5月27日
Feature Flags
私たちはHarness Feature Flagsを使用して、システム全体のガバナンスのための主要なコンポーネントを構築し、それらを結び付ける行程を続けています。Feature Flagsのガバナンス ポリシーは大きな前進です。詳しくは以下の通りです。
この度、Harness Policy as Codeを利用したHarness Feature Flagsのガバナンスポリシーを初めて発表します。Harnessでは、リスクを低減し、ソフトウェアデリバリーのベストプラクティスをより簡単かつ安全に導入できるようなソリューションの構築に重点を置いています。
Feature Flagsは、デプロイメントとリリースを切 り離し、開発者にキルスイッチ、ベータテスト、実験、新機能の段階的なロールアウトなどのコントロールの感覚を与えます。しかし、Feature Flagsがあなたのチームを助ける方法のリストで気づいたかもしれませんが、その多くは実運用で起こることであり、実運用で起こることは恐ろしいことです。
そのため、グローバルガバナンスポリシーは、大規模な標準を実施する必要のあるエンジニアリング部門にとって大きな利点となります。グローバルガバナンスポリシーによって、あらゆるリリースにガードレールを設置し、標準が満たされていることを確認できます。また、このプロセスは自動化されており、開発者はビルドとテストフェーズで慣れ親しんだ方法でエラーメッセージを受け取るだけです。
HarnessのFeature Flagsに含まれるグローバルガバナンスポリシーは、他社の製品との大きな差別化要因となっています。Harnessは、フィーチャーフラグソリューションの中で唯一、全機能のリリースに包括的なガバナンスを適用する機能を備えています。このグローバルガバナンスは、Harnessプラットフォーム上のSLDCにも適用され、(簡単な例ですが)例えば同じ命名規則をCI、CD、フィーチャーフラグに適用できます。さらに、一度セットアップすれば、開発者が指一本動かすことなく、自動的に適用されます。その代わり、コンパイラやテスティングスイートからのものと同じようにエラーや警告が届くだけです。
この 機能強化は、初期状態へ到達するまでの時間を短縮し、再現性と拡張性を簡単に実現するだけでなく、速度と制御の間の本質的なトレードオフを解決するもので、今では両方を同時に手に入れることができます。
開発者であれば、ガバナンスという言葉を聞くと、少し尻込みするかもしれません。その響きはとても重く、自分の仕事をより良く、より速く行えうことを阻む、制約の強い企業ポリシーを思い浮かべるかもしれません。同時に、リリースという荒波を乗り越えていくには、あるレベルではそれが避けられないものだと思うでしょう。標準を整える必要があります。
私たちにとって、ガバナンスとはその逆で、チーム全体が結束して安全に作業できるようなガードレールを作って、スピードアップを図ることです。ガバナンスとは、チームが不安なく、そしてリーダーを脅かすことなく、迅速にビルドし、出荷できるようにするシステム全体の秩序を確立することです。
特にフィーチャーフラグについては、次のようなことを知りたいのではないでしょうか。
そこで役立つのが、ガバナンスポリシーです。ガバナンスポリシーは、エンジニアリングチームとリーダーがこれらの質問に答えられるよう、システム内に秩序を作り出し、その周囲にガードレールを設置します。ここで重要なのは、ガードレールです。ガードレールは、あなたのスピードを落とすためにあるのではありません。むしろ、スピードアップのためにあるのです。フラグやリリースを社内のポリシーに照らして手動でチェックする必要がなく、代わりに、自動的にポリシーや承認に照らし合わせて実行されると開発者が知って、自由にコードをコミットできることを想像してみてください。また、管理者にとっては、開発 者が優れたアプリケーションのコーディング以外のことに気を取られることがなくなります。
私たちは、オープンソースのOPA(Open Policy Agent)プロジェクトを採用し、直感的なUIとすぐに使えるポリシーのセットを備えたHarness Policy as Codeに組み込みました。OPAはオープンソースであり、深く検証されています。私たちは、世界クラスのポリシーとガバナンス管理をフィーチャーフラグの領域に初めて導入することに興奮しています。
これをプラットフォーム全体に組み込みました。では、具体的にどのようにフィーチャーフラグに適用するのでしょうか。簡単に言うと、開発者はOPAで独自のRegoスクリプトを書いたり、シンプルなポリシービルダーを使ってルールを作成すれば、それをフィーチャーフラグのプロジェクトに適用できます。これはすべてHPEを通じて管理されます。
HPEとフィーチャーフラグで、どんなポリシーを使いたいですか?フィーチャーフラグシステムの全メタデータがポリシーを定義する ために使えるので、あなたのチームは、何が起こり、いつ、どのように使えるかを完全に制御できます。ここでその一部をご紹介しましょう。
これらのポリシーの使用を開始すると、あらゆるフィーチャーフラグにグローバルなガバナンス標準を即座に適用することができます。すぐに使えるオプションを使っても、独自のRegoスクリプトを書いても、機能リリースパイプラインが実行されるたびに、これらのポリシーが自動的に適用されます。
Harnessをよくご存知の方なら、Harnessパイプラインで作成できるガバナンス標準と(グローバルガバナンスは)どう違うのかと思われるかもしれません。これは、ローカル変数とグローバル変数のように、ローカルとグローバルのガバナンスを適用したものだと考えてく ださい。
あるリリースに特定のポリシーを適用することもできますし、命名規則やある機能があらゆるテスト環境でプロモートされたかどうかの確認など、あらゆるリリースにグローバルスタンダードを適用することもできます。
パイプラインを使用すると、特定のリリースまたはリリースの種類の範囲内で特定の標準を設定できます(簡単な例については、以下を参照してください)。HPEポリシーが異なるのは、特定のリリース基準に加え、あらゆる機能リリースにグローバルガバナンスを適用する点です。つまり、ニーズに合わせて完全にカスタマイズされた2つのレイヤーのガバナンスを作成することができます。
Feature Release pipelineで実施されるローカライズガバナンスポリシーの例。
Harness Feature Flagsを使用すると、あらゆる機能リリースパイプラインにグローバルガバナンスポリシーを適用することができます。
ここで改めて説明すると、ガバナンスポリシーはHarnessのFeature Flagsのみでも機能しますが、Harnessプラットフォーム全体でも機能します。つまり、CI、CD、Feature Flags、その他のHarnessモジュールを一括してガバナンスできるのです。
これにより、直近の1時間にデプロイに失敗した場合は、本番環境でフィーチャーフラグを変更できないといった可能性が生まれ、ソフトウェアのデリバリープロセスをエンドツーエンドで制御することが初めて可能になりました。
HarnessのFeature Flagsを既にご利用の場合、サイドバーに「Policies」という新しいオプションが追加されていることにお気づきでしょう。HPEが提供するグローバルガバナンスポリシーを利用するには、HarnessコンソールのFeature Flagsモジュールに移動してPoliciesをクリックすれば、すぐに独自のポリシーを適用できます。設定後、最初のリリースに対して実行すると、緑色のチェックボックスが表示されて、オールクリアとなるのを見るのは、最高の気分です。
まだHarness Feature Flagsをお使いでない方は、無料トライアルにご登録いただくか、デモをリクエストして詳細をご確認ください。
私たちは、Harness Feature Flagsで、システム全体にわたるガバナンスのための主要なコンポーネントを構築し、それらを結びつけるという旅をしているところです。Feature Flagsのガバナンスポリシーは大きな前進で、フィーチャーフラグシステムを真に制御し、100%実施できていることを安心して確認できる、初めての試みです。Harnessとそのガバナンス機能については、プラットフォームガバナンスのページで詳しくご説明しています。
まだHarnessの利用登録をしていないけど、これから始めたいという方は、永久無料で簡単に登録することができます。それでは、Happy developing!
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。