実験的な機能:段階的リリース

by cmoullec on 27 August 2020

「実戦で変更されない計画はない。」これはプロイセンの陸軍元帥ヘルムート・フォン・モルトケが残したとされる有名な言葉です。この言葉はソフトウェア開発にも当てはまります。「実用で変更されないコードはない」

ミッションクリティカルな環境で運用中のアプリケーションやサービスの安定性を最大限に確保するには、段階的にソフトウェアを展開し、更新を制御することが必須です。これにより開発者はツールの新しいバージョンの普及状況を監視および観察できるのに加え、運用チームはコンプライアンスとセキュリティの目標を満たすことができます。最近まで、Snapの自動更新のタイミングは主にクライアント側の更新スケジュールにより決定されてきました。このたび、Snap開発者が新しいリビジョンの展開を微調整するための新しい実験的機能が登場しました。それが段階的リリースです。

分割による成功:段階的なリリース実装

段階的リリースの根本的なコンセプトは、特定のSnapのユーザーに少しずつ更新を配布することです。開発者は、そのバージョンが期待したように動作することを確認してから、徐々に更新を配布する人を増やすことができます。これは特に、多数のインストールベースを持つSnapのリリースを事前にテストするとき非常に有効です。

これは現在のところ実験的な機能で、一部の機能は変更される可能性があります。段階的リリースを使用するには、関連する環境変数が有効な状態でSnapcraftを実行する必要があります。

SNAPCRAFT_EXPERIMENTAL_PROGRESSIVE_RELEASES=y snapcraft ...

オプションが有効になったら、Snapのリビジョンをリリースできます。

snapcraft release <snap-name> <revision> <channel,channel,...> --progressive <percentage>

例を示します。

snapcraft release candycane 13 --stable --progressive 30

このコマンドは、「candycane」Snapのリビジョン5をデフォルト(最新)トラックの安定したチャネルに、30%の展開に設定してリリースします。新しいリリースの対象となるデバイスは、デバイスIDのハッシュなどに基づき、疑似ランダムに選択されます。

段階的リリースの背景となる概念や情報のいくつかは、最初は少しわかりにくいかもしれません。具体的な例を見てみましょう。

$ snapcraft status candycane

Track     Arch    Channel    Version    Revision    Progress
latest    all     stable     0.6        8           73 → 70%
                            0.7        13         21 → 30%
                candidate  ↑          ↑          -
                  beta       -          -           -
                  edge       -          -           -

このデータの意味

「安定した」チャネルの段階的リリースは、ストアに報告するクライアントシステムの30%を目標として設定されます。「安定した」チャネルに表示される2つ目の数字は21で、リビジョン13をすでに提供されているクライアントシステムの実際の割合を示しています。この2つ目の値は、まだ進行中の開発作業によって決まりますが、今すぐこの実験的機能を使うとすれば次のように表示されます。

$ snapcraft status candycane

Track     Arch    Channel    Version    Revision    Progress
latest    all     stable     0.6        8           70%
                            0.7        13          30%
                candidate  ↑          ↑          -
                  beta       -          -           -
                  edge       -          -           -

この値は現在、段階的リビジョンに更新することが(開発者の)目標であるクライアントシステムの割合を示しています。たとえば、段階的リリースを25%に設定すると、クライアントの約4台のうち1台が、次に更新を要求したときにアップデートを受けることになります。標準的な更新サイクルは6時間なので、設定された目標である25%に達するには6時間またはそれ以上が必要です。

リリースの中断とリビジョンのバグ修正

段階的リリースが非常に有用である別のシナリオを紹介しましょう。少数のクライアントシステムにリビジョンを提供することで、開発者は問題がある、またはバグ修正が必要な可能性のあるリリースもより的確にコントロールできます。

たとえば、リビジョン13(r13)をチャネルユーザーの20%にリリースした後で、ユーザーからのフィードバックまたは他の方法で、問題があることが見つかったとします。この場合、そのリビジョンの以後の展開を停止し、問題点を修正してから、新しいリビジョン(r14)をチャネルユーザーの20%にリリースします。この場合には、リビジョンr13を受け取った20%のクライアントシステムは、r14も最初に受け取ることになります。これにより開発者は、バグ修正が有効であることを検証してから、対象ベースの100%に達するまで段階的にロールアウトを続けることができます。

まとめ

段階的リリースは、ソフトウェアのバージョンを制御された段階的な方法でロールアウトする便利で柔軟な方法です。これによって開発者は、特に高リスクの環境において、新しいリリースの利用によって問題が生じることがないかどうか、慎重に監視できます。このブログでプレビューした機能は、まもなくSnapcraft 4.0でロールアウトされる予定です。段階的リリースに関する質問やご意見(または他の話題でも)は、当社フォーラムでお聞かせください。

写真提供:Andrew RuizUnsplashより

ニュースレターのサインアップ

Ubuntuニュースレターの配信登録

お客様が購読登録を行われる場合、以下の条件に同意されたことになります。Canonicalのプライバシーに関するお知らせ個人情報保護ポリシー

関連記事

ITチームの70%がセキュリティパッチの適用に6時間以上– IDCの最新調査

CanonicalとIDC(International Data Corporation)社による最新の調査結果:企業はCVE(共通脆弱性識別子)パッチ適用の指令に従った修正の適用に苦労し、オープンソースサプライチェーンにおいて他にも重要な問題に直面 Ubuntuを提供するCanonicalは本日、ICDとの協力およびGoogle Cloudとの共同出資による調査レポートで、セキュリティパッチと規制適合の負担によって組織が直面する課題や圧力について新しい分析情報を発表しました。このレポート「The state of software supply chains: Security challenges, opportunities and the path to resi […]

脆弱性を見つける方法

脆弱性の評価を行う方法 情報セキュリティの世界は専門用語だらけです。脆弱性関連の用語を見たことがある方ならご存じでしょう。さらに厄介なのは、複数の用語が同じ意味に使用されたり、コンピューター以外の分野で使用される用語が混じっていたりすることです。これは、脆弱性の評価について学びたいと考えている人にとって混乱の元です。ですからこのブログ記事では、Ubuntu環境の脆弱性評価について掘り下げる前に、用語の意味を解説します。 脆弱性とは 脆弱性とは、攻撃者による悪用やユーザーのミスによって損害を引き起こす可能性のあるすべての欠陥です。リスク管理において脆弱性は、脅威の可能性を高める、または攻撃が成功したときの損失を増やす、あるいはその両方によって、リスクを増大させます。 サイバ […]

Canonical、Ubuntu 25.04 Plucky Puffin

Ubuntuの最新中間リリースでSpringなどの人気フレームワークに対応する「devpack」を導入。幅広いハードウェアでパフォーマンスを強化。 Canonicalは本日、Ubuntu 25.04(コードネーム「Plucky Puffin」)をリリースしました。ubuntu.com/downloadからダウンロードとインストールが可能です。 Ubuntu 25.04は最新のGNOME 48を採用し、トリプルバッファリングに対応するほか、インストールと起動を改善しました。Springに対応した「devpack」により、Ubuntuで利用可能なツールチェーンが充実。Canonicalのパートナー各社によるシリコン対応により、Intel GPUでのAI処理速度が向上し、AMD […]