🙆

実務でPandasとMatplotlibを使う時がやっと来た

2024/02/07に公開

はじめに

AWS エンジニアになる前は Python を独学で学び、Pandas や Matplotlib などデータ分析に関わるライブラリを触ってきました。

実務で使うことはあるのかと思っていましたが、ようやく学んだことを活かせる時が来たので記事にしようと思います。

どんな業務で扱うことになったのか?

AWS エンジニア(インフラ担当)として、『AWS リソースの使用状況を月次で報告する』 という月一の定例業務が発生することになりました。

EC2 インスタンスの 1 ヶ月の CPU やメモリの使用率などの推移を見て、今後のキャパシティプランニングに役立てる目的のためです。

私がジョインしているプロジェクトでは、システムの機能ごとに複数の AWS アカウントを使用し、かつ EC2 インスタンスを冗長化しているためサーバ数が多い状況です。
手作業で各サーバの CPU、メモリ使用率を確認していては月一の作業に対しての工数がかかってしまいます。

そこで、以下の方法で『工数がかかりすぎる問題』を解決しました。

Image from Gyazo

Lambda で CloudWatch のメトリクスを取得して統計データを Pandas と Matplotlib でグラフ化する

今回、『1 ヶ月の統計データを可視化して報告すること』 が最大の要件でした。
その要件を満たすため、以下の二通りを検討しました。

案 1)
CSV ファイルの出力までを Lambda で実装して、グラフ作成は VBA を実装してエクセル内で行う

案 2)
CSV ファイルの出力とグラフの作成まで Lambda で実装する

『手作業をなくすこと』『実装の手間を省くこと』 を前提に検討し、全ての処理を Lambda 内で完結できる案 1 を採用しました。
(実を言うと、Pandas と Matplotlib を使う機会チャンスだったからという、個人的な理由も少なからずありますが、、、)

実際に導入してみた結果

個人の感想としては良い感じです。
ただ、検討段階で 『報告資料にどのようにグラフを挿入するか』 という点では見積もりが甘い部分がありました。

結局、グラフを一つ一つ貼り付けていく工数が発生してしまいました。これは、案 2 を採用していたとしても 『VBA でグラフの貼り付け位置を指定する』 という(難易度の高そうな)実装が必要だったと思います。

改善点

『手作業をなくすこと』 を前提条件にしているので、見積もりが甘かった点を VBA で修正する感じになりそうです。

さいごに

AWS エンジニアもプログラミング言語(特に Python)は絶対にできた方がいいということが今回の業務で実証されました。
今まで学習してきたことが無駄にならなくてよかったです。

Discussion