• 検索結果がありません。

テクロスにおけるAWS活用の歩み ソーシャルゲーム運用とデータレイクについて AWS SUMMIT TOKYO 2019

N/A
N/A
Protected

Academic year: 2022

シェア "テクロスにおけるAWS活用の歩み ソーシャルゲーム運用とデータレイクについて AWS SUMMIT TOKYO 2019"

Copied!
66
0
0

読み込み中.... (全文を見る)

全文

(1)

テクロスにおけるAWS活用の歩み


ソーシャルゲーム運用とデータレイクについて

AWS SUMMIT TOKYO 2019

(2)

自己紹介

髙橋 北斗(たかはし ほくと)

● 株式会社テクロス システム開発部マネージャー

● 経歴

○ インフラチームリーダー

■ ソーシャルゲームのインフラ基盤の開発・運用

■ 各種ツール、サービスの導入、管理

■ データ分析基盤の設計、導入

○ 現在は神姫プロジェクトのエンジニアマネージャー

(3)

About us

株式会社テクロス  Techcross inc.

2009年  設立 

2012年  ソーシャルゲーム開発開始

2018年~ UNITIA - 神託の使徒 × 終焉の女神 - リリース  2016年  神姫PROJECT リリース

(4)

目次

● はじめに

● テクロスにおける AWS 活用の取り組み

○ 神姫 PROJECT の事例

○ UNITIA の事例

● データレイク導入について

○ データレイク導入までの課題

○ データレイク構築について

● 最後に

(5)

はじめに

テクロスのインフラの3年前の状況は、

● AWS未使用、AWSの知見も社内にほとんどなし

● インフラ構築はすべて手動

● マネージドサービスもほとんど使わず

● ログの分析基盤もなく、バラバラなログ管理

な感じでした ……

(6)

はじめに

そんな状況から、この3年でテクロスのインフラが、

どう変わっていったか、どう変えていったかを

お話したいと思います。

(7)

神姫プロジェクトの事例

(8)

神姫PROJECTの事例

神姫PROJECT

● 2016年3月末リリース

● ターン制RPG

● DMM GamesにてWebブラウザ版

● iOS, Androidのネイティブアプリをリリース

● 2019年4月に登録者数500万人を突破

(9)

神姫PROJECTの事例

リリース直後、別のクラウドベンダーを利用していた

その中で、大きな課題が2つあった。

● インスタンスが不安定

● データベースが不安定、性能が出ない。

(10)

神姫PROJECTの事例

リリース直後(主要部)

(11)

神姫PROJECTの事例

インスタンスが不安定

● 当時利用していたVMにおいて、CPUのStealが発生

● 対策として

○ アプリケーション動作に必要以上のメモリを確保する

■ 必要以上のお金がかかる

○ 専有ホストを用意してもらう

■ どの専有ホストにどのVMを入れるかのパズルが発生

● VM単体の安定性も低く、メンテナンスも多かった。

(12)

神姫PROJECTの事例

データベースが不安定、性能が出ない

● 当時メインデータベースにMySQL Clusterを使用していた

● アーキテクチャ的にVMと相性が悪いミドルウェア

○ 巨大クラスタ組んでも中々性能が出ない

● 突然落ちる、原因は不明

● 運用も煩雑で、データのリストアの取り回しも悪い 性能、安定性、運用コストに課題があった。

(13)

神姫PROJECTの事例

リリース2ヶ月後、MySQL Clusterが落ちてしまう事件。

復旧しきれず、3日のメンテナンスを入れてロールバック。

根本的な対策を行わないと無理と判断。

アマゾン ウェブ サービス (AWS) への移行を決断。

(14)

神姫PROJECTの事例

AWSを選んだ理由

● クラウドサービスとして最大手で安心感があった。

● VMの安定性も高い

● Amazon Auroraのパフォーマンスが高い

● 問い合わせ後のサポート体制、契約までのスピード感が非常に良 かった。

AWSへの移行を決めたものの、当時、社内のAWSのナレッジは、ほぼ 存在しなかった。

(15)

神姫PROJECTの事例

移行スケジュール

AWSのナレッジが社内にない状態ながら、サービスの安定性が危機的 な状況だったので、急いで移行する必要があった。

目標は5ヶ月。

(16)

神姫PROJECTの事例

AWS環境設計と構成管理ツールの見直し

マネージドサービスを積極的に導入することで、運用コストの軽減を目 指す。

VMで管理するミドルウェアが大幅に減るのもあり、構成管理ツール

(Chef)の見直し、修正も行っていった。

(17)

神姫PROJECTの事例

移行前の構成(主要部)

(18)

神姫PROJECTの事例

移行後の構成(主要部)

(19)

神姫PROJECTの事例

負荷試験

● AWS環境の負荷試験を行った

○ Amazon Auroraのパフォーマンスがボトルネックになったので、

チューニングを行う

○ クエリの見直し、外部キーの変更など

○ PHPの持続的接続の導入など、AWS 技術サポートの方にアド バイスをいただいた

● チューニングの結果、なんとか負荷目標を達成

○ 移行後に負荷の問題が再び顕在化したので、最終的に、データ ベースの分割を行った

(20)

神姫PROJECTの事例

AWSへの移行

● MySQL ClusterからAmazon Auroraにレプリケーションを貼るのが 困難だったため、mysqldumpを並列して取り、Auroraに入れる素朴 なやり方を取った

○ レコードのチェックスクリプトも合わせて作成

● 24時間のダウンタイムをビジネス側に許容してもらった

● 移行試験を行い、手順の確認

● 移行本番も、滞りなく進行できた。

(21)

神姫PROJECTの事例

移行してよかったこと

● インスタンスの安定度が格段に増した

○ Stealで悩まされなくなった。

○ VMも全然落ちなくなった。落ちても自動復帰

● マネージドサービス導入により運用負荷が格段に下がった

○ 特にAmazon Auroraは運用が非常に楽

● APIを利用したインフラ構築の自動化ができるようになった

(22)

神姫PROJECTの事例

移行してよかったこと

その後も起きる負荷対策、不具合対応についても、AWS技術サポート、

ソリューションアーキテクトの方々に非常に助けてもらっている。

AWSの一番良いサービスは何かと聞かれたらサポートと答える。

(23)

開発・運用タイトル『UNITIA - 神託の使徒 × 終焉の女神 - 』

(24)

UNITIAの事例

UNITIA 神託の使徒×終焉の女神

● 2018年7月末リリース

● セミオートバトルRPG

● プレイヤー同士で戦えるアリーナモード搭載

● DMM GamesにてWebブラウザ版

● iOS, Androidのネイティブアプリをリリース

(25)

UNITIAの事例

構成(主要部)

(26)

UNITIAの事例

構成は神姫と殆ど変わってません。

何が変わったのか?

構成をコード管理するようにしました。

(27)

UNITIAの事例

神姫PROJECT運用時に発生していた課題

基本的にマネジメントコンソールで手動でリソースの追加、変更を行って いた。

● 運用上、新しいリソースの追加が必要になったとき、複数ある環境 に全部導入していくのが運用上コスト

● 手動でやっているので設定漏れ、設定違いが起きる

○ 事故の元に

(28)

UNITIAの事例

Terraformの導入

冪等性を保った上で、宣言的にインフラをコードで管理するツールがほ しい。

Hashicorp Terraformの導入を検討することに。

● Hashicorp社が手がけるOSS

● インフラ構築や設定をコード(DSL)で宣言的に記述する

● 様々なクラウドベンダーをサポート

(29)

UNITIAの事例

Terraformの導入の障壁

● Terraformを本番環境で使うことについては議論、懸念があった

● メンバー間の温度差もあった

○ コード管理した方が事故りやすいのでは?

○ コード管理など理想論にすぎない、というベテランからの意見も あった

(30)

UNITIAの事例

Infrastructure as Codeの読書会実施

毎週、読書会の時間を取り、半年ほどかけて、オライリー・ジャパンの

『Infrastructure as Code』のほぼ全ての章をインフラチーム全員で読ん だ。

概念の理解、達成したい理想形の共有 現在運用中の自社サービスとのギャップ の洗い出しを行っていった。

(31)

UNITIAの事例

Infrastructure as Codeの読書会を実施

この取組で、

● チームにおける共通言語、共通概念の獲得

● Infrastructure as Codeに対するチームの認識の統一 が図れるようになった。

懸念を表明していたベテランが一番Terraform導入に前向きに。

(32)

UNITIAの事例

Terraformの構成

本番環境、ステージング環境、デバッグ環境で同じコードベースでの Terraform管理を実現

Workspace機能を利用

(33)

UNITIAの事例

Terraformの構成

実行範囲を分割

(34)

UNITIAの事例

個人用開発環境のセルフサービス化

(35)

UNITIAの事例

Terraformの導入結果

Terraform導入により、

● 複数ある同等環境への変更の適用が格段に楽になった

● 変更内容、タイミングの管理がやりやすくなった

● 開発環境と本番環境の意図せぬ差異がなくなり、事故要因を減らせ た

(36)

データレイク導入について

(37)

データレイク導入までの課題

ソーシャルゲーム運用には様々なログが必要

● ユーザー行動ログ

● APIアクセスログ

● アプリケーションのエラーログ

● 課金、ガチャ結果などのログ

● データベースのログ(スロークエリログなど)

  

etc...

(38)

データレイク導入までの課題

ログは様々な用途に使う

● KPI分析

● CS対応

● 不具合調査

● 不正アクセス検知(不正ユーザやBOTユーザ検知)

   etc...

(39)

データレイク導入までの課題

このような様々なログを

昔はどのように扱っていたかというと・・・

(40)

データレイク導入までの課題

etc…

ログの保存箇所、形式がバラバラ!

(41)

データレイク導入までの課題

ログの保存箇所、形式がバラバラ

● ログを組み合わせて分析するのが難しい

● ログの管理コストが高い

● ログを閲覧するインターフェイスが違い、学習コストが高い

○ DBクライアント+SQL

○ Kibana+クエリ

○ コンソール+シェルのコマンド 他にも問題点が・・・

(42)

データレイク導入までの課題

ログの量が多くて辛い

● ログの量は1日あたり数百GB over

● Elasticsearchはログ単価が高いので長期保存に適さない

● MySQLはテーブルにデータを溜めすぎるとパフォーマンスが出なく

なる。容量の限界がある

● ログを一定期間経過後捨てると、数ヶ月〜年単位で古いログを見る 必要があったときに困る

(43)

データレイク導入までの課題

保守が大変

● ログデータを直に入れているとMySQLやElasticsearchインスタンス の障害時欠損する可能性がある

● 容量、スペックの管理も必要

● ログ構造、テーブル構造の変更に弱い

● 保守作業をサービスのメンテナンスと合わせる必要がある

(44)

データレイク構築について

(45)

データレイク構築について

やりたいこと

● いろんなログを一つの基盤に集約したい

● 全部のログを長期間保存したい

● 保守がしやすい形にしたい

(46)

データレイク構築について

どうしよう 🤔

考えた結果は

(47)

データレイク構築について

全部ログは Amazon S3 + Amazon Athena に集約

(48)

データレイク構築について

S3+Athenaのいいところ

● S3のデータ保存単価が安い

○ 東京リージョンのS3標準ストレージ月額料金:0.023USD/GB〜

● Athenaはクエリ実行時にのみ、料金が発生

● AthenaはPresto互換の強力な分析用SQLが使える

● Amazon Kinesis Data Firehoseでマネージドでデータを放り込める

○ 加工は別途必要、AWS Glueを使う

(49)

データレイク構築について

Amazon S3+Amazon Athena に全部集約するために

変えていく

(50)

データレイク構築について

行動ログ

(51)

データレイク構築について

行動ログ

様々な種類の行動ログを送信:

(52)

データレイク構築について

行動ログ

行動ログ種別に分割

(53)

データレイク構築について

行動ログ

重複排除とParquetに変換 テーブルスキーマは自動判別

(54)

データレイク構築について

DB保存のログデータ

(55)

データレイク構築について

DB保存のログデータ

別AWSアカウントにリストア

ログ取得後、開発やCS用途にも使う

(56)

データレイク構築について

DB保存のログデータ

テーブルにクエリを投げ、Json化してS3へ保存 日毎型:その日のテーブルデータすべてを保存 追記型:前日との差分のみ保存

(57)

データレイク構築について

DB保存のログデータ

重複排除とParquet 変換

(58)

APIログ、エラーログ

データレイク構築について

(59)

データレイク構築について

Amazon S3Amazon Athena に全部集約していく

(60)

データレイク構築について

Redash経由でのアクセス

● RedashからAthenaに対し接続、SQL発行

● プランナーやマーケットチームにクエリを書いてもらうことでKPI分析 をスムーズに

● ダッシュボードで見える化

● Alert機能を使ってAPI速度やエラー件数のアラートをSlackに

(61)

データレイク構築について

(62)

データレイク構築について

今後の課題

● より運用コストを最適化するための取り組みをしていきたい

○ ログ形式の自動判別機能の整理、強化

○ DB保存ログ追加の手作業の撲滅

● 分析基盤の活用強化を行っていきたい

○ RedashのKPIデータダッシュボードの充実

○ CSチームが使いやすいインターフェイスの準備

○ より本格的なデータ分析への活用

(63)

最後に

(64)

最後に

ここまでで紹介した以外に、様々なツールやサービスを導入して きた。どれも 3 年前にはなかったもの。

https://stackshare.io/techcross-inc

(65)

最後に

大事にしている価値観

● 新しいツールやサービスを積極的に検証、導入する

○ 最も技術の進歩が激しい、新しいものがどんどん出てくるので、

もたもたしてるとあっという間にレガシーになる

○ 逆に新興、中小でもサービスをうまく使えば追いつける

● その上でベストプラクティスを大事にする

○ ツールやサービスの正しい使い方を心がける

■ 当初は良くても途中で方向性がずれてくる

■ 正しい使い方はサービスの中の人が知っている

(66)

最後に

ご清聴ありがとうございました。

参照

関連したドキュメント

我が国の場合,過去にしば しば活動した ことが知られている断)凶にお いても平均約千年 に一回位,一般のものでは平均約千年から数万年に 1

そこで計画に実効性を持たせるためには,届け出があ った際に「石積みを修理してくれる仕組みがあります

このドキュメントでは、AWS Marketplace で提供されている Amazon マシンイメージ (以下 AMI) を使用し て、intdash サーバー (以下

中世 にお ける山城築城技術 の進歩 について 歴史学教室 錦 は じめ に =問 題 の 所 在 攻城戦 における「戦 いの場」の変化 を通 して ,城

Amazon Simple Queue Service (SQS)

室内被害を再現する解析技術開発も必要となり ます。更に、シミュレーションを耐震性評価等 に活用するために

LogDB レポート ログ WG~AD版 ログ保存 ログ送信 レポート閲覧 LogDB (Archive) Amazon S3 ログアーカイブ 保存

そこで、以下のように行ってこの問題を解決しま