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

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

関連記事

常時接続フリートにおけるOTAとテレメトリの管理

私のブログ記事を過去2年間読んでくださっている方は、自動車業界がおそらく今日の最も革新的な業界であることをご存知でしょう。実際、世界でも極めて価値の高い企業が、電気自動車(EV)、自動運転(AD)、人工知能(AI)に携わっています。他の革新と同様、この革新にも一連の課題が伴います。 私は、理解や習得が最も難しいテクノロジーが、必ずしも最も複雑に見えるテクノロジーとは限らないことに気づきました。OTA(Over-The-Air)更新とフリートのテレメトリの管理は、今日の自動車業界において最も有望なテクノロジーですが、複雑に見えるテクノロジーでもあります。 OTAの隠れた力 OTA更新は、車両の価値を根本的に覆す可能性を持っています。リモートでのソフトウェアとファームウェアの […]

Ubuntu ProによりリアルタイムUbuntuをAmazon EKS Anywhereのお客様が利用可能に

Canonicalは、今年前半にバルセロナで開催されたMobile World Congress(MWC)2024で、リアルタイムUbuntuがAmazon Elastic Kubernetes Services Anywhere(EKS Anywhere)で利用可能になったことを発表しました。超低レイテンシのデータ処理をサポートする信頼性の高いリアルタイムUbuntuにより、通信事業者はAmazon EKS Anywhere上で自社のOpen Radio Access Network(RAN)ソフトウェアワークロードを実行できます。 この開発は、Amazon EKS AnywhereをOpen RANワークロード用に理想的なプラットフォームにするための、パートナー企業間 […]

Firefighting Supportを発表

新しいサービスでCanonicalの専門家が高度なクラウドサポートを提供 Canonicalのマネージドソリューションチームは、自社でインフラストラクチャの管理を行い、トラブルシューティングの必要があるときのみ専門家の対応を求める組織のために、新しいサービス「Firefighting Support」を発表しました。 Firefighting Supportでは、フルマネージドサービスを止めた、または厳しいセキュリティ規制によってサードパーティーに環境へのアクセスを許可できないお客様に対して、マネージドサービスレベルのサポートを提供します。このサービスはノードごとの年間料金で提供され、次のような内容です。 自己管理インフラストラクチャへの移行に理想的 現在の市場では、マネ […]