Slide 1

Slide 1 text

株式会社マネーフォワード 2018年02月22日 「Fastlyのログをサーバレスで可視化してみた」 Yosuke Suzuki

Slide 2

Slide 2 text

自己紹介 2 Yosuke Suzuki  Monye Forward,Inc. (CISO室 サービスインフラグループ) ● 経歴(ほぼずっと金融のインフラエンジニア) ○ 2005~2008 Fujitsu FIP, Inc. ○ 2008~2014 Simplex Technology, Inc. ○ 2015~2016 American Family Life Assurance Company of  Columbus( Aflac ) ○ 2017~ Money Forward, Inc. © Money Forward,Inc.

Slide 3

Slide 3 text

マネーフォワードのご紹介 (一瞬で済ませる) 3

Slide 4

Slide 4 text

Mission/Vision/Value 個人のお金の悩みや不安の解消、事業者の経営改善に貢献し、 日本でNo1の「お金のプラットフォーム」になることを目指しています。 Mission お金を前へ。人生をもっと前へ。 「お金」は、人生においてツールでしかありません。しかし「お金」とは、自身と家族の身を守るため、また夢を実現するために必要不可欠な存在でもありま す。 私たちは「お金と前向きに向き合い、可能性を広げることができる」サービスを提供することにより、ユーザーの人生を飛躍的に豊かにすることで、より良い 社会創りに貢献していきます。 Vision すべての人の、「お金のプラットフォーム」になる。 オープンかつ公正な「お金のプラットフォーム」を構築すること、本質的なサービスを提供することにより、個人や法人すべての人のお金の課題を解決しま す。 Value User Focus 私たちは、いかなる制約があったとしても、常にユー ザーを見つめ続け、本質的な課題を理解し、ユーザー の想像を超えたソリューションを提供します。 Technology Driven 私たちは、テクノロジーこそが世界を大きく変えること ができると信じています。テクノロジーを追求し、それ をサービスとして社会へ提供していくことで、イノベー ションを起こし続けます。 Fairness 私たちは、ユーザー、社員、株主、社会などのすべて のステークホルダーに対してフェアであること、オープ ンであることを誓います。 4

Slide 5

Slide 5 text

提供サービス PFM(Personal Financial Management) 事業 自動家計簿・資産管理サービス ビジネス向けクラウドサービス 5 MFクラウド事業 © Money Forward,Inc.

Slide 6

Slide 6 text

Fastlyを使ってみました 6

Slide 7

Slide 7 text

Fastly導入してみて © Money Forward,Inc. 7 ● 全てAPIで操作でき、コード化できる ● コンフィグ伝搬、キャッシュ削除が高速(数〜十数秒程度) ● LB、WAF、イメージオプティマイザとCDNに留まらないリッチな機能 ● エンジニアのサポートが手厚い ● しかも安いです。 ELBとリバースプロキシを Fastlyで置き換える形で使ってます。 サーバを一つ排除できた。 (サーバレスということなので )

Slide 8

Slide 8 text

個人的に最高なのは 柔軟なコンフィグレーション (これのお陰で弊社は セキュアなCDNを実現できた) 8

Slide 9

Slide 9 text

ログ設定の柔軟性を活かした ログの可視化事例をお見せします (サーバレスで実現した) 9

Slide 10

Slide 10 text

国別リクエスト数。海外からも使ってくれてる。 © Money Forward,Inc. 10 ● FastlyからGeoロケーショ ン情報を取得。 ● リクエストを数えて、地図 にマッピング

Slide 11

Slide 11 text

クライアント別リクエスト数。最多リクエストはRuby!? 11

Slide 12

Slide 12 text

MFって会社をBANするところでしたw 12

Slide 13

Slide 13 text

どのように 実現しているのか? (本題) 13

Slide 14

Slide 14 text

こんなシステム構成 © Money Forward,Inc. 14 ● ストリーミングインサートの費用削減の為に、GCSを挟んでBigQueryヘ。 ● GKEで5分に1回、GCSからBigQueryにアップロードするようにリクエスト。 ● 注意点2点。 ○ BQにはアップロード回数に上限あり。(1分に1回とかダメ) ○ GCSとBQのリージョンは、揃える。 分けるとトラフィック料金がかかり、GCS挟む意味薄くなる。

Slide 15

Slide 15 text

あれ!? 15

Slide 16

Slide 16 text

16 コンテナ使ってるよ。 サーバレス is 何??

Slide 17

Slide 17 text

本当はこんな構成にしたかった © Money Forward,Inc. 17 ● fastlyからGCSに5分に1回ログ転送。 ● GCSにログが保管された事をトリガーにCloudfunctionがコールされ、BigQueryに アップロード

Slide 18

Slide 18 text

Question: 何故やらなかったのか? (Cloudfunctionのアンチパターンご紹介) 18

Slide 19

Slide 19 text

Answer: ログファイル多すぎる。 5分に1回Fastlyのエッジサーバの台数分、 数十ファイルのログが送られてくる。 一個ずつアップロードして、 数十のファンクションなんて立ち上げてられない。 19

Slide 20

Slide 20 text

Question: 複数ファイル指定して 一度にアップロードさせれば ログのファイル数なんて関係ないよ。 ↓こんな感じでしょ!?  $ bq load \    my_dataset.my_table \   gs://my_bucket/* 20

Slide 21

Slide 21 text

Answer: ダメです。 ファイル操作毎に functionがcallされます。 つまり、数十の同じfunctionが1度にcallされる。 ログが多重にアップロードされる。 排他制御? 成功する1つfunctionと 排他されるだけの大量のfunctionって。。。 21

Slide 22

Slide 22 text

Question: じゃあ無理せず、 ファイル1個ずつ アップロードさせなよ。 22

Slide 23

Slide 23 text

Answer: ダメです。 先ほど言った通り、 BigQueryには1日のアップロード回数に 上限あります。 5分に1回、数十ファイルだと上限行きます。 (1 日あたりの制限: 1 日あたりテーブルごとに 1,000 個の読み込みジョブ) 出展:https://cloud.google.com/bigquery/quotas#import 23

Slide 24

Slide 24 text

 詰んだ! \(^o^)/ 24

Slide 25

Slide 25 text

と、言うわけで、この構成。 © Money Forward,Inc. 25 ● コンテナで、5分に1回、複数ファイルを同時にアップロード

Slide 26

Slide 26 text

思いつくサーバレス案 ・LambdaでBQアップロードを時刻起動 ・GAEでBQアップロードを時刻起動 他にも、いいアイデアあれば、 教えてください。 googleさん、 CloudFunctionにも 時刻をトリガーにする機能を お待ちしてます。 26

Slide 27

Slide 27 text

新しい技術やサービス大好き!そんな仲間、募集しています。 インフラ https://www.wantedly.com/projects/7727 ご静聴ありがとうございました! 27