pairsのインフラコストを最適化しました

aws

この記事はeureka Advent Calendar 2016の23日目の記事です。
22日目は弊社森川によるGo言語での決済システムとマイクロサービス化についてでした。
 

こんにちは。エウレカでインフラエンジニアの松尾です。
今年も残す所あと少しですね。エウレカは本日から冬季休暇となっております。
今回はpairsのawsのコストを最適化することができたので、その施策について書いていきます。
全部は書ききれないので、いくつかポイントとなる施策を書いていきます。

AWS Trusted Advisor

AWS Trusted Advisorはご存知の方も多いと思いますが、「コスト最適化」、「パフォーマンス」、「セキュリティ」、「フォールトトレーランス」の4つの観点から、AWSが自動で精査して推奨設定のお知らせをしてくれる機能です。まだ見たことがない方は、Trusted AdvisorのCost Optimizationを確認してみると良いでしょう。

trusted-advisor

画像のように、黄色になっている箇所があれば要確認です。かなり詳しいアドバイスが書いてあるのでそれに従って修正していきましょう。

リザーブドインスタンス

Amazon EC2 リザーブドインスタンスの購入です。
これもご存知の方は多いと思いますが、AWSのコスト最適化に欠かせないサービスです。
現在リザーブドインスタンスを購入できるものとしては、EC2, ElastiCashe, RDS, Redshiftがあります。弊社では1年 All Upfront で購入することがほどんどです。その理由としては、pairsがまだまだ成長過程にあるという点と、AWSさんも毎年新しいインスタンスの追加が行われるため、定期的に最適なインスタンスを見直す必要があります。最近のアップデートで「AZ」の概念がなくなり、Region単位での購入が可能となりました。他にも、Convertibleという新しいタイプも登場しました。個人的には、Convertibleの3年間が1年に変更になると嬉しいなと思います。

Elasticsearch

検索のバックエンドに、Elasticsearchを利用するようにしました。
pairsでは元々検索にMySQLを利用しており、複雑な検索条件のクエリが多くサーバをスケールアウトして対応していました。Elasticsearchの導入により、サーバの運用台数を1/3だけでなく、レスポンスタイムについても高速化することができました。
詳細については、下記のblogに詳しく書いてありますのでそちらをご確認ください。

Akamai Image Manager

画像変換サーバを、Akamai Image Managerに置き換えました。
Akamai Image Managerとは一言でいうと、
画像を端末環境に合わせて最適に高速配信するサービス」になります。

 
以前登壇した際に作成した資料になりますので、詳しくはこちらをご覧ください。

 

資料にもありますが、parisの例でいうと画像変換サーバにかかるコスト(インスタンス+トラフィック+S3)よりも、Image Manager + Akamai NetStorageの費用の方が安くなりました。ちなみにImage Managerがリクエスト数課金でそれ以外(トラフィック等)の料金は一切かかりません。また、Image Managerは、画像を端末環境に合わせて最適にしてくれる為、画像の表示速度も速くなりました。
 
最近では、さくらインターネットさんとピクシブさんが業務提携して、ImageFluxというサービスを開発されていたので注目してます。

S3のオブジェクトのライフサイクル

S3にログやバックアップのデータをあげることがあると思います。日々運用してそのままにしているとかなりの容量になってしまいます。適切にライフサイクルを設定することで、S3の使用量を抑えられます。

日々のメトリクスの確認

日々の業務の中でコードのリファクタイリングをすることがあると思います。これは一例ですが、MySQLのスロークエリをなくしていったとします。MySQLサーバの負荷が下がると同時に、インスタンスサイズやEBSを今の負荷状況に合わせて変更することができます。もしかしたら台数を1台減らせるかもしれません。他にも、当初想定していたよりもサーバのリソースが空いていることがあると思います。そういった時はサーバのインスタンスサイズを下げましょう。日々メトリクスを見ていると、サーバの様々な変化に気づくことができます。コスト最適化の観点でも無駄なリースがないか確認しましょう。
 
エウレカではサーバ管理・監視ツールにMackerelを利用しています。AWSやGCPのコストについても、aws_billing_pluginやgoogle_billing_pluginを作成し、日々確認しています。このpluginについてもそのうち公開したいと思っています。

AWS エンタープライズサポート

エウレカは今年からAWS エンタープライズサポートに入りました。
エンタープライズサポートは金額だけみると結構高いですが、AWSのコスト最適化を行う上でとても役に立ちました。エンタープライズサポートに入ると様々な質問を気軽にすることができるだけでなく、ベストプラックティスのご提案やコストの最適化のご提案についても対応してくれる非常に頼もしいサービスです。

まとめ

コスト最適化に取り組む上で3つのことが大切だと思いました。

  1. 一番コストが掛かっている所から手をつける。
  2. コツコツやっていく。
  3. 今やれることはすぐにやる。

一番コストがかかっている所を減らすことができれば達成感が得られますし、さらに頑張ろうという気持ちになります。そして日々無駄な所がないかこコツコツ探していくわけです。後はAWSってオンプレと違って従量課金なので、使っていないインスタンスなんかはいらないのであればすぐに消しましょう。まだ導入できていませんが、今年の9月にSpot FleetがAuto Scaling対応したのでアプリケーションサーバの一部で導入したいと考えています。導入した際はまたblogに書きたいと思います。
 

明日の24日は、弊社CEO石橋さんの記事が公開されます。
お楽しみに!

  • このエントリーをはてなブックマークに追加

エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

【基礎編】Elasticsearchの検索クエリを使いこなそう

新社会人に送る。peco + anyframe + zshで実現する快適コマンドライン環境