🦌

Step Functions + AWS SDKで運用コストを最適化

に公開

はじめに

Rehab for JAPANの技術横断Tの鈴木です。皆さんは自動化して工数を削減したのに、作成物のメンテナンスやトラブル対応に工数を割かれるということを経験したことはありませんか?

本記事では、AWSの「Step Functions」を使ったサーバーレスアプローチを例に、実現した運用コスト削減について、SREの視点からご紹介します。

ターゲット読者

  • 運用コスト削減をしたい方

SREチームの運用コスト削減の重要性

SREチームは基本的に少人数となるため、いかに運用コストを削減し重要なタスクに割く時間を確保するかが開発組織全体に大きな影響を与えます。

課題:自動化したのに運用コストが増える

上記にも記載しましたが、自動化したのに作成物のメンテナンスやトラブル対応に工数を割かれ、「本来注力すべき、重要なタスクに時間を割けない」ということを経験したことはないでしょうか?

この記事でお伝えしたいことは、「自作スクリプトは極力書かずに、AWSが提供しているマネージド機能や標準機能があればそれを利用する」 ということです。

「AWS SDK」を利用するメリット

自作スクリプトによく使われるLambdaを例に説明します。

下の表は、「Lambda関数」と「AWS SDK」のアプローチから運用コストを比較したものとなります。

作業内容 lambda関数 AWS SDK
定期的なランタイム更新 年数回必要 不要
ライブラリ依存関係の管理 常時必要 不要

「Step Functions」を利用するメリット

自作スクリプトによく使われるLambdaを例に説明します。

下の表は、「Lambda関数」と「Step Functions」のアプローチから運用コストを比較したものとなります。

作業内容 lambda関数 Step Functions
作成者以外の仕組みの理解 コードの把握・ロジックの理解が必要 GUIベースで視覚的に把握可能
トラブルシューティング GUI確認に加え、スクリプト解析・デバッグが必要 GUI確認 (サービス提供元のドキュメントや既知の問題で対応可能)

実践例: 「Step Functions」 + 「AWS SDK」を使った自動化

先ほどの比較表で示したように、「AWS SDK」や「Step Functions」の活用により、
Lambda関数を使わずに構成することで運用コストを抑えることが可能です。
実際に弊社では、「Step Functions」と「AWS SDK」を組み合わせることで、
本番以外の環境における非稼働時間帯の自動停止・起動の仕組みを構築しました。
この仕組みを作る際も、「Lambda関数を使わない」という方針を採用しています。

Lambdaを使わない理由

  • 運用負荷の軽減: Lambda関数は定期的なランタイムのバージョンアップデートやライブラリの更新が必要です。特にPythonやNode.jsのEOL(End of Life)対応などが発生すると、関数を更新する作業が発生します。
  • シンプルな設計: AWS APIを直接呼び出すだけの単純な処理であれば、「AWS SDK」を使うことで構成がシンプルになり、スクリプトによる属人化を回避できます。
    「Step Functions」では大抵の処理はLambda関数を使わずに実行可能です。
  • 障害対応工数: 障害時はスクリプトの中身まで確認しなくて良いので、対応工数が削減できます。

SREチームとして限られたリソースで最大の価値を提供するためには、本当に必要な業務に集中するべきであり、運用コストを最小化することが重要です。

学んだこと

この取り組みを通じて、以下の点が重要だと再認識しました

  1. シンプルな設計の価値:複雑さは運用コストを増大させる。
    必要以上に複雑な設計を避け、シンプルさを追求することが重要。

  2. 自動化の適切な範囲:あらゆるものを自動化するのではなく、
    投資対効果(ROI)を考慮して自動化の意思決定をすることが重要。

  3. ベストプラクティスを盲信しない:一般的なベストプラクティス(例:Lambda使ったスクリプトでの自動化)が常に最適とは限らない。
    自分たちの状況に合わせた最適解を模索する姿勢が重要。

まとめ

「Step Functions」を使ったサーバーレスアプローチにより、開発・テスト環境の自動停止・起動の仕組みを構築しました。Lambda関数を使わないシンプルな設計により、運用負荷を大幅に削減することができました。

SREチームとして、「本当に重要なこと」に時間を使えるようにすることは非常に重要です。
時にはエンジニアとして「コードを書きたい」気持ちを抑え、シンプルで運用負荷の少ない設計を選択することが、長期的には大きなメリットを生み出します。
この記事が、皆さんの現場での「運用コスト削減」の参考になれば幸いです。

ここまで記事を読んでいただきありがとうございます。
最後に、一言だけ弊社の紹介をさせてください。
弊社Rehab for JAPANは「歳を重ねることが楽しみになる社会の創造」を目指しているスタートアップです。
それを実現するために様々なサービスをリリース中です。
https://rehabforjapan.com/

Rehab Tech Blog

Discussion