見出し画像

イベントで話したライフイズテックレッスンのインフラコスト戦略

私たちサービス開発部では、今の取り組みをより多くの方に知っていただくため、7月からエンジニア向けのカジュアルなイベントを開催することにしました。
イベントの記念すべき初回のテーマは「全国2,650校以上で採用されているライフイズテックレッスンを支えるインフラコスト戦略」でした。

初回にしては少しお固いテーマでしたが、ライフイズテックレッスンをはじめとするサービスの運用におけるコスト管理の経験を共有し、これから挑戦したいことについても話しましたので、内容をご紹介します。


インフラコスト管理の方針は?

インフラコスト管理で重要だと考えているのは、「可視化」「最適化」「予測・計画」の三つのステップを定期的に繰り返すことです。言葉にすると当たり前のことではありますが、このサイクルを回す仕組みを構築することでコスト管理を効率化することができます。そのために参考にしているのが、AWSが提唱しているCloud Finantial Management (CFM)フレームワークです。

管理を放置してしまうと、見えないところでコストがどんどん積み重なってしまいます。コストを増やすことは簡単ですが、減らすことはより困難です。そのため、現状を可視化して状況を分析できるようにすることが第一歩となります。今後の予測・計画のために、ビジネス側とも連携しサービスの利用状況を正確に把握することも重要です。

インフラ運用がビジネスにどのように貢献しているのかを測るため、サービスレベル指標の一つとして「サービスの月間アクティブユーザー/契約数あたりのコスト」を設定しています。この指標はミーティングなどで関係者と共有することで、チーム一人ひとりの意識を高めることにもつながっています。

コスト管理で課題となっていたことは?

先ほどもお話した通り、インフラコストの管理にあたって最適化のための第一歩は「可視化」でした。

まず事業ごとにAWSアカウントを分けることで、各事業のコストを明確にしました。さらに詳細なコスト分析を行うために、各AWSリソースにコスト配分用のタグを付けるようにしました。タグ付けの作業はつい忘れがちになるため、AWS Configのrequired-tagsの機能を利用して付け漏れを防いでいます。これにより、どの事業のどのサービスにコストがかかっているのか、増減があったのかを評価することができるようになっています。

また各リソースの負荷もデータを取得して、常にチェックしています。サーバーのスケールインやスケールダウンのタイミングを数字に基づいて決定することができ、コスト削減に寄与しています。

コスト削減のために行った取り組みは?

これまで実施した中でコスト削減に大きく貢献したのは、中学生・高校生がレッスンを学んだ後、オリジナルのWebサイトを作成するときに利用するCloud9の構成を変更したことです。ユーザーそれぞれにCloud9のEC2インスタンスを割り当てていたものを、使うときだけ動的に割り当てられるようにしました。
詳細は、JAWS-UG SRE支部 #3でも発表させていただきましたので、よろしければご覧ください。

さらに、短期的な最適化として、以下のような対策を行いました。

  • スケジュール調整

    • オートスケーリングを利用して、利用者が多い昼間はスケールアウト、夜間はスケールインすることでリソースを効率的に使用しています。

  • インスタンス選定

    • Gravitonインスタンスの利用や、ディスク(EBS)のストレージタイプをgp2からgp3にアップデートすることで、コストパフォーマンスを向上させました。

  • サービスに関わるストレージ選定

    • EC2(Ceph)からFSx for OpenZFSへ移設する、また、卒業してサービスを利用しなくなった生徒のディスク(EBS)をアーカイブ(Snapshot Archive)に移すなど、ストレージの最適化を行いました。

  • SaaSコストの削減

    • Datadogの担当者と相談しながら毎月のコミット量を調整したり、ログの保存期間を変更して調査に必要な分だけにしたりするなどで、SaaSコストを削減しました。

これから進めていきたいことは?

さらなるコスト削減に向けて、今後進めていく予定の対策もご紹介します。

  • Savings Planやリザーブドインスタンスの利用

    • 長期間にわたって一定のリソースを確保することで、割引を受けられるプランを利用します。予測可能なワークロードに対しては大きなコスト削減につながります。

  • 利用頻度の少ないファイルをアーカイブに移す

    • AWSのS3 Storage Lensを利用して最適なストレージクラスを選択し、コスト効率とアクセス性能のバランスをとります。

  • スケーリングやコスト見積もりの自動化

    • 現在は月ごとに話し合いながら振り返りと計画を行っていますが、AIなどを活用してできるだけスケーリングやコスト見積もりを自動化することで、より効率的な運用が可能となると考えています。

イベントの振り返り

最後に、初めてのエンジニア向けイベントを終えて感じたことを共有させていただきます。

私のセッションはQ&A形式で行ったのですが、質問する相手がいることで話しやすく感じました。これまでのオンラインイベントでのプレゼンテーションでは、画面に映っている自分に向かって話し続ける状態になり、伝わっているかどうか分からず不安になってしまうことがありました。そのときと比べると、質問者の向こう側にいる皆さまに自然な会話の形で情報を伝えることができたかなと思います。

一方で、AWSのサービス名など詳細な情報もあったため、正確にお伝えするために作成した資料を映しながらのほうがよかったかなという気持ちもあります。資料があることでストーリーがあらかじめ作られた感じになってしまうため、Q&A形式のライブ感が減ってしまう点はトレードオフになりそうです。

なんとか無事に初回のイベントを終えることができホッとしていますが、これからもっと興味深いテーマが続いていくと思いますので、どうぞお楽しみに!


ライフイズテック サービス開発部では、月毎に気軽にご参加いただけるカジュアルなイベントを実施しています。開催予定のイベントは、 connpass のグループからご確認ください。興味のあるイベントがあったらぜひ参加登録をお願いいたします。皆さまのご参加をお待ちしています!