ふくしま

ソフトウェアエンジニア

FlaggerやArgo Rolloutsとは何をするものなのか。Progressive Deliveryとは何か。

背景

最近、「Progressive Delivery」 という言葉を巷で耳にすることが多くなった。 Kubernetes上でProgressive Deliveryを実現するOperatorとしてFlaggerがある。 それらが何かを掴みつつあるので、ここにまとめておく。

Progressive Deliveryとツールについて

Progressive Deliveryとは、順繰りにステップを踏んでリリースをするのを自動で行う方式だと理解している(3%->10%->20%->100%みたいな)。 リリースが自動で行われるのが肝要なのだろう。 自動でメトリクスを解析してOKなら次のステップに、NGならロールバックというふうに。

FlaggerやArgo Rolloutsというのは、そのメトリクス解析の条件式(PromeQLとか)やステップの記述を設定ファイルに書いておくだけで、Progressive Deliveryを実現してくれるもの。という理解でいる。

自動リリース以外の利点

Canaryリリースをするのであれば、Serviceのselectorを使ってPodへの振り分けによる分散もできる。 しかし、これをするとマニフェストを読んだだけだと、Canaryと本番の構成が分かりにくい。

この設定を宣言的に書けるというのも利点である。

サービスメッシュについて

サービスメッシュが何かあんまり分かっていない。 Progressive Deliveryの文脈から見たら、Podへの通信を設定通りに分散してくれるやつというイメージしかない。 何かを掴んだらまたブログにまとめたい。

なぜ最近よく聞くのかの考察

マイクロサービスが流行ってるからかなとか思っている。 デプロイするコンポーネントが増えたけど、それら全てに対していちいち、「ポチポチしてCanaryリリースしてGrafana・Podのログ確認して、ポチポチして本番リリースして、、、」みたいな手順をしていたら日が暮れてしまう。 だから自動でロールバック含めて行うというのが必要になったから。では。

参考