SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

大規模解析サービスを支えるGCP活用事例

大規模サービスにおけるオートスケーリングを構成する上で考慮すべきポイント

大規模解析サービスを支えるGCP活用事例 第4回

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

 予測可能なデータ、また少量のデータを処理するサービスではコンピュータリソースの準備は比較的簡単です。しかし予測が難しい大量のデータを処理しなければならない解析サービスにおいてはコンピュータリソースのオートスケーリングは必要不可欠とも言えます。本稿では、大規模解析サービス「KARTE」で採用しているオートスケーリング構成について紹介します。

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

 KARTEでは大きく分けて以下の二種類のサーバが存在します。

  • ユーザからのHTTPリクエストを処理するWebサーバ
  • メッセージキューにたまったユーザデータをリアルタイムに解析するサーバ

 これらはマルチクラウドで稼働できるようにIaaSであるGCEで構築されていて、それぞれが異なるオートスケーリング構成をとっています。

 本稿ではまずオートスケーリングを構成する上で考慮すべきポイントを述べ、その後にそれらのポイントをGCPで実現するための方法について説明します。最後に先ほど説明した二種類のサーバのオートスケーリング構成について紹介します。

オートスケーリングの5つのポイント

 一般的に、オートスケーリングは以下のポイントが求められます。

  • コンピュータリソースが必要になった時に、適切な量をできるだけ早く確実に起動する。
  • コンピュータリソースが不要になった時に、適切な量をシステムに悪影響を与えず停止する。

 この実現のためには以下の5つのポイントが重要になります。

ポイント1 サーバのステートレス化

 オートスケーリング環境では、インスタンスが不要になった際にはインスタンスは停止されます。したがって、サーバにステートを持たせてしまうとインスタンス停止時にそのステートが失われてしまうことになり、サーバのステートレス化は必要不可欠です。

 既にステートレスなサーバであれば何もする必要はありませんが、ステートフルなサーバである場合は以下のような対応が必要になります。

  • セッション情報などは外部のDBに持たせる
  • ログ情報は定期的に外部のストレージ等に保存

ポイント2 コンピュータリソース不足の回避

 オートスケーリングは需要に応じて動的にコンピュータリソースを起動/停止する仕組みでしかないので、そもそもの利用可能なコンピュータリソースが枯渇してしまっていてはオートスケーリングすることはできません。

 クラウドサービスを利用するのであればある程度まではリソースは確保されていますが、無限にリソースが利用できるわけではありません。

 オートスケーリング構成を取る場合は最大でどれぐらいコンピュータリソースが必要かを見積もり、その台数が起動できるように確保しておくことも大切です。

ポイント3 適切なスケーリングポリシーの設定

 オートスケーリングの恩恵を最大限受けるためには、どのタイミングで何台起動/停止するかというスケーリングポリシーの設定が重要になります。

 その理由としては、例えば、コンピュータリソースが余っている時に以下のような余計なコストがかかってしまうことと、

  • 追加でインスタンスを起動してしまう
  • 不要なインスタンスを停止できない

さらに、コンピュータリソースが足りない時に

  • インスタンスが起動できない
  • インスタンスを停止してしまう

という事態が起こり、大規模解析サービスのパフォーマンスが悪化してしまうからです。

ポイント4 起動時間の短縮

 インスタンスの追加起動が必要になる時はどのような時でしょうか? 多くのケースにおいて、コンピュータリソースが不足して性能が低下しているいる状態であると考えられます。

 例えば、解析サーバにおいてコンピュータリソースの起動とアプリケーションの起動までに30分かかってしまうと、解析のパフォーマンスが30分間悪化することが想像できます。

 このような状況を防ぐためには起動時間の短縮について考えることが重要です。

ポイント5 安全な停止

 インスタンスが不要になった場合、ただちにインスタンスを停止するのはリスクがあります。

 アプリケーションが何かしらの処理途中でインスタンスが停止してしまうと、その処理が異常な状態になってしまう可能性があるからです。

 そのような状態にならないために、安全な停止を行う必要があります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
GCPでオートスケーリングを実現する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
大規模解析サービスを支えるGCP活用事例連載記事一覧

もっと読む

この記事の著者

竹村尚彦(株式会社プレイド)(タケムラ ナオヒコ)

 株式会社プレイド エンジニア 2014年からプレイドで、インフラを中心にKARTEの裏側を全般的に担当。 プレイド入社前はNECにてクラウドサービスの立ち上げにエンジニアとして従事。 2011年、同志社大学工学部を卒業。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10522 2018/01/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング