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

サーバーレスなエラートラッキングツール faultline と 「SaaSライクな運用」の可能...

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

Serverless Meetup Fukuoka #1

Ken’ichiro Oyama

August 25, 2017
Tweet

More Decks by Ken’ichiro Oyama

Other Decks in Technology

Transcript

  1. 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
  2. エラー   運⽤上の想定内のエラー   ログインエラー   ⼊⼒エラー   Exception  

    運⽤上の想定外のエラー <<こちら   Error   Exception 6 Serverless Meetup Fukuoka #1
  3. 運⽤時のエラーの捕捉   例えば捕捉しない   …   ユーザやクライアントからの連絡ドリブン   「◯◯が動きません」  

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

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

    同じエラーをまとめてくれる   通知先を設定できる   通知頻度も設定できる   エラーの解決を管理できる   過去のエラー詳細を確認できる   etc...   選択できるのならばすぐにでも選択すべき 10 Serverless Meetup Fukuoka #1
  6. まだSaaSを選択できていない理由   費⽤対効果の課題   受託開発の特性上、年間に発⽣するプロジェク トが3桁以上   プロジェクト単位課⾦のサービスは選択しに くい(費⽤対効果を計測できていない)  

    エラー数課⾦でも厳しい可能性がある   データストア先の課題   エラー詳細の保存先として外部サービスを選択 できない場合がある   会社全体での導⼊を考えた場合、できるだけ 例外があるような状況にはしたくない 12 Serverless Meetup Fukuoka #1
  7. 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
  8. 機能   プロジェクト単位でエラーを集約管理   エラーの時系列集計/グラフ(faultline-webui)   エラーの詳細記録   エラーの通知(Slack, GitHub

    Issue, GitLab Issue)   エラーの集約通知   “30イベント以上発⽣したら通知” / ”5回に1回通知” 16 Serverless Meetup Fukuoka #1
  9. 24 Serverless Meetup Fukuoka #1 AWS Lambda Amazon S3 Amazon

    DynamoDB AWS KMS Amazon API Gateway AWS CloudFormation IAM AWS mageged services used by
  10. 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
  11. 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
  12. 柔軟なエラー通知と詳細な確認を得た   エラー捕捉と同時に(かつ頻度を決めて)Slack通知を 受け取れるので素早い対応がしやすくなった   ⾃動でGitHub IssueをOpenしたりReopenしたりする ことでIssueを元にエラーの管理ができるようになった   PHPだけでなくJavaScriptのエラーもカジュアルに捕捉

    できるようになったことで品質の向上をするきっかけ を得た   同じエラーの時系列グラフや各詳細を確認することで エラーの原因にたどりつきやすくなった   (faultline-webui) 34 Serverless Meetup Fukuoka #1
  13. Between "Only mail notify" and "Error tracking services" メール通知 <

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

    ※もともと⾃分で復旧すべきサーバがない おしい
  15. サーバーレスアーキテクチャの可能性   なぜ可能だったのか?   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
  16. さらに“SaaS like”をSaaSに近づけるアイデア   DynamoDB AutoScaling <-New!   faultlineで唯⼀発⽣した障害はDynamoDBのCapacity   faultlineを構成しているAWSリソース⾃体を別

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

    ョンベースの事例はよく聞くが、OSSなツールの運⽤事 例はまだ(⽇本では)少ないはず   faultlineはOSS。コードを⾒ることができるので是⾮   サーバーレスアーキテクチャ周辺の整備はまだ まだはじまったばかりという印象 53 Serverless Meetup Fukuoka #1