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

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のプライバシーに関するお知らせ個人情報保護ポリシー

関連記事

CanonicalがUbuntu 14.04 LTS以降の長期サポートを12年間に延長

Canonicalは本日、Ubuntu ProアドオンとしてLegacy Supportの一般提供を発表しました。これによりUbuntu LTSリリースのセキュリティ更新とサポート期間が12年間に延長されます。アドオンの対象はUbuntu 14.04 LTS以降です。 長期サポートのUbuntuリリースには、mainリポジトリに対する5年間のセキュリティメンテナンスが標準で付属します。Ubuntu Proは、mainリポジトリとuniverseリポジトリの両方に10年間のメンテナンスを提供し、企業にもエンドユーザーにも安全なオープンソースソフトウェアを幅広く提供します。このサブスクリプションは電話およびチケットによるサポートも含みます。Ubuntu Proの有償契約者のお […]

新しいマスコットの「戴冠式」:Noble Numbat(高貴なるナンバット)

人気投票、神の意志、剣を授ける湖の乙女など何で選ばれたにしても、王座につくのはたいてい名高い者や高貴な生まれの者です。20周年の前日にUbuntu 24.04 LTSのマスコットとしてNoble Numbatを発表できることをうれしく思います。 貧しい生まれ オーストラリアに生息する小さくて地味な有袋類のナンバット(フクロアリクイ)に、高貴というイメージはないかもしれません。しかし、見た目に騙されてはなりません。絶滅が危惧されるこの不思議な動物は、実はポケットサイズのアリクイ。自身の体長の3分の1もある舌でアリだけ食べて生活しています。背中には王様のローブのような黒と白の縞模様があり、西オーストラリア州の動物の紋章に選ばれています。ナンバットは、貧しい生まれの者が世界に足 […]

IoTデバイス管理の簡素化:Ubuntu CoreデバイスをLandscapeに追加する方法

Landscapeは、ほぼCanonicalの設立当初から製品リストに存在します。管理者はLandscapeにより、単一の集中型ポータルからデスクトップとサーバーのインスタンスを管理できます。Landscape Serverの最新リリース(23.10)では、Landscapeでsnapパッケージを管理する機能が導入されました。また、CanonicalのSnap Storeで入手できるLandscape Client snapパッケージのベータ版では、Ubuntu CoreベースのデバイスをLandscape環境に追加できます。 Landscapeは、組織のUbuntu環境全体にわたるリモートのフリート管理サービスを提供し、ソフトウェアのバージョンと設定の管理、セキュリティ […]


© 2024 Canonical Ltd. Ubuntu および Canonical は、Canonical Ltd の登録商標です。