Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
サーバーレスなエラートラッキングツール faultline と 「SaaSライクな運⽤」の可能性 Kenʼichiro Oyama Fusic Co.,Ltd. 2017.8.25 1 Serverless Meetup Fukuoka #1
Slide 2
Slide 2 text
Who 2 Serverless Meetup Fukuoka #1
Slide 3
Slide 3 text
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
Slide 4
Slide 4 text
アジェンダ サーバーレスアーキテクチャなエラートラッキ ングツールfaultlineの紹介 実際のFusicにおけるfaultlineの活⽤/運⽤事例 サーバーレスアーキテクチャと”SaaSライク”な 運⽤の可能性 4 Serverless Meetup Fukuoka #1
Slide 5
Slide 5 text
アプリケーションにおける エラートラッキング 5 Serverless Meetup Fukuoka #1
Slide 6
Slide 6 text
エラー 運⽤上の想定内のエラー ログインエラー ⼊⼒エラー Exception 運⽤上の想定外のエラー <<こちら Error Exception 6 Serverless Meetup Fukuoka #1
Slide 7
Slide 7 text
つまり運⽤時に顕在化したバグ 7 Serverless Meetup Fukuoka #1
Slide 8
Slide 8 text
運⽤時のエラーの捕捉 例えば捕捉しない … ユーザやクライアントからの連絡ドリブン 「◯◯が動きません」 サーバ内のログで定期的に確認する app/tmp/logs / syslog / error_log アプリケーションでキャッチして通知する encount (CakePHP) / LERN (Laravel) エラートラッキングサービスで集約する Airbrake.io / Rollbar / Bugsnag 8 Serverless Meetup Fukuoka #1
Slide 9
Slide 9 text
エラーをアプリケーションから 直接メールで受け取るツラみ 連続したエラーでメールボックスの容量を圧迫 運⽤時の⼤量アクセスで同じエラーが⼤量通知 会社のメールサーバを圧迫、そして受信がで きなくなる 会社のメールサーバでエラー通知を受け取る の禁⽌ どのエラーに対応した/解決したのかがわから ない メールみない そして迷惑メールへ... 9 Serverless Meetup Fukuoka #1
Slide 10
Slide 10 text
エラートラッキングサービス(SaaS) Airbrake.io / Rollbar / Bugsnag / etc... 同じエラーをまとめてくれる 通知先を設定できる 通知頻度も設定できる エラーの解決を管理できる 過去のエラー詳細を確認できる etc... 選択できるのならばすぐにでも選択すべき 10 Serverless Meetup Fukuoka #1
Slide 11
Slide 11 text
そう、選択できるのならば 11 Serverless Meetup Fukuoka #1
Slide 12
Slide 12 text
まだSaaSを選択できていない理由 費⽤対効果の課題 受託開発の特性上、年間に発⽣するプロジェク トが3桁以上 プロジェクト単位課⾦のサービスは選択しに くい(費⽤対効果を計測できていない) エラー数課⾦でも厳しい可能性がある データストア先の課題 エラー詳細の保存先として外部サービスを選択 できない場合がある 会社全体での導⼊を考えた場合、できるだけ 例外があるような状況にはしたくない 12 Serverless Meetup Fukuoka #1
Slide 13
Slide 13 text
とはいえ、エラーメール通知は破綻 13 Serverless Meetup Fukuoka #1
Slide 14
Slide 14 text
14 Serverless Meetup Fukuoka #1
Slide 15
Slide 15 text
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
Slide 16
Slide 16 text
機能 プロジェクト単位でエラーを集約管理 エラーの時系列集計/グラフ(faultline-webui) エラーの詳細記録 エラーの通知(Slack, GitHub Issue, GitLab Issue) エラーの集約通知 “30イベント以上発⽣したら通知” / ”5回に1回通知” 16 Serverless Meetup Fukuoka #1
Slide 17
Slide 17 text
Fusicにおけるfaultlineの活⽤ 17 Serverless Meetup Fukuoka #1
Slide 18
Slide 18 text
11 Projects 3 Languages 62.4k Errors 1.26GB Raw logs 18 Serverless Meetup Fukuoka #1
Slide 19
Slide 19 text
19 Serverless Meetup Fukuoka #1 8< Months
Slide 20
Slide 20 text
1 Down 0 Recovery 20 Serverless Meetup Fukuoka #1 ※DynamoDBのCapacityに引っかかった ※もともと⾃分で復旧すべきサーバがない
Slide 21
Slide 21 text
AWSマネージドサービスのみで構築 (マネージドサービス: AWSがサーバが管理) 21 Serverless Meetup Fukuoka #1
Slide 22
Slide 22 text
サーバーレスアーキテクチャ 22 Serverless Meetup Fukuoka #1
Slide 23
Slide 23 text
Manageless OSSでありながら SaaSに近い感覚で運⽤できている (※注意: 決して運⽤ゼロにはなりませんよ!!) 23 Serverless Meetup Fukuoka #1
Slide 24
Slide 24 text
24 Serverless Meetup Fukuoka #1 AWS Lambda Amazon S3 Amazon DynamoDB AWS KMS Amazon API Gateway AWS CloudFormation IAM AWS mageged services used by
Slide 25
Slide 25 text
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
Slide 26
Slide 26 text
費⽤⾯も解決 26 Serverless Meetup Fukuoka #1
Slide 27
Slide 27 text
インストール 27 Serverless Meetup Fukuoka #1
Slide 28
Slide 28 text
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
Slide 29
Slide 29 text
Simple deploy 29 Serverless Meetup Fukuoka #1
Slide 30
Slide 30 text
faultlineを導⼊したことによる効果 30 Serverless Meetup Fukuoka #1
Slide 31
Slide 31 text
Slack 31 Serverless Meetup Fukuoka #1
Slide 32
Slide 32 text
GitHub Issue 32 Serverless Meetup Fukuoka #1
Slide 33
Slide 33 text
“$ is not defined” 33 Serverless Meetup Fukuoka #1
Slide 34
Slide 34 text
柔軟なエラー通知と詳細な確認を得た エラー捕捉と同時に(かつ頻度を決めて)Slack通知を 受け取れるので素早い対応がしやすくなった ⾃動でGitHub IssueをOpenしたりReopenしたりする ことでIssueを元にエラーの管理ができるようになった PHPだけでなくJavaScriptのエラーもカジュアルに捕捉 できるようになったことで品質の向上をするきっかけ を得た 同じエラーの時系列グラフや各詳細を確認することで エラーの原因にたどりつきやすくなった (faultline-webui) 34 Serverless Meetup Fukuoka #1
Slide 35
Slide 35 text
これはSaaSを導⼊したような効果では? 35 Serverless Meetup Fukuoka #1
Slide 36
Slide 36 text
Between "Only mail notify" and "Error tracking services" メール通知 < faultline < SaaS 36 Serverless Meetup Fukuoka #1
Slide 37
Slide 37 text
1 Down 0 Recovery 37 Serverless Meetup Fukuoka #1 ※DynamoDBのCapacityに引っかかった ※もともと⾃分で復旧すべきサーバがない おしい
Slide 38
Slide 38 text
Not SaaS, but “SaaS like” 38 Serverless Meetup Fukuoka #1
Slide 39
Slide 39 text
では、サーバーレスアーキテクチャな faultlineはどんな実装なのか? 39 Serverless Meetup Fukuoka #1
Slide 40
Slide 40 text
faultlineのアーキテクチャ 40 Serverless Meetup Fukuoka #1
Slide 41
Slide 41 text
Only 3 storage 41 Serverless Meetup Fukuoka #1
Slide 42
Slide 42 text
Only 2,248 LOC 42 Serverless Meetup Fukuoka #1 ※Lines of Code
Slide 43
Slide 43 text
Only 2 contributors 43 Serverless Meetup Fukuoka #1
Slide 44
Slide 44 text
たったこれだけのコードベースで ⼤きな効果を得られている 44 Serverless Meetup Fukuoka #1
Slide 45
Slide 45 text
faultline以外の例 45 Serverless Meetup Fukuoka #1
Slide 46
Slide 46 text
hubedit https://hubedit.com GitHubのプライベートリポジトリをメモツール にするサービス GitHubを使っているので正確にはAWSフルマネージ ドではない 46 Serverless Meetup Fukuoka #1
Slide 47
Slide 47 text
hubedit アーキテクチャ 47 Serverless Meetup Fukuoka #1
Slide 48
Slide 48 text
Only 1,717 LOC 48 Serverless Meetup Fukuoka #1 ※Lines of Code
Slide 49
Slide 49 text
サーバーレスアーキテクチャの可能性 49 Serverless Meetup Fukuoka #1
Slide 50
Slide 50 text
サーバーレスアーキテクチャの可能性 なぜ可能だったのか? 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
Slide 51
Slide 51 text
さらに 51 Serverless Meetup Fukuoka #1
Slide 52
Slide 52 text
さらに“SaaS like”をSaaSに近づけるアイデア DynamoDB AutoScaling <-New! faultlineで唯⼀発⽣した障害はDynamoDBのCapacity faultlineを構成しているAWSリソース⾃体を別 のサーバーレスアーキテクチャで監視 あとで確認するために「faultline関連のCloudWatchメ トリクスをfaultlineで取得できるようにする」のもサー バーレスアーキテクチャだからこそ突⾶ではない 別リージョンにもfaultlineを構築してRoute53 でDNSフェイルオーバー どこまでやるか、だけ 52 Serverless Meetup Fukuoka #1
Slide 53
Slide 53 text
まとめ faultlineというエラートラッキングツールの開 発/運⽤から、サーバーレスアーキテクチャの可 能性について考えてみた ⼩さいコードベースでもSaaSのような運⽤ができるも のが完結するものが作れる可能性 サーバーレスアーキテクチャという⽂脈で、プロダクシ ョンベースの事例はよく聞くが、OSSなツールの運⽤事 例はまだ(⽇本では)少ないはず faultlineはOSS。コードを⾒ることができるので是⾮ サーバーレスアーキテクチャ周辺の整備はまだ まだはじまったばかりという印象 53 Serverless Meetup Fukuoka #1
Slide 54
Slide 54 text
Thank you! Fusicはテクノロジーが 好きなエンジニアを募集しています https://fusic.github.io 54
Slide 55
Slide 55 text
Serverless Meetup Fukuoka #1 55