文章やイラストなどを投稿できるコンテンツ配信サービス「note」。コロナ禍以降は巣ごもり需要にも後押しされてユーザー数が急増しており、2020年には月間アクティブユーザー数が前年同期比で3倍以上に増えたという。しかし同時にトラフィック量も急増したため、運営元であるnote社のシステム部門ではその対応に追われた。特にクラウドサービスの利用コストの高騰は、大きな悩みの種だった。
noteのサービスを支えるシステムは、全てAWS(Amazon Web Services)のクラウドインフラ上で構築・運用しており、トラフィック急増でその利用コストは約10倍にまで膨れ上がった。
このままトラフィックがさらに増えれば、コストが利益を食いつぶすことにもなりかねない。そこでシステムの運用や品質管理を担う「SREチーム」が中心となり、急きょAWSの利用コストの洗い出しとその削減に取り組むことになったという。
「もともと一部の担当者がAWSの管理コンソールを通じて利用コストをチェックしてはいたが、限られた範囲の情報しか取得できなかった」。こう話すのは、同社SREチームの中村昴さん。何にどれだけコストがかかっているのか、社内的にも決して関心が高くない状態だったという。
「そこでまずは、より詳細な情報を可視化できるようにして、かつそれを全社員が参照できる仕組みを構築することにした」(同)
AWSの使用状況をレポートする機能「AWS Cost Usage and Report」を使い、リソースの利用状況とコストに関するより詳細な情報をCSVデータとして取得するようにした。これをオンラインストレージ「Amazon S3」(Amazon Simple Storage Service)のバケットに保管した上で、データ分析PaaS「Amazon Athena」を通じてクエリを投げ、集計・分析。その結果をダッシュボードツール「Redash」上に表示する仕組みを構築した。
ただ、データが見える場所を作っても、その場所に簡単にアクセスできなければ関心を集めることは難しい。中村さんはそう考え、この情報をSlack上から全社員が参照できるようにしたという。
コスト可視化の仕組みを導入したことで、具体的にどのサービスやリソースで多くのコストが発生しているのかが徐々に見えてきた。特にログ周りのコストは際立っていたという。
「AWSはログデータを保管しているだけでコストが発生するので、本来は不要なログが発生しないようサービスを設定したり、古いログを削除・上書きする設定を適切に行ったりする必要がある。しかし幾つかのサービスではそうした考慮がなされないまま、ずっとログが垂れ流しになっていた」(中村さん)
サービス規模がまださほど大きくなかったころはこうしたコストが目立つことはなかったが、トラフィック急増に伴いサービスが吐き出すログの量も一気に増え、それらを転送・保管するためのコストが一気に跳ね上がることになってしまった。
いつ誰がとったのか分からない古いスナップショットデータも数多く残っており、これらを保管するためのコストがかなり掛かっていた。
そこでこうしたデータを洗い出して順次削除していくとともに、ログをはじめ無駄なコスト発生の要因となっていたサービス設定を一つ一つ見直し、コストの最適化を進めていった。
これに伴い、より細かな粒度でコストを分析するための仕組みも順次追加していった。特に重視したのが、チームごとの利用コストの可視化だ。
SREチームの加藤和也さんによれば、これまでは単一のAWSアカウントを全チームで共用していたという。しかし、このやり方ではチームごとの利用コストを正確に把握できず、アカウントを分離するにもリソースを作り直す必要があった。
そこでAWSリソースを作成するときに、必ずチームを識別するタグを付けてもらうよう社内のチームに要請。これらのタグを「コスト配分タグ」として設定することで、チームごとのコストを可視化できるようにした。
加藤さんによれば、すでに全リソースの約6〜7割にタグが付与済みという。今後はさらにその割合を高めるべく、リソース作成時のタグ付けをルール化することも検討している。
ただしAWSのリソースの中には、タグを付与できないものも存在するという。そのため、タグ付けと並行してAWSアカウントをチームごとに個別に付与する取り組みも進めている。
「アカウントを分離するためには、すでに共用アカウントで作成したリソースを再度作り直さなくてはならず、かなりの手間が掛かる。しかしコスト可視化の他にも、セキュリティ対策やデータ保護の面で多くのメリットが享受できるため、現在タグ付けと並行してアカウント分離を順次進めている」(加藤さん)
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR