mkurokiのメモ

mkurokiのインフラとか仕事とか色々なメモ書きです。ここで書いている主張等は所属する会社とは関係がありません

AWSのSpot InstanceとAurora Serverlessで個人環境のTCOを最小化したい話

こんばんは、mkurokiです

個人的な/私用の 環境って持ってる人も多いかと思うんですが、 お金を稼ぐためのものではなかったりすると思いますので できるだけそこにかかるコストは最小化したいですよね?

今回はそのへんをうまいこと調整してみたいなーと思い、やってみた話です。  

要約

  • Spot Instance で 仮想マシンTCOを最小化してみる
  • Aurora Serverless でDBのTCOを最小化してみる

解決したい課題・要件

  • 個人用の環境のTCO(Total Cost of Ownership)を最小化する
    • 前述の通り、金も手間もかけずにいい感じの環境を目指す
  • DBの面倒をなるべく見ないで済むようにする
    • サーバー費節約のためAllInOneサーバーになにもかもすべてを同居させてしまうと、事あるごとにMySQLがOOMに殺されるので、そのような事態を避け、DBのお世話にかかる手間を小さくしたい
  • 主にフロント用途で仮想マシンは1台稼働させる

前提条件

  • 単純なWEB(apache)とDB(MySQL)のサーバーシステムの個人的な環境
  • 一応外部に公開しているサービスが動いている
  • そんなにミッションクリティカルでもなく、止まるとめっちゃ困るわけでもなく、ゆるく触りたいけど金と手間をなるべくかけたくない環境
  • けどそんなに頻繁に長いこと止まられるとちょっと嫌だなーという環境
  • クラウドサービスはどこでもいいといえばいいんだけど、今回はAWS

割り切った部分

  • レスポンスタイムは多少遅くても良い
  • 可用性はそんなに重要視しない

 

採用した構成

  • EC2 t3.small スポットインスタンス + Aurora Serverless
    • 可用性を重視しないためスポットインスタンスの瞬断を許容し、費用を抑える
    • DBへのアクセスも少ないし初回起動時に時間がかかっても大して困らないため、Aurora Serverless で必要なときに必要なだけDBのリソースを使い、管理を気にしなくて良い構成へ

結果

  • 費用はこんな感じになった
    f:id:mkuroki24sp:20200702235654p:plain
    コストの推移グラフ
    • 上記グラフの①のあたりで構成を切り替えて、今回導入の「スポットインスタンス + Aurora Serverless構成」に変更した
    • ②の期間中は、Aurora Serverless の設定がマズくて費用が高くなってた。後述する
    • ③のあたりが平常時の平均的なコスト。
      • 一日$0.66(≒月$19.99)くらいにおさまる感じ(おさまってくれ頼む)
  • Aurora Serverless は最初、常に1インスタンス立ち上がりっぱなしの設定になっていたため、費用がかさんでいた(②の期間)
    • 下記にチェックを入れないと、アイドル時に費用を抑えることができない
      f:id:mkuroki24sp:20200703000351p:plain
      ここにチェック

念のため、予算アラートの設定

  • とはいえ、Aurora Serverless がアクセスに応じて費用が増えまくる可能性はあるため、月額の費用がある程度の金額を超えたらアラートを出すように設定しました
  • 請求ダッシュボード→Budgets から予算とアラートを設定できます。個人のメールでアラートを受信するようにしました
    f:id:mkuroki24sp:20200703001414p:plain
    予算アラート設定

まとめ

というわけで、いい感じのそこそこ安くて使える環境になったような気がします。 監視周りをもうちょっと整えていきたいところですが、続きはまた次回!