【TECH BLOG #9】サーバーレスでAWS環境の費用削減をした話

こんにちは。技術戦略チームのA.Kです。
最近は、お昼の時間にもぐもぐご飯を食べながらAWSの勉強をすることがマイブームとなっています。
TECH BLOGということで、直近でサーバーレス技術を使って担当タイトルの費用削減を行いましたので、その辺りの事を簡単に紹介したいと思います。
サーバーレスとは?
サーバーレスとは、サーバーの構築や保守管理が不要でサーバー上のプログラムを実行してくれる
仕組みのことです。AWSではS3やLambdaやAPI Gatewayなどが代表的なサービスとしてあります。
メリットとして、運用コストを抑えられたりスケーラブルなサービスが簡単に構築できる等があります。
開発環境の費用削減
弊社のサーバーサイドエンジニアには担当タイトルのサーバー費用を削減するミッションがあります。
私の担当タイトルではAWSを利用しているのですが、利用状況に関して Trusted Advisor というサービスを使って調査したところ、開発環境のEC2コンピューティング費用が改善できそうだと分かりました。
開発環境のEC2はオンデマンドインスタンスを利用していて、時間単位での費用が発生する仕組みなので、
深夜や休日などの使用されない時間帯は停止することでコストを抑えられそうだと見込みました。
AWS Instance Schedulerの導入(サーバーレス)
EC2インスタンスを時間帯毎で起動・停止させる仕組みが必要となったので、
公式から提供されている AWS Instance Scheduler というテンプレートを利用することにしました。
簡単な設定だけで事前に登録した時間にインスタンスを起動・停止する機能をサーバーレス(CloudWatch + Lambda + DynamoDB)で構築できます。
https://aws.amazon.com/jp/solutions/instance-scheduler/
担当タイトルのメンバーと相談したところ、開発環境は休日や深夜帯の使用頻度は低いということで、
以下のように、平日の09:00〜23:59だけ稼働させておくスケジュール設定を行いました。
計算上は、1週間の総時間は 168h として、平日深夜と休日を合わせた総停止時間は 93h なので、
上記の設定だけでEC2のコンピューティング費用を 55% ほど削減できる想定です。
マネジメントダッシュボードの作成(サーバーレス)
AWS Instance Scheduler で指定した時間帯だけEC2を稼働をさせることに成功しましたが、
一部のメンバーから「施策対応等で時間外に使いたい場合はどうすればいいか」と聞かれました。
頻度は高くないようですが、深夜や休日にも開発環境が使えないと困るケースはあるようで、
上記の仕組みだと再稼働させるには一部のエンジニアの手動オペレーションが必要な状態でした。
(権限管理の都合で担当タイトルのメンバーにはAWSアカウント操作権限を与えることができないため)
そのため、担当タイトルのメンバーが開発環境EC2インスタンスの起動・停止操作をサーバーレス(S3 + API Gateway + Lambda)でダッシュボードの作成を行いました。
簡易的なツールですが、S3の静的ホスティングサービスを利用してVue.jsでフロントを構築し、
EC2の起動・停止操作はAPI GatewayからLambdaを通して、AWS CLIから制御するようにしています。
ダッシュボードのおかげで気兼ねなくスケジュール停止が実現でき、開発環境の費用削減が行えました。
おわりに
今回はAWSの勉強を行う過程で、普段業務では使っていない新しい技術に挑戦することができました。
サーバーレスを使うと低コストで小さな機能が簡単に作れるので、サーバー費用の削減や
業務効率化ツールの作成などで今後重宝しそうな技術だと感じています。
ファンプレックスでもサーバーレスの技術に積極的に取り組んでいきたいと考えていますので、
興味があるエンジニアの方は、ぜひ採用ページからご応募いただけると嬉しいです。
※2021年7月1日よりファンプレックスはグリーエンターテインメントへ商号変更いたしました。
※2021年6月30日以前の記事においてファンプレックスという表記がある場合がございますが、ご了承ください。
information
本件に関するお問い合わせ先
グリーエンターテインメント株式会社 広報担当
東京都港区六本木6-10-1 六本木ヒルズ森タワー
E-mail:info-ent@ml.gree.net