対象400件を90日運用しました。直さなければ、ずれている件数は平均88.0件まで積もります。
1日ごとに直せば平均1.9件です。ただし直す総件数そのものは、どの間隔でもほぼ同じでした。
変わるのは1回あたりの量と、ずれている時間です。作業の総量は同じでした。
ArgoCDは、状態を突き合わせ続けます。公式はArgoCDはKubernetesの制御役として実装されており、動いている応用を継続的に見張り、いまの生きた状態を、記録に指定された望ましい状態と比べると説明しています。
比べる間隔で何が変わるのかを数えました。対象400件を90日運用します。
1日に平均1.2件が手で触られるとしました。直すと、その時点で0件に戻ります。
管理する対象 400件・90日ぶん。1日に平均 1.2件が手で触られる 宣言した状態に戻す作業を、決めた間隔で行う 直す間隔 ずれている件数(平均) 最大 直した回数 1回あたり直す件数 直さない 88.0件 206件 0.0回 0.0件 1日ごと 1.9件 8件 90.0回 1.9件 7日ごと 7.7件 25件 12.0回 13.5件 30日ごと 30.0件 75件 3.0回 58.2件
直さなければ88.0件まで積もります。最大では206件でした。
1日ごとなら1.9件です。46分の1になります。
右の2列を掛けてみてください。1日ごとは1.9件×90回で171件、30日ごとは58.2件×3回で175件です。
ほぼ同じです。触られた件数がそのまま直す件数になるので、間隔では変わりません。
変わるのは1回あたりの量です。1.9件と58.2件では、確認する手間も、間違える余地も違います。
だから短くする理由は手間の削減ではありません。ずれている時間を短くすることと、1回を小さく保つことです。
間隔を短くすると、ずれている量だけが下がる。
Argo CD is implemented as a Kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state (as specified in the Git repo).原文Argo CD 公式ドキュメント「Argo CD - Declarative GitOps CD for Kubernetes」 この内容の有効期限2027-02-18
比べる相手が要ります。記録がなければ、ずれているかどうかも判定できません。
ArgoCDが前提とするのは、状態が記録に書かれていることです。公式は応用の定義、設定、環境は、宣言として書かれ、版が管理されているべきであると述べています。
前の計測の「ずれている件数」は、この記録があって初めて数えられます。
2番目と4番目が抜け穴になります。400件を管理していても、記録の外に50件あれば、その50件は数字に出ません。
だから最初にやるのは、管理下にある対象の数を確かめることです。ずれの件数より前の話になります。
公式は機能として設定のずれの自動的な検出と可視化を挙げています。見つけることと、直すことは別の設定です。
見つけるだけにすると、前の計測の直さない行に近づきます。平均88.0件のずれを、人が見て判断することになります。
Application definitions, configurations, and environments should be declarative and version controlled.原文Argo CD 公式ドキュメント「Argo CD - Declarative GitOps CD for Kubernetes」 この内容の有効期限2027-02-18
記録を書き換えれば全台が新しい状態に向かいます。分けて進める設定は別に要ります。
ArgoCDは配る道具でもあります。公式はArgoCDは、Kubernetesのための、宣言による、記録を起点とした継続的な配布の道具であると定めています。
記録を書き換えると、実際の状態がそれに向かって動きます。速く動くことは、必ずしも良いことではありません。
新しい版に不具合があった場合を数えました。気づくまでの時間はどのやり方でも同じとしています。
台数 20台・1秒あたり 400件の要求。1台の入れ替えに 30秒 新しい版に当たった要求の 8%が失敗する。気づいて止めるまで 90秒かかる やり方 組の数 全部終わるまで 失敗した要求 最初の1組で失敗した要求 一斉に入れ替える 1組 30秒 2,880件 960件 4台ずつ入れ替える 5組 150秒 1,152件 192件 1台ずつ入れ替える 20組 600秒 288件 48件
一斉なら2880件が失敗します。1台ずつなら288件で、10分の1です。
その代わり、全部終わるまでが30秒から600秒に延びます。20倍です。
右端の列が判断の材料になります。最初の1組だけで失敗した件数です。
4台ずつなら192件、1台ずつなら48件です。この数を許せる範囲に収めるのが、組を分ける目的になります。
気づくまでの90秒を縮めれば、どの行も減ります。段階的な切り替えでの検出の話はカナリアリリースの記事で扱いました。
手で触られる件数、気づくまでの時間、失敗する割合はいずれも置いた値です。触られ方が偏っていれば、直す間隔ごとのずれも変わります。置き換えの計算も、新しい版になった台数の割合に比例して失敗が起きるという単純な形にしました。ここで見せているのは、直す間隔を短くしても総件数は変わらないこと、分けて入れ替えると届く失敗が減ることの2つです。
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.原文Argo CD 公式ドキュメント「Argo CD - Declarative GitOps CD for Kubernetes」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る