Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fastly log visualization

suzuki_yosuke
February 22, 2018

Fastly log visualization

Introduction of Fastly log visualization case in Money forward

suzuki_yosuke

February 22, 2018
Tweet

More Decks by suzuki_yosuke

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己紹介
    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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. Fastlyを使ってみました
    6

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. あれ!?
    15

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide