KubernetesのClusterが正常に稼働しているかの判定方法について
Podやコンテナのメトリクスを取ってアプリケーションが正常に稼働しているかはよくみられていますが、KubernetesのCluster自身が正常に稼働しているかどう判断するかの発表でした。
メルカリではGKEを使っていて、まずはどこを監視すべきかの話でした。KubernetesのマスターノードはGCP側の管理なので、使う側はノード側の監視に対して責任を持つべきとのことでした。
じゃあ、何を見るかと言うと、ノードで稼働している、kube-let、kube-proxy、kube-dnsなどのwork/resource metricsを監視しているとのこと。
work metricsとはスループット、サクセスレイト、エラーレイトなど明らかにアプリケーションの以上がわかる指標です。resource metricsはCPU、メモリ、ディスク、ネットワークなどのリソースに関するメトリクスです。
リソースに関するメトリクスはCPUを90%使っていてもレスポンスタイムが遅くなっていなければアプリケーションとしては問題ないため、正常に稼働しているかはwork metricsで見るべきとのことでした。
Grafeasを使ったCI/CDについて
Grafeasは今回の勉強会で初めて聞きましたね。
メタデータ(テストチェック結果、セキュリティ、QAチェックを通った結果)を溜める仕組みで、そのメタデータの結果からCI/CDを許可するといフローで使っているとのこと。より詳細な説明は下の記事がわかりやすいです。
ソフトウェアのサプライチェーンを監視するためのAPI集合GrafeasをGoogleやIBMなど8社が共同開発
Grafeasは、コードのデプロイとビルドのパイプラインに関するすべてのメタデータを集めるための、APIの集合だ。そしてそのために、コードの原作者や出所、各コード片のデプロイ履歴〜デプロイ時の記録、どのようなセキュリティスキャンをパスしたか、どんなコンポーネントを使っているか(そして各コンポーネントの既知の脆弱性)、QAからの承認の有無、などの記録をキープする。そうすると、新しいコードをデプロイする前にGrafeasのAPIを使ってこれらの情報をすべてチェックでき、それが(得られた情報の範囲内で)脆弱性なしと認定されていたら、プロダクションに放り込める。
メルカリではこのチェックを通してCI/CDを行なっているみたいです。かなり先にいってる感があって面白いですね。
GrafeasにいろんなDeploy pipeline stageの結果(metadata)を貯める:テストが通ったか? Securiy Vulnerability scanを通ったか? QAのチェックが通ったか?などなど.実際にデプロイするはそれらのmetadataがあるか? をチェックしてデプロイを許可するか否かを決める #mercari_microservices
— Taichi Nakashima (@deeeet) 2019年5月22日
GrafeasにいろんなDeploy pipeline stageの結果(metadata)を貯める:テストが通ったか? Securiy Vulnerability scanを通ったか? QAのチェックが通ったか?などなど.実際にデプロイするはそれらのmetadataがあるか? をチェックしてデプロイを許可するか否かを決める
メルカリMicro Serviceチームの開発方法の変遷について
メルカリのMicro Serviceチームは2年前に1人のチームから始まったとのこと。
マネージメントがない状態から、アジャイルを導入して、今はBasecampの6 Week Cycle(6週間のスプリントみたいなの)で開発を行なっているとのこと。
それまでは見積もりに時間を使ってしまっていて、開発にスピードが出なかったりしていた。それからはHuge Unknownなことを受け入れてshippingすることにフォーカスして開発を進めることでうまいこと回っているとのこと。
まとめ
ざっくりなまとめになってしましましたが、メルカリのマイクロサービスに関する知見はものすごく勉強になりました。そもそもマイクロサービスを運用したことがないので明確にはわからないですが、100を超えるサービスを運用するにはかなり大人数でのエンジニア組織でしか無理そうだなと改めて実感できました。
スタートアップがいきなりマイクロサービスで開発を進めるのは悪手になりそうですね。モノリスな環境から必要に応じて部分的にマイクロサービス化していくのが良さそうだと感じました。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す