GCPだから出来た
自動Web監視システムのインフラ構築(仮)
自己紹介
名前:萬代陽一
普段はゲームAPIとか作ったりする仕事をしています
VisualStudioCodeおじさん
こういうサービスをリリースしました
どんなシステムか
ウェブサイトを監視するサービス
  登録カンタン
どんなシステムか
ウェブサイトを監視するサービス
  登録カンタン
    会員登録 → URL登録 → 監視開始
どんなシステムか
ウェブサイトを監視するサービス
  簡単な割に色々する
どんなシステムか
ウェブサイトを監視するサービス
  簡単な割に色々する
    レスポンスタイム監視    スナップショット比較
    レスポンスコード監視    HTML比較
    ドメイン有効期限監視    SSL証明書有効期限監視
    リンク切れ監視       マルウェア監視
    ソーシャルエンジニアリング監視
GCPを選んだ理由
Cloud Datastore を使いたかった
 各種監視データなど細かいデータの蓄積に最適
Cloud Storage の値段が安い
 監視対象のスナップショットを撮りまくるシステムなので
Cloud Pub/Sub を使ってスケーラブルな感じに
 いざという時は数の暴力で乗り切る
Cloud Architect の勉強がてら → 無事合格!
構成図
Cloud
Storage
Compute
Engine
Cloud Load
Balancing
Cloud SQL
Cloud
Datastore
Cloud
Pub/Sub
Cloud
Functions
Logging
Error
Reporting
Monitoring
Google Compute Engine
言わずと知れたVM環境
起動が速い
仕組み上、GCE を起点としたシステムになっている
サーバーレス化できなかった
監視処理は GCE で実行
  監視元の IPアドレス問題
  1回の監視の実行時間が監視先によってまちまち
  画面のスナップショットを撮影する仕組みが環境を選ぶ
Cloud Datastore
監視データの主な置き場所
  約300サイト程度の詳細な監視データ
    15分に1回の頻度(フリープラン)
    1分に1回の頻度(有料プラン)
Cloud Datastore
監視データの主な置き場所
Cloud Datastore の設計で悩む日々
祖先クエリ、エンティティ、種類、インデックス……。
  ソートできない → インデックスの再作成 → インデックスのエクササイズ
SQL 脳なので、うまくできてるかは謎。
  ただし、データはちゃんと入っているし出せているのでOKとしたい
トランザクションは試せなかったので試したい
Cloud Storage
ここにも監視データ
  スナップショットデータ
  HTMLデータ
Cloud Storage
ここにも監視データ
  スナップショットデータ
  HTMLデータ
毎日取得 × 約60日分
  サイトの縦の大きさに依存するファイルサイズ → サイズが読めない
Cloud Storage
ここにも監視データ
  スナップショットデータ
  HTMLデータ
毎日取得 × 約60日分
  サイトの縦の大きさに依存するファイルサイズ → サイズが読めない
自動削除ができるので運用は楽
Cloud Pub/Sub
監視処理のタスクキューを積み上げる
どんどん捌く、の繰り返し
Cloud Pub/Sub
監視処理のタスクキューを積み上げる
どんどん捌く、の繰り返し
特にリンク切れ監視は、監視対象のサイトからのリンク先を全て確認するので
1件ずつ個別処理できるように全件 Pub/Sub に登録している
Cloud Pub/Sub
監視処理のタスクキューを積み上げる
どんどん捌く、の繰り返し
特にリンク切れ監視は、監視対象のサイトからのリンク先を全て確認するので
1件ずつ個別処理できるように全件 Pub/Sub に登録している
データも一緒にPubするとSubした時に便利
Cloud Pub/Sub は便利だが
順序指定がしたくなる時もある
メッセージキューが見たくなる時もある
これももう少しうまく使いたい
余談:プリエンプティブインスタンスを使い倒す
GCE のプリエンプティブインスタンスで監視処理ができないか
  課題
    起動し続けることはできない(最大24時間)
    起動した瞬間に落とされることも
結論
  ミッションクリティカルな処理には不向き
  (ドキュメントに書いてある)
まとめ
Appmill というサービスを GCP 上で作りました。
よく言われてますが、データ分析をするなら、出だしから GCP にすると連携が取りやす
くていいと思います。
GPC最高!
Thank you
and have fun GUPUG Kansai!

GCPだから出来た 自動Web監視システムのインフラ構築(仮)