2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
齋藤光氏:「イオンスマートテクノロジーで実践しているAKSアップグレード戦略」ということで、ここまで真壁さんと吉川さんが話されたことに対してのアンサーソング的な発表になるかと思いますが、よろしくお願いします。
自己紹介ですが、あらためまして齋藤と申します。イオンスマートテクノロジーには2022年の5月に入社して、SREチームの立ち上げみたいなところをやってきています。今回の発表の内容にも関わるんですけど、「Kubernetes」アップグレードに失敗しない漢を目指して日々奮闘中です。
2023年にも登壇をしていて、SRE NEXTとかCloudNative Days TokyoでAKSに関する発表をしているので、よろしければご覧ください。
会社紹介としては、AEON TECH HUBの中で自社の紹介をするのもなんなのですが(笑)、イオンのデジタルシフト戦略を担う会社の位置付けとして2020年10月、約3年半前に設立して、お客さまのお買い物体験向上とか、店舗で働く方々の効率を良くしていくということをやっていっています。イオングループのすべてのビジネスをテクノロジーの力で進化させようとしています。
みなさんも使っていらっしゃると信じたいんですが、今、イオンスマートテクノロジーでは「iAEON」という、イオングループのさまざまなサービスを1つにまとめたアプリを運営中です。このバックはほとんどAKSで動いている。つまりAKSが、このiAEONを支えていると言っても過言ではないという状況です。
今日のアジェンダですが、主に3つで、まず最初に弊社で採用しているAKSのアップグレード戦略についてお話します。今はその戦略なんですけど、当然最初からそうであったわけではないので、どんなことがあってどう改善してきて今に至ったのかというところを、2つ目に改善ジャーニーとしてお話をさせていただきます。
また、そこから得たAKSのアップグレードに対して立ち向かっていく。その練度や強度を高めていくために大切だなと思っていることのお話をしていきたいと思います。
まずはAKSのアップグレード戦略からです。真壁さんとか吉川さんの話とだいぶ被りますので、それに対するアンサーソングです。おさらいですけど、弊社が運用しているKubernetesの規模としてはだいたいこのような数字感になっています。
まず、アップグレード戦略のバージョンについてです。このバージョンに限った話ではないんですけど、当たり前ですが、原則的にマネージドサービスを提供してくださっているMicrosoft社の推奨に従うことが重要だと思います。そのサポートバージョンの対象としてもマイナーバージョンはn-2のサポートまで。マイナーバージョンはだいたい3、4ヶ月に1回リリースされるので、必然的に約半年に1回アップグレードを実施しています。
ASTも実際にできてからアップグレードを必ず継続して実施してきたという、「えらいな」と自分で勝手に言うんですけれども(笑)。ちゃんと運用している部分かなと思っています。現在は1.27で稼働中です。だから次は、1.29が切れるのが7月だから6月あたりにやっていくという状況ですね。
今のはマイナーバージョンのお話ですけど、パッチバージョンですね。x.y.zのzの部分ですけれども、こちらも最近から実施するようになりました。すばらしい! 勝手に自分で言う(笑)。
(一同笑)
しかも、先ほど吉川さんが推奨したとおり、自動アップグレードを設定しています。実際に自動アップグレードをしています。というかたちで、わりとちゃんとやっているというような感じです。
まさに先ほどの吉川さんの話と被るんですけども、Long Termサポートが2023年に出て、これを利用しているかという点については、これも「利用しない」というアンサーを出しています。いくつか理由を言っておくと、AKSのアドオンもそうなんですけど、他のツールですね。observabilityツールを別に入れていたりして、そういった影響を考えたくないというところ。
あとはビッグバンリリースと言うと言い過ぎかもしれないですけど、1回のアップグレードでの差分が大きくなるのでリスクも大きくなる。あと最後の結論にもつながるんですけど、回数をこなさないとうまくいかないんですよ。Kubernetesは別に魔法のツールじゃなくて使いこなす筋力とか、組織の体力もそうだし筋力やスキルが重要です。そこを効果的に考えるとアップグレードの回数を減らすことそのものが組織を弱くするところもあると思います。
あとは普通に1.29とか1.28とかを見ていると新機能がいっぱい出ていて普通に使いたくなって、そこをわざわざ避けてLong Termサポートを採用するメリットはどのくらいあるのかなというところが解です。
実際に、どうアップグレードを実施していますか? というところをここに書いているんですけれども。基本的に特別なことは特にやっていません。当たり前のことを当たり前にやるという感じですね。まず検証環境などでやる前にバージョン差分の事前確認を、先ほど真壁さんのお話にあったChangeLogを確認して、廃止されたAPIとかを確認する。
そして対応の必要があったら対応を計画して、その後、アップグレードのテスト環境やステージング環境で実施し、動作確認をする。最後に本番切り替えを実施するというような、普通の流れです。実は一番泥臭くやらないといけないのは、(1)のバージョン差分の事前確認で、ChangeLogをちゃんと読みましょうというところですかね。
それは先ほどの週刊 AKS Changelogを読んだりとか。あとはMicrosoft MVPの方が「Zenn」でAKSのリリースノートを日本語版で出していて、先週1.29のリリースノートを翻訳してくださっているというのもあるので、こういうものをふだんから読んでキャッチアップしていくのもおすすめかなと思っています。
「切り替え」と言っていたけど、どう切り替えているんですか? というところなんですが、大きく分けてインプレース型とBlue/Green型があります。ここは説明不要ですね。散々同じ画像を……3回も全部同じ引用元なので(笑)、ここは飛ばしましょう。イオンスマートテクノロジーでは、インプレース型もBlue/Green型も使い分けているという状況です。
ちょっとあまりかっこいい理由ではないんですけれども、会社ができたのが3年半前で、このアップグレードの設計をするとなったのがまさに2021年なわけです。まさに最初の真壁さんのスライドにあったとおりの2021年の状況なので、基本的にはBlue/Green型を使いましょうというのが方針でした。
まぁ、なんやかんやBlue/Green型の作業コストが大きすぎたりとか、それ自体がツラいみたいな感じになって、インプレース型が一部採用されているところが実はあったりします。ただ、本当はやはりインプレース型もBlue/Green型もメリット、デメリットがあるので、直近ではインプレース型をベースにしてBlue/Greenを採用するというのはあるとは思うんですけれども、比較するとしたらここに書いた表みたいな感じになるのかなと思います。
作業コストでいえばインプレース型のほうが楽ちんですし、切り替え時間でいえばちょっと細かい設定にもよるんですけど、基本的にBlue/Green型のほうが当日切り替えればいいから速いよねというところですね。やりたければ重み付けルーティングで徐々にやればいい。ちなみにASTは、イオンスマートテクノロジーでは重み付けルーティングまではできていなくて、プライベートDNSをバツッと切り替えるという、ちょっとドキドキな作業があったりします。
ただ、事前にクラスタを作っておけばいいとか、事前にアプリケーションをデプロイしておけばいいとか、そういうことができるので、当日の作業時間は本当に5分です。そのうち4分ぐらいは「もう、これは切り替えてもいいんだよね?」という(笑)、みんなに勇気をもらう時間だったりします。
あとは先ほど出てきたロールバックの可否ですね。ちょっとバックアップのことを忘れていて「ロールバックはできない」とインプレース型に書いちゃいましたけど、実際に対策していくしかないかなと思っています。あとは切り替えの制約でインプレース型はマイナーバージョンで1個ずつしか上げられないので、実際に2バージョンを上げましょうとなった場合には、2回アップグレード作業をしなきゃいけないというところがあったりします。
最後は作業時のサービス影響でいうと、インプレース型は同一クラスタ内でPodがDrainによりEvictされるので一時的にキャパシティが落ちる瞬間があるでしょうというかたちになっていて、やはり作業コストが大きな判断ポイントになるかなと思います。そんなかたちでした。
こんなに偉そうに、偉そうじゃないかもしれないけど、偉そうにしゃべっていますけれども、自分が入社した時はけっこう激しめでですね、恥ずかしいことがいっぱい起きていました。まずBlue/Greenですね。先ほども出てきましたけれど、古いクラスタがあるんですが、そこからデプロイメントを削除せずに停止したんですよね。「なにかの拍子」と言っているんですけど、これはあれなんですよね。「Terraform」でAKSにタグを付けるとやったらなぜか起動して、ですね。
(一同笑)
クラスタが起動してですね、そうしたら、そこの上に載っているアプリケーションが起動するわけです。時間が空いているので3バージョン低いアプリケーションが動いちゃうんですね。別にリクエストが入って来なきゃいいんだろうと思うかもしれないんですけど、タイマー起動型のアプリがあるんですね。そいつが動いて、サービスの運営に影響はないんですけど、障害が起きるということがありました。
あとは先ほども出てきたsurgeサイズですね。デフォルトだと1台で、そもそもそのパラメータを知らない人はそんなものだと思ってやるんですけど。クラスタのノードが20台や30台になってくると、メチャクチャ時間がかかるというのはあったりします。あとはpdbが設定されていないので、Podが0になる瞬間があってエラーが出ます。
じゃあpdbを設定しようとしたら、今度はpdbの設定がイマイチで邪魔をしてアップグレードが進まないとか、Gracuful Shutdownをしていないからエラーがポコポコ出ますとか。あとは、これはGitOpsをやっていないからというのはあるんですけれども、使われていないアプリケーションがそのまま放置されているので、アップグレードのタイミングで移るんですけど、メンテされていないので起動しないとか。いろいろあります。
(次回へつづく)
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略