Save 37% off PRO during our Black Friday Sale! »

サーバーレスなエラートラッキングツール faultline と 「SaaSライクな運用」の可能性 / Serverless Meetup Fukuoka #1

サーバーレスなエラートラッキングツール faultline と 「SaaSライクな運用」の可能性 / Serverless Meetup Fukuoka #1

Serverless Meetup Fukuoka #1

69b93af68320a590f607c296e8edff73?s=128

Ken’ichiro Oyama

August 25, 2017
Tweet

Transcript

  1. サーバーレスなエラートラッキングツール faultline と 「SaaSライクな運⽤」の可能性 Kenʼichiro Oyama Fusic Co.,Ltd. 2017.8.25 1

    Serverless Meetup Fukuoka #1
  2. Who 2 Serverless Meetup Fukuoka #1

  3. k1LoW   Kenʼichiro Oyama   @k1LoW   Fusic Co.,Ltd. エンジニア

      基盤ユニット テックリード   GitHub organizations   fukuokarb / faultline / emacs-jp / etc.   awspecというAWS⽤のテストツールを作って います   https://github.com/k1LoW/awspec 3 Serverless Meetup Fukuoka #1
  4. アジェンダ   サーバーレスアーキテクチャなエラートラッキ ングツールfaultlineの紹介   実際のFusicにおけるfaultlineの活⽤/運⽤事例   サーバーレスアーキテクチャと”SaaSライク”な 運⽤の可能性 4

    Serverless Meetup Fukuoka #1
  5. アプリケーションにおける エラートラッキング 5 Serverless Meetup Fukuoka #1

  6. エラー   運⽤上の想定内のエラー   ログインエラー   ⼊⼒エラー   Exception  

    運⽤上の想定外のエラー <<こちら   Error   Exception 6 Serverless Meetup Fukuoka #1
  7. つまり運⽤時に顕在化したバグ 7 Serverless Meetup Fukuoka #1

  8. 運⽤時のエラーの捕捉   例えば捕捉しない   …   ユーザやクライアントからの連絡ドリブン   「◯◯が動きません」  

    サーバ内のログで定期的に確認する   app/tmp/logs / syslog / error_log   アプリケーションでキャッチして通知する   encount (CakePHP) / LERN (Laravel)   エラートラッキングサービスで集約する   Airbrake.io / Rollbar / Bugsnag 8 Serverless Meetup Fukuoka #1
  9. エラーをアプリケーションから 直接メールで受け取るツラみ   連続したエラーでメールボックスの容量を圧迫   運⽤時の⼤量アクセスで同じエラーが⼤量通知   会社のメールサーバを圧迫、そして受信がで きなくなる  

    会社のメールサーバでエラー通知を受け取る の禁⽌   どのエラーに対応した/解決したのかがわから ない   メールみない そして迷惑メールへ... 9 Serverless Meetup Fukuoka #1
  10. エラートラッキングサービス(SaaS)   Airbrake.io / Rollbar / Bugsnag / etc...  

    同じエラーをまとめてくれる   通知先を設定できる   通知頻度も設定できる   エラーの解決を管理できる   過去のエラー詳細を確認できる   etc...   選択できるのならばすぐにでも選択すべき 10 Serverless Meetup Fukuoka #1
  11. そう、選択できるのならば 11 Serverless Meetup Fukuoka #1

  12. まだSaaSを選択できていない理由   費⽤対効果の課題   受託開発の特性上、年間に発⽣するプロジェク トが3桁以上   プロジェクト単位課⾦のサービスは選択しに くい(費⽤対効果を計測できていない)  

    エラー数課⾦でも厳しい可能性がある   データストア先の課題   エラー詳細の保存先として外部サービスを選択 できない場合がある   会社全体での導⼊を考えた場合、できるだけ 例外があるような状況にはしたくない 12 Serverless Meetup Fukuoka #1
  13. とはいえ、エラーメール通知は破綻 13 Serverless Meetup Fukuoka #1

  14. 14 Serverless Meetup Fukuoka #1

  15. faultline   Error tracking tool on AWS managed services.  

    AWSのマネージドサービスのみで構築するオープンソ ースのエラートラッキングツール   https://github.com/faultline   コンセプト 1. Simple deploy 2. Manageless 3. POST (errors) with config 4. Between "Only mail notify" and "Error tracking services" 15 Serverless Meetup Fukuoka #1
  16. 機能   プロジェクト単位でエラーを集約管理   エラーの時系列集計/グラフ(faultline-webui)   エラーの詳細記録   エラーの通知(Slack, GitHub

    Issue, GitLab Issue)   エラーの集約通知   “30イベント以上発⽣したら通知” / ”5回に1回通知” 16 Serverless Meetup Fukuoka #1
  17. Fusicにおけるfaultlineの活⽤ 17 Serverless Meetup Fukuoka #1

  18. 11 Projects 3 Languages 62.4k Errors 1.26GB Raw logs 18

    Serverless Meetup Fukuoka #1
  19. 19 Serverless Meetup Fukuoka #1 8< Months

  20. 1 Down 0 Recovery 20 Serverless Meetup Fukuoka #1 ※DynamoDBのCapacityに引っかかった

    ※もともと⾃分で復旧すべきサーバがない
  21. AWSマネージドサービスのみで構築 (マネージドサービス: AWSがサーバが管理) 21 Serverless Meetup Fukuoka #1

  22. サーバーレスアーキテクチャ 22 Serverless Meetup Fukuoka #1

  23. Manageless OSSでありながら SaaSに近い感覚で運⽤できている (※注意: 決して運⽤ゼロにはなりませんよ!!) 23 Serverless Meetup Fukuoka #1

  24. 24 Serverless Meetup Fukuoka #1 AWS Lambda Amazon S3 Amazon

    DynamoDB AWS KMS Amazon API Gateway AWS CloudFormation IAM AWS mageged services used by
  25. 25 Serverless Meetup Fukuoka #1 AWS Lambda Amazon S3 Amazon

    DynamoDB AWS KMS Amazon API Gateway AWS CloudFormation IAM $0.1 /month $0.03 /month $0 /month $0 /month $0.5 /month $0 /month $1 /month AWS mageged services used by
  26. 費⽤⾯も解決 26 Serverless Meetup Fukuoka #1

  27. インストール 27 Serverless Meetup Fukuoka #1

  28. faultlineのインストール 28 Serverless Meetup Fukuoka #1  $ git clone https://github.com/faultline/faultline.git

     $ cd faultline/  $ npm install  $ cp config.default.yml config.yml  $ [Edit config.yml]  $ AWS_PROFILE=XXXXXX npm run deploy by
  29. Simple deploy 29 Serverless Meetup Fukuoka #1

  30. faultlineを導⼊したことによる効果 30 Serverless Meetup Fukuoka #1

  31. Slack 31 Serverless Meetup Fukuoka #1

  32. GitHub Issue 32 Serverless Meetup Fukuoka #1

  33. “$ is not defined” 33 Serverless Meetup Fukuoka #1

  34. 柔軟なエラー通知と詳細な確認を得た   エラー捕捉と同時に(かつ頻度を決めて)Slack通知を 受け取れるので素早い対応がしやすくなった   ⾃動でGitHub IssueをOpenしたりReopenしたりする ことでIssueを元にエラーの管理ができるようになった   PHPだけでなくJavaScriptのエラーもカジュアルに捕捉

    できるようになったことで品質の向上をするきっかけ を得た   同じエラーの時系列グラフや各詳細を確認することで エラーの原因にたどりつきやすくなった   (faultline-webui) 34 Serverless Meetup Fukuoka #1
  35. これはSaaSを導⼊したような効果では? 35 Serverless Meetup Fukuoka #1

  36. Between "Only mail notify" and "Error tracking services" メール通知 <

    faultline < SaaS 36 Serverless Meetup Fukuoka #1
  37. 1 Down 0 Recovery 37 Serverless Meetup Fukuoka #1 ※DynamoDBのCapacityに引っかかった

    ※もともと⾃分で復旧すべきサーバがない おしい
  38. Not SaaS, but “SaaS like” 38 Serverless Meetup Fukuoka #1

  39. では、サーバーレスアーキテクチャな faultlineはどんな実装なのか? 39 Serverless Meetup Fukuoka #1

  40. faultlineのアーキテクチャ 40 Serverless Meetup Fukuoka #1

  41. Only 3 storage 41 Serverless Meetup Fukuoka #1

  42. Only 2,248 LOC 42 Serverless Meetup Fukuoka #1 ※Lines of

    Code
  43. Only 2 contributors 43 Serverless Meetup Fukuoka #1

  44. たったこれだけのコードベースで ⼤きな効果を得られている 44 Serverless Meetup Fukuoka #1

  45. faultline以外の例 45 Serverless Meetup Fukuoka #1

  46. hubedit   https://hubedit.com   GitHubのプライベートリポジトリをメモツール にするサービス   GitHubを使っているので正確にはAWSフルマネージ ドではない 46

    Serverless Meetup Fukuoka #1
  47. hubedit アーキテクチャ 47 Serverless Meetup Fukuoka #1

  48. Only 1,717 LOC 48 Serverless Meetup Fukuoka #1 ※Lines of

    Code
  49. サーバーレスアーキテクチャの可能性 49 Serverless Meetup Fukuoka #1

  50. サーバーレスアーキテクチャの可能性   なぜ可能だったのか?   AWSマネージドサービス (PaaS) を活⽤したからにほかならない   ちょっと前のPaaSと同じ世界なのか?  

    個⼈的にはIaaSとPaaSの間のような感覚   AWS Lambdaの登場が⼤きかったかも   この次はPaaSを ”組み合わせて作る” 世界がくるのかも   e.g. Event Gateway / Azure Event Grid   まだベンダーロックインはあるが、これからあるいは..?   実装において今までの開発と⽐べて変化はあったか?   ステートレスな実装を環境から求められる(FaaS)   その結果、管理がほぼ不要になる(そして良い実装へ)   faultlineの最後のコンセプト “POST with config” 50 Serverless Meetup Fukuoka #1
  51. さらに 51 Serverless Meetup Fukuoka #1

  52. さらに“SaaS like”をSaaSに近づけるアイデア   DynamoDB AutoScaling <-New!   faultlineで唯⼀発⽣した障害はDynamoDBのCapacity   faultlineを構成しているAWSリソース⾃体を別

    のサーバーレスアーキテクチャで監視   あとで確認するために「faultline関連のCloudWatchメ トリクスをfaultlineで取得できるようにする」のもサー バーレスアーキテクチャだからこそ突⾶ではない   別リージョンにもfaultlineを構築してRoute53 でDNSフェイルオーバー   どこまでやるか、だけ 52 Serverless Meetup Fukuoka #1
  53. まとめ   faultlineというエラートラッキングツールの開 発/運⽤から、サーバーレスアーキテクチャの可 能性について考えてみた   ⼩さいコードベースでもSaaSのような運⽤ができるも のが完結するものが作れる可能性   サーバーレスアーキテクチャという⽂脈で、プロダクシ

    ョンベースの事例はよく聞くが、OSSなツールの運⽤事 例はまだ(⽇本では)少ないはず   faultlineはOSS。コードを⾒ることができるので是⾮   サーバーレスアーキテクチャ周辺の整備はまだ まだはじまったばかりという印象 53 Serverless Meetup Fukuoka #1
  54. Thank you!  Fusicはテクノロジーが  好きなエンジニアを募集しています  https://fusic.github.io 54

  55. Serverless Meetup Fukuoka #1 55