Snowflake の動作変更(BC)についてまとめてみた
はじめに
Snowflake は SaaS として定期的に新機能の追加や既存の機能のアップデートが行われます。この際、既存の機能に影響を与える可能性のある変更が行われることもあります。これらの変更は「Behavior Change(動作変更)」と呼ばれ、バンドルとして緩やかにリリースされます。
執筆時点(2025年6月26日)で、直近大きな変更として 9.17 リリースで導入予定の 2025_04 バンドルでは、かねてよりアナウンスされていた Snowsight へログインするユーザーへの ログイン時の MFA 強制が予定されています。
※あくまで執筆時点のドキュメント記載の内容に基づいています。
本記事では、Behavior Change(動作変更)についてまとめてみます。
Behavior Change Release (BCR)
Behavior Change(動作変更)の概要は以下の通りです。
- Behavior Change(動作変更)の定義
- Snowflake では既存の機能に影響を与える可能性のある変更を「Behavior Change(動作変更)」と定義
- リリースの頻度と仕組み
- 動作変更は、毎月、定期的な週次リリースに含まれるバンドルとして導入されます。通常、前回の動作変更リリースから4回目または5回目のリリースが選ばれて導入されるようです
- 例:9.7 Release はリリースノート上に「with behavior changes」とあるように動作変更を含むリリースとなります
- 動作変更は、毎月、定期的な週次リリースに含まれるバンドルとして導入されます。通常、前回の動作変更リリースから4回目または5回目のリリースが選ばれて導入されるようです
- バンドルの命名規則
- 動作変更は「バンドル」として提供され、YYYY_NN という命名規則が使用されます
- YYYY は年、NN はその年におけるリリースの序数を表します
- 例:9.7 Release では 2025_02 バンドルが導入されています。これは2025年に導入された2番目の動作変更バンドルを意味します
- 動作変更は「バンドル」として提供され、YYYY_NN という命名規則が使用されます
- バンドルの構成
- 各動作変更バンドルには、通常、複数の動作変更が含まれます
- 動作変更バンドル内の個々の変更を個別に有効化/無効化することはできません
- 変更の有効化/無効化は、その変更が含まれるバンドル全体で制御できます
- 各変更にはインパクトスコアが設定されており、潜在的な技術的影響度がランク付けされています。実際の影響度は Snowflake の利用方法によって異なりますが、テストの優先順位付けの参考に、このスコアを利用できます。
- 例:2025_04 バンドルで予定されている PERSON ユーザーの MFA強制は「High」に設定されています
BCR バンドルのライフサイクル
Snowflake の動作変更リリースは、すべての Snowflake アカウントで変更が有効化されるまでに最低8週間制御することができます。動作変更バンドルのライフサイクルは、以下の2つの期間で構成され、最終的に一般提供されます。
- テスト期間
- 対象のバンドルは「Disabled by Default(デフォルトで無効)」として導入されます
- この期間中であれば、Snowflake アカウントでバンドルを手動で有効化することができます
- アカウントが分離されている場合は、本番アカウントに影響を与えずに変更をテストできます
- オプトアウト期間
- この期間の開始時に、テスト期間中であった対象のバンドルは「Disabled by Default」から「Enabled by Default(デフォルトで有効)」に移行します
- この期間中は、アカウントでバンドルを無効化できます
- これにより、本番アカウントでの変更を延期し、変更の影響を軽減するために必要な調整を行うことができます
- また、テスト期間中にバンドルを明示的に有効または無効に設定した場合、この設定が引き継がれます。(例:テスト期間中にバンドルを無効にした場合、オプトアウト期間の開始時に有効化されることはない)
- 一般提供
- オプトアウト期間が終了すると、すべての Snowflake アカウントでバンドル内の動作変更が有効化されます
- この時点以降、バンドルは「Generally Enabled(一般提供)」とみなされ、バンドルを明示的に有効化または無効化することはできなくなります
- 複数のバンドルの重複
- 新しい動作変更バンドルは通常、毎月リリースされ、完了までに少なくとも8週間かかります。そのため、通常、複数の動作変更バンドルがアカウントで利用可能で、それぞれが異なるリリースプロセスの期間にある可能性があります
- 例:あるバンドルはオプトアウト期間だが、次のバンドルはテスト期間
※図はMultiple behavior change release processes overlap|Snowflake DOCUMENTATIONより引用
現在のバンドルの状態は以下より確認できます。
BCR変更のテストと管理
上述の通り、テスト期間やオプトアウト期間中であれば、コマンドで動作変更バンドルのステータスを確認したり、有効化/無効化できます。
※各コマンドは2025年6月26日に実行
- すべてのバンドルの状態を確認
- SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES
- 現在アカウントで利用可能な動作変更リリースバンドル、各バンドルのデフォルト状態、および現在のアカウントにおけるバンドルの実際の状態を確認できます
>SELECT SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES();
+---------------------------------------------------------------------------------------------------------------+
| SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES() |
|---------------------------------------------------------------------------------------------------------------|
| [{"name":"2025_02","isDefault":true,"isEnabled":true},{"name":"2025_03","isDefault":false,"isEnabled":false}] |
+---------------------------------------------------------------------------------------------------------------+
- 特定のバンドルの状態を確認
- SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS
- 現在のアカウントで、特定の動作変更バンドルが有効になっているかどうかを確認できます
>SELECT SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2025_03');
+-------------------------------------------------+
| SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2025_03') |
|-------------------------------------------------|
| DISABLED |
+-------------------------------------------------+
- バンドルの有効化
- SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE
- 現在のアカウントで特定の動作変更バンドルを有効できます
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('<バンドル>');
- バンドルの無効化
- SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE
- 現在のアカウントで特定の動作変更バンドルを無効化できます
SELECT SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('<バンドル>');
さいごに
簡単ではありますが、Snowflake の Behavior Change についてまとめてみました。直近で影響の大きなアップデートが予定されているので、必要に応じてテストいただければと思います。その際、この記事の内容が何かの参考になれば幸いです。