SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

注目スタートアップから学ぶ、ビジネスの課題を解決するAWSの活用術

AWSでペタバイト級の大規模データを高速処理するには? フロムスクラッチの開発事例から学ぶ

注目スタートアップから学ぶ、ビジネスの課題を解決するAWSの活用術 第2回

AWS EMRとAmazon S3への移管で「複雑データの処理高速化」と「システムコスト最適化」

 幸いにもb→dashは順調にサービスを拡大することが出来ましたが、拡大していくと同時に、当時のAmazon Redshiftの利用方法では限界があることもわかってきました。

 b→dashの利用企業が増えたことで、それまでの企業とは異なる形式でデータを保存している企業も増加したため、より一層複雑にデータを組み合わせて集計する必要がありました。

 取り扱うデータ形式の種類が少ないうちは、Amazon Redshiftのクラスタ上でスキーマを適切に設計することで大量なデータでも高速に処理できていましたが、データの形式が多岐にわたるにつれてクエリや計算処理も複雑化し、集計時間が長くかかるようになってきました。また、保持するデータ量に比例して、Amazon Redshiftのクラスタをスケールアップする必要があったため、システムコストも右肩上がりで増えていました。

 多様なデータ形式でも高速に処理するにはどうすればよいか?という点を再度AWSのソリューションアーキテクトの方とも相談した結果、Amazon S3Amazon EMRを駆使すれば実現できるのではないか、という解にたどり着きました。

 Amazon Redshiftは、データの保管と処理を同じシステム内で実行するのですが、データの保管はAmazon S3、データの処理はAmazon EMRと分離することで、複雑なデータをより高速に処理できると考えました。具体的には、一旦全てのデータをAmazon S3にORC形式で保管し、Amazon EMR上のHiveやPrestoといった分散処理エンジンから、Amazon S3のデータを参照し処理する、という方法に変更しました。

 これによって、異なる形式のデータを無理に1つのRedshiftクラスタ上に持つのでなく、データ形式や分散処理の種別に応じてAmazon EMRのクラスタを適切に分けることができるようになります。こうして、データ形式の異なる処理を高速化することができました。

 また、Amazon Redshiftは常時起動しておく必要があり、起動している時間だけシステムコストが発生していましたが、Amazon EMRとAmazon S3は必要なときだけ起動・アクセスすればよく、起動時間が短くなった分、システムコストを最適化することもできました。

AWSに独自サービスを付け加えることでより安定したシステム基盤を構築

 ただ、Amazon EMRの利用において苦労した点もありました。それは、分散処理の不安定さです。

 分散処理では、クラスタを構成するインスタンスのうち1台でも障害が発生したら、クラスタの処理全体に影響を及ぼしますし、複数の処理を同時に走らせたときに、内部処理で一時的にリソースが枯渇して処理が落ちるという特有の問題も発生してしまいます。

 そこで、b→dashにおいては、Amazon EMRのスケーリングや処理の割り振りを動的に管理するリソースマネージャーという独自サービスを構築し、この問題を解決しました。

 リソースマネージャーの役割は大きく3つあります。1つ目は、Amazon EMRで処理を実行するときに、処理を割り振るクラスタを動的に決めること。2つ目は、Amazon EMRのCPUやメモリといったリソースの仕様状況に応じて、自動的にクラスタの台数をスケーリングさせること。3つ目は、不具合が発生したクラスタがある場合に自動的に検知し、再起動をかけて自動的に復旧を行うことです。

 リソースマネージャーによって、不安定な分散処理を安定的にかつ効率よく行うことができるようになり、コストと安定性の両立を行うことができるようになりました。

まとめ

 AWSのサービスは多岐にわたり、それぞれ特長が異なります。状況に応じていかに適切なアーキテクチャを組むか、という点が重要と考えています。

 b→dashの場合、リリースして間もないころは、クライアント数も多くなくデータ形式の種類も多くはなかったため、それらを1つのクラスタ上でデータを高速に処理できるAmazon Redshiftを選択しました。それから数年経つと、利用企業数も増え、その分処理するデータ形式の数も多種多様に増えていったため、複雑なデータ処理を高速でできるAmazon S3とAmazon EMRへとアーキテクチャを進化させました。このようにサービスの状況に応じて最適なアーキテクチャは何か?という点を常に見直していくことは大事だと思います。

 AWSのサービスも、時代に合わせて常に更新されているので、今後も最新情報をキャッチアップし、今のb→dashにとって最適なアーキテクチャが何か?ということを今後、私自身も自問自答し続けていきたいと考えています。

AWSソリューションアーキテクトより一言

フロムスクラッチのAWSサービス活用のここがポイント!

 フロムスクラッチさんは、ペタバイトレベルの膨大なデータ量と顧客ごとに異なるデータ形式という複雑さに対して高速な処理スピードと高いコスト効率を実現し、さらに分散処理の安定化など、ビジネス価値に直結する技術課題を明確にした上で技術を選択されています。そして、CTO井戸端さんが「サービスの状況に応じて最適なアーキテクチャは何か?という点を常に見直していくことは大事」と書かれている通り、柔軟にアーキテクチャを進化させてビジネスの成長を加速している点も素晴らしいと思います。さらに成長を続けるフロムスクラッチさんが、次にどのような課題に対して、AWSサービスを活用するのかが楽しみです。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
注目スタートアップから学ぶ、ビジネスの課題を解決するAWSの活用術連載記事一覧

もっと読む

この記事の著者

井戸端 洋彰(フロムスクラッチCTO)(イドバタ ヒロアキ)

 東京大学大学院 航空宇宙工学科出身。 国立天文台と共同で超小型人工衛星Nano-JASMINEの研究開発に携わり、主に超高精度のセンサー機器や光学機器、情報処理基盤の開発を行うかたわら、過去の開発経験のモデル化による設計最適化手法の研究に取り組む。 その後、新卒でアクセンチュアに入社し、オフショア...

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

塚田 朗弘(アマゾン ウェブ サービス ジャパン株式会社)(ツカダ アキヒロ)

 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト。 2011年から生放送系ウェブサービスの開発を経験した後、2013年よりスタートアップ企業にJoin。CTOとしてモバイルアプリ、サーバサイド、AWS上のインフラ管理を担当しつつ、採用やチームマネジメントを行う。2015年8...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11835 2019/12/03 11:00

イベント

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

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

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

メールバックナンバー