経験した人なら誰もが頷くであろう、AWSのビリング(請求関連)はとても難解だ。ご存知のない方は、cloudpackですらAWSのビリングに精通した精鋭メンバーを擁していることからも、是非ともその難しさを想像してみてほしい。
何がそんなに大変なのか?
それは、単純に請求関連だけを理解すればいい訳ではなく、”AWSアカウントの管理方法” や “AWS利用料の支払い方法”、”コスト最適化”など考えなければいけないことが山程あるからだ。
これらの課題に対するヒントを求めて、Cost Visualizer の産みの親である株式会社NTTドコモの秋永和計氏に、AWSのビリングの攻略方法についてお尋ねしてみたいと思う。
NTTドコモの秋永和計氏ってどんな人?
イノベーション統括部に所属しているクラウドソリューションの担当課長。さまざまなクラウドの評価などを行ってノウハウを溜めていることもあり、社内の様々なビジネスを担うシステムの最適化の支援はもちろん、社外に対してもコンサルティングを行う立場のビジネスマンだ。
秋永氏が担当しているのは、主にデータウェアハウス(Amazon Redshift)やデータベース(Amazon RDS、Amazon DynamoDBなど)、ストレージ(Amazon S3、Amazon EBS)で、それ以外にはNTTドコモ全体のAWSの利用コストを最適化できるように日々奮闘している。
NTTドコモでは、どのくらいAWSを利用しているのですか?
約200のAWSアカウントを運用しています(2016年7月現在)。長いことドコモ社内でクラウドの利用促進を担ってきましたが、ようやくクラウド利用が当たり前になってきた感があります。
今では、さまざまな部門で商用環境から開発途中のプロトタイプまで、システムの基盤としてクラウドを選択するケースがほとんどです。
クラウドの利用が当たり前になると、元には戻れなくなるみたいですね。例えば、従来の手順に戻ろうとすると、まずどこにデータセンターを置くか?いつまでにモノを購入しないといけないか?など様々なことを考える必要があるけど、もう2度とそんな面倒なことを考えたくない(笑)。
それに比べれば、AWSなら検討済の項目も増えてノウハウが溜まってきている分、利用開始までのスピードも段違いに違いますからね。
複数の事業部で利用しているとのことですが、AWSアカウントの管理はどのようにしているのでしょう?
基本的に、ルートアカウントは各事業部でプロジェクトごとに管理してもらっています。ただし、管理方法については指針を出しています。
例えば、「MFAを使いましょう」とか、「ルートアカウントは使うのを止めよう」とか、「IAMはこう使いましょう」など、迷いのない明確な指針を出しています。
お気づきだと思いますけど、これらの指針って『ドコモ・クラウドパッケージ』の内容そのものなんですよね。元々は社内向けのパッケージですから(笑)。
多数のAWSアカウントに対して、利用料の支払いはどのようにされているんですか?
Consolidated Billing(一括請求)でまとめて、支払いを行っています。プロジェクトごとに承認があれば、Consolidated Billingに紐付けて請求をまとめるようにしています。AWSアカウントをまとめることで、リザーブドインスタンス(RI)の共有化が進みますし、プロジェクトごとに購入してもらうRIが、ちゃんと利用されていなかった場合でも、他のアカウントのインスタンスに自動で適用されるから、全体ボリュームを落とせるというわけです。
プロジェクト毎にRIを購入すると、実際にRIが適用されないケースがあると思いますが?
プロジェクトごとに請求を出していますので、RIを購入したプロジェクトに適用されていない場合は、RIが適用された価格でAWS利用料を再計算しますし、RIを購入していないプロジェクト場合には、通常価格で請求しています。
Cost Visualizerには、必要な情報をAPI経由でJSONデータを引っ張り出せる機能があります。実はその機能を使ってそういった社内での請求をスムーズに再計算する「はやわかりくん」という内部ツールがあるんです。このツールは、会社によって計算の仕方とかも違ってくるのでCost Visualizerにはデフォルトで組み込まれていないのですが、そういった独自の機能も外部に作りやすくしています。
そういえば、最近面白いものを作りましたよ。Amazon Echo(Amazonが提供している音声エージェントサービス)に話しかけると、AWSにかかっているコストをCost Visualizerから取得して、音声で答えてもらえるんです(ニヤリ)。
Ask Cost Visualizer to get today’s AWS cost of my account.
(訳:今日のAWS利用料をコストビジュアライザーから確認して)
(数秒して・・・)
Today’s cost is one-hundred twenty two point forty six dollars. The cost will be two hundred sixty one point eighty one dollars by the end of this month.
(訳:今日のコストは、$122.46 です。今月末にはコストが $261.81 になります。)
・・・わかりにくくないですか?
そうですね、作ってみてわかったんですが、コストのことは声で言われてもわからないです(笑)
うむむむ。では気を取り直して。
この機能は、先ほども話したCost VisualizerのAPIにLambdaがアクセスして教えてくれるという仕組みになっています。ちなみにビリングデータ以外の各リージョン間のネットワークレイテンシーなどの情報なども見ることができるんですよ。
ちなみにConsolidated Billingするためには社員の協力が必要不可欠と思いますが、何か特別なことをしていますか?
そうですね。プロジェクトチームにインセンティブとして、ノウハウの提供、コンサルティングの提供、そしてコスト分析ツール(Cost Visualizer)を提供しています。
やはり専用のツールを提供なしでは、使っているコストが分かりにくいんですよね。これまでは、プロジェクトのメンバーから想定以上にコストがかかっているけど何で? と問い合わせをもらうケースが多々ありました。原因としては、EC2は停止していたけど、EBSのコストが多くかかっていたり、大量のスナップショットが残ったままだったとか。
私としては、日々のコストがどういったことに支払われているかなどを理解してほしいという思いもあります。今ではCost Visualizerで確認と分析ができるので、プロジェクト担当者が自らコストを自分で分析してもらうのがベストだと考えています。
アカウントが多いので利用料も相当額になるだろうと想像しますが、コストの最適化のために努力していることはありますか?
前述のとおり、AWSアカウント全体でボリュームディスカウントを効かせるために、Consolidated Billingしたり、余ったRIを自動的に適応して最適化するといったあたりですかね。
それ以外だと、おかしな使われ方がされていないか監視をしていたります。
「あるある」になってしまいますが、AZ間違いやOSタイプ間違いなどでRIが適用されずに余ってしまうケースもあるので、それを監視したりとか。
それに、オンデマンドばかりを利用しているケースもあるので、常にRIとスポットとオンデマンドの比率を確認して、オンデマンドが定量的に使われているような場合には、RIを購入するように勧めています。
それ以外には、AWSの正しい使い方を教育する一貫として、社内ブログを書いたり、勉強会をお昼休みの時間帯に毎週開催したりしています。外部の方に講師をお願いしたりしていて、毎回50人以上が参加しています。
将来のために、社内の開発を時代に即したモダンなものにしていきたいと思っていますし、よりよいドコモのサービスをお客様に提供したいと考えています。お客様は、価格に敏感ですから、開発コストを下げることが至上命題になってきます。そのために、クラウドを使った開発体制にシフトしたわけです。
コスト管理で苦労していることはありますか?
日々進化するAWSの新しいサービスへの対応や、たまに発生するビリングサービスの仕様に対応、あと大きいのは為替変動への対応ですかね。正直どうしようもないのですが。(笑)
内部的にはプロジェクト毎に請求書を発行しているのですが、プロジェクトごとに複数のアカウントを1つのプロジェクトとして請求してほしいなどの要望もあったりするので、プロジェクトオーナーの都合に合わせて対応しています。
請求書を発行するまでのフローも可能な限り自動化をしているのですが、社内の独自システム相手には、どうしても手動で対応しなければいけない部分もあって。止むを得ず、人を雇いました(笑)。
あとは、プロジェクトで利用するAWSの利用料金を見積もってほしいと依頼されるケースもあります。ただ、予算折衝はシステム仕様が固まっていないうちから開始することが多いので・・・導入するシステムが決まっていれば算出しやすいのですが、情報がない時には過去の経験を元に概算を出すようにしています。ここは毎度、苦労しているポイントです。
Cost Visualizerは外部にも販売していますが、お客様の反応はどうですか?
cloudpackさんからの紹介案件もありますが、少しづつ売れてきていますね。比較的、利用の多い大手企業が多いです。興味を持ってくれるお客様も増えてきています。
あとは、販売を始めてから気がついたこともあります。
例えば、NTTドコモではConsolidated Billingをはじめから利用していたので後から気がついたのですが、Consolidated Billingを使っていない場合だと、Detailed Billingのフォーマットが変わってしまうんです。それでCost Visualizerが動かなくなってしまうというケースがありました。もちろん対応済みですが。
機能追加や改善も結構行っているのですか?
Cost Visualizerの開発はcloudpackさんにもお手伝いいただいています。お客様や社内から寄せられる要望に対して、優先順位を決めて対応しています。頭を悩ませる要望もありますが、諦めずに解決方法を模索しています。
そういった開発の成果もあって、ついにCost Visualizerのバージョン2が完成しました。9月からは新バージョンをお客様にお配りしていますので、是非お使い頂きたいですね。
いろいろなお客様が気軽に利用できるよう、年内中にAWS Marketplaceでの販売も予定しています。販売開始まで、もう少しだけお待ちください。お楽しみに!
インタビューを終えて
AWSのコスト管理をしやすくするために、AWSのビリングを研究してCost Visualizerを開発している秋永様でも、とても苦労していることがよく分かりました。
恐らく1つのAWSアカウントで運用しているのであれば、そこまで苦労を感じることはないのかもしれません。しかし、クラウドの利用は今以上に進んでくると思いますし、複数のAWSアカウントを持った時に同じような苦労に直面する企業も多くなってきそうですね。
自社ビジネスのインフラにAWSを利用していれば、ビジネスの成長とともにAWSの利用料金も増えていきます。コスト管理や分析を自社で頑張ろうと思うと費やす時間がどんどん増加していくはずです。それが原因でビジネスの成長が鈍化する可能性もあり、トレードオフをどう考えるかがポイントじゃないかと思いました。
Cost Visualizerにご興味があれば、一度お問い合わせしてみるのもいいかも!?