Amazon CodeGuruハンズオン(JAWS-UG千葉)に参加しました
Amazon CodeGuruハンズオン(JAWS-UG千葉)に参加しました。
千葉と言いつつも、オンライン開催をされていて全国から参加し放題です。
今回はCodeGuruのハンズオンがあり、
なんとAWS所属の方々もスピーカー参加されておりました。
(しかもBlackbeltと同じkanasugiさん!)
またハンズオンのシナリオが公式のworkshopかと思うほど
きれいで学びになったのでブログでシェアできればと思い書いてみます。
参考資料
ハンズオンの資料公開OKをもらったので
資料のリンクを貼っておきます。
この資料があればハンズオンできますので興味ある人はぜひ。
drive.google.com
ハンズオン内で、コピペしたい箇所のテキストはこちら
drive.google.com
資料前半の説明部分はBlackbeltに似た説明があるので
併せて聴くと良いと思います。
www.youtube.com
CodeGuru機能概要
今回のハンズオンではCodeGuruの下記2つの機能を使いました。
CodeGuru Reviewer
こちらはソースのレビューを実施し、改善箇所を指摘してくれる機能です。
今回のシナリオではCodeCommitでPRをして、
その際にCodeGuruがレビューをしてくれる流れになっています。
また、今回のハンズオンでは実施していませんが、
既存のGithub等のリポジトリをレビューをかけるようなこともできます。
CodeGuru Profiler
こちらは実稼働しているアプリケーションの実績をもとに、
どのコード部分がリソース消費に影響を与えているかを解析する機能です。
本ハンズオンでは、EC2上でAgentが動作し、
EC2の稼働状況のデータがCodeGuru Profilerに送られ、
その結果を見るシナリオがあります。
ハンズオンの概要
ハンズオンは2部構成で、Part1はCICDのパイプラインを作成します。
cloud9からcode系サービスを利用し、EC2にdeployできる環境を作ります。
こちらは前準備のようなもので、cfnを使って展開します。
Part2で主役のCodeGuruを利用します。
初期のサンプルソースではCodeGuruから指摘が出るのですが、
その指摘部分を改善修正することで、
より指摘が少なくなる、といった具合で
ハンズオンのシナリオが組まれています。
CodeGuru Reviewerを使ってみて
ハンズオン用のサンプルソースでは予め指摘が出るようになっていました。
例えば、AWSのベストプラクティスに反する箇所の指摘
(アクセスキー使わないでRole使って)だったり、
一般的なJavaの指摘をしてくれます。
指摘内容は理解しやすいよう
ほぼ全てリンクが付与されていました。
AWSの使い方に関する指摘は、AWSの公式ページのリンクが付与されています。
CodeGuru Profilerを使ってみて
Profilerは動作すると、下記のようなステータスが見れます。
リソースの利用状況を可視化でき、
例えば上記でVisualize CPUを押すと下記のような画面に遷移します。
情報てんこ盛りですが、
libraryのコード(緑色)と自分のコード(青色)をひとめで区別できたり、
推奨事項を確認できたりと
実際の稼働状況から得られる情報が良い感じで集約されています。
便利ですね。
PythonでもCodeGuru Reviewerを使ってみた
ハンズオンは上記のような流れですが、
pythonでもやってみたかったので
ハンズオン終わった後に、CodeGuru Reviewerで
自分のgithub上のpythonのソースをレビューしてみました。
温度感を表すために、下記1個だけ指摘のケースを書きます。
learn moreのリンク先はpythonの公式ドキュメントで下記でした。
docs.python.org
指摘内容としてはget()の第二引数にNoneをわざわざ指定する必要ないよ、といった指摘でした。
修正してPRすると、指摘が解消されていることが確認できました。
このように一般的なベストプラクティスのような部分を指摘してくれるので良いですね。
これに慣れると、人間は業務ロジックのような
本来の部分に集中できるのかなと思います。
修正前
eventArn = event.get('arn', None)
修正後
eventArn = event.get('arn')
さいごに
今回ハンズオン実施頂いた主催者の方々、ありがとうございました!
JAWS-UG千葉支部のハンズオン、
いつも細部まで綺麗で、よく勉強させてもらっています、ありがとうございます。
今後も参加させてもらいます!