2019年03月19日07時00分

初心者がつまづきやすいCPUクレジットの落とし穴

  • この記事をはてなブックマークに追加
  • Pocket

 2月23日に開催されたJAWS DAYS 2019で最初に聴講したのは、JAWS-UG初心者支部 武田 可帆里さんの「EC2 T2 つまずきやすいCPUクレジット ~EC2でチャットボット作って運用でハマって学んだ話~」というセッション。使いこなしている読者の皆たちには当たり前のことかもしれないけど、初心者だと見落としてしまうポイントを経験談から披露。永遠のAWS初心者である筆者も、「なるほど、そうだったのか!」とうなずいた。

TK
JAWS-UG初心者支部 武田 可帆里さん

業務コミュニケーションがチャット中心になりチャットボット開発が増加

 JAWS初心者支部の運営に携わる武田さんの職業はエンジニア。AWSに関しては初心者であり、JAWS DAYSにも初めて参加したという。しかし初参加にして初登壇とは、なかなかの肝っ玉。筆者には実は、以前から疑問だったことがあった。初心者支部ってどんな人が運営しているんだろうか、ということ。集まっている人がみんな初心者では、コミュニティ活動に慣れた人がいる可能性も低いと思われるので、果たして運営に名乗りを上げる人はいるのか、どのような人が運営しているのか、と不思議に思っていた。今回はからずも、初心者向けセッションでその疑問に答を得た。初心者だからといって、臆している人ばかりではないということか。

 そんな筆者の疑問とはまったく関係なく、セッションで披露された話題は、EC2に関するハマりポイントについて。これから実際の業務にAWSを取り入れていきたいというような初心者に向けて、「同じトラブルに見舞われないように私の失敗を参考にして、これから勉強するための第一歩にしてほしい」と、あえて失敗談を披露してくれた武田さんの勇気にまずは拍手を送りたい。

 SlackなりChatworkなり、業務現場でチャットが使われるのは一般的になっている。実際武田さんが「仕事でチャットを使っている人はいますか?」と会場に問いかけたところ、大勢の人が挙手をした。武田さんの職場でもコミュニケーションの中心はメールからチャットへと移っており、ここ数年は社内外に向けたチャットボットを作る仕事が多かったという。

 「たとえば社員検索や非常時の安否確認、社外に向けては内定者管理のチャットボットなどを作ってきました」(武田さん)

 退社時間を可視化するチャットボットで、実際の機能例も示してくれた。チャットボットに呼びかけると、退社予定時刻と残業理由を聞かれる。勤務中に予定が変わったら、再びチャットボットに呼びかけて退社時刻を変更すればいい。ここで収集された情報をもとに1日2回、チャットルームのメンバーに帰宅予定時刻を宣言して共有する。誰が何時に帰るかを検索する機能も備え、チームメンバーの業務負担具合を共有できるという仕組みだ。

AM
残業見える化カードのチャット版を作成して、運用

 「チャットボットは落ちやすいので、cronで定期的に自動起動するように作りました。業務を支援するサービスなのでサーバー冗長化は不要ですが、データベースは残していきたいのでバックアップを取れるようにしました」(武田さん)

トライアル開始から2ヵ月後、ボットの動作が急に不安定に……原因は!?

 残業時間を共有するチャットボットを稼動させはじめて2ヵ月ほどたった頃、同僚から「残業時間を申請するチャットボット、動いてないときあるよね」と指摘された。見てみると、チャットボットに呼びかけても既読になったりならなかったりと、動作が不安定になっていた。

 「使っていたのは、t2.microでしたが、CPUリソースにもデータベースにも充分な余裕が残っていました。いろいろ調べてみた結果、CPUクレジットが枯渇していることが判明しました」

 CPUクレジットって何? 筆者もEC2くらいは触ってみた(そして盛大に落とし忘れて数ヵ月課金された)ことがあるが、CPUクレジットというのは気にしたことのないリソースだった。武田さんは、そんな筆者にもわかりやすいようバケツを模してCPUクレジットについて説明してくれた。それによれば、CPUクレジットとはEC2が消費できる時間当たりのコンピューティングリソースの総量で、EC2はその範囲内で利用できる。割り当てられるCPUクレジットよりも消費するCPUクレジットの方が少なければ、つまり、CPUにあまり負荷をかけ続けなければ気にする必要のないリソース値だ。

AM
CPUクレジットの供給量より消費量が多く、枯渇してしまっていた

「1日2回の呼びかけなど定刻処理は一時的な処理なので大丈夫だと思っていたのですが、チャットを監視していたりそれぞれの呼びかけに返信したりすることで、供給されるCPUクレジットよりも消費するCPUクレジットの方がわずかに上回っていたのでした」(武田さん)

 2ヵ月も安定動作することを確認したチャットボットを、根本から設計変更するのはちょっとあり得ない。そこで、動作環境をt2.microからt2.largeに変更して解決したとのこと。

「チャットボットのように裏で定期ジョブや処理がある場合は、CPUクレジットの制約が厳しいt系インスタンスは不向きというのが、今回の学びでした。それでもt系インスタンスを使う場合はCPUクレジットの罠に注意して、動作検証時にCPUクレジットの消費状況も合わせてチェックすることをおすすめします」(武田さん)

 JAWSの発表ではやれサーバレスだ、やれIoTだと新しいサービスを使ってみた話題が多いが、初心者がいきなり聞いてもキラキラしすぎてまぶしいだけ。でも、こんなわかりやすいセッションもちゃんと用意されているので、コミュニティに参加するのをためらっている読者もぜひ機会を見つけて勉強会に参加してみて欲しい。まずは武田さんらが運営しているJAWS初心者支部の扉を叩いてみるといいだろう。

■関連サイト

関連記事

あわせて読みたい

最新のニュース

アスキーストア人気ランキング

アクセスランキング

Like Ranking