Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to AWS X-Ray

5,845 views

Published on

2016年12月7日のServerless Follow Upでの資料です

Published in: Software
  • Be the first to comment

Introduction to AWS X-Ray

  1. 1. #aws_serverless Introduction to AWS X-Ray Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Dec 07, 2016
  2. 2. #aws_serverless Profile Keisuke Nishitani Specialist Solutions Architect, Amazon Web Service Japan K.K @Keisuke69 Keisuke69 ✤ Specialist SA - Serverless - Mobile - DevOps - Application Service ✤ ソーシャルで⾚ドクロの⼈です ✤ RESTおじさん ✤ 餃⼦の王将エヴァンジェリスト(⾃称) ✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました ✤ ブログ: http://keisuke69.hatenablog.jp/ Keisuke69 Keisuke69Keisuke69x
  3. 3. #aws_serverless アプリケーションのデバッグとは
  4. 4. #aws_serverless Development vs production ✤ 従来のデバッグで必要とされていたこと: ⎻ 開発環境 ⎻ 問題を再現する⼿がかりをログを通して検索 ⎻ コード内にブレークポイントをセットして実⾏を停⽌し、変数やコールスタックの調 査 ⎻ 必要に応じてログ出⼒を追加し、アプリケーションを再デプロイ ⎻ 問題がFixされるまで繰り返す ✤ 伝統的なデバッグプロセスは、本番アプリケーションやサービス指向、マ イクロサービス、またはサーバーレスのアーキテクチャで構築されたアプ リケーションには適していません ✤ 退屈で、繰り返し、時間がかかる
  5. 5. #aws_serverless モノリシック vs サービス志向アプリケーション ✤ モノリシックなアーキテクチャで伝統的に開発されたアプリケーション ✤ モノリシックアプリケーション・アーキテクチャの⽋点を克服するための サービス志向(マイクロサービス)アーキテクチャへの移⾏ ✤ ただし、マイクロサービスにはそれ独⾃の課題がある 利点: • シンプルな開発 • シンプルなテストとデバッグ • シンプルなデプロイ • シンプルなスケール ⽋点: • 速い反復の難しさ • 効果的なスケールの難しさ • CI/CDに時間がかかり、難しさ • 信頼性の課題 — シングルコンポーネント に伴う問題はアプリ全体のダウンを引き 起こす
  6. 6. #aws_serverless チャレンジ ✤ サービス志向アプリケーションのデプロイと管理はモノリシックアプ リケーションと⽐べより効果的になる ✤ AWS Lambda, Amazon EC2 Container Service, AWS Elastic Beanstalk, AWS CloudFormationなどといったサービスは数百のサー ビスからなるアプリケーションのデプロイと管理を簡単にする ✤ 以下のような理由により、本番アプリケーションでアプリケーション の問題をデバッグすることは依然として難しい: ⎻ Cross-service interactionsサービス間の相互作⽤ ⎻ サービスごとに異なるログフォーマット ⎻ サービス群からログを収集し、集約し、照合すること
  7. 7. #aws_serverless 解決策 ✤ AWS X-Rayができること ⎻ パフォーマンスボトルネックとエラーの特定 ⎻ アプリケーション内の特定サービスへの問題を特定 ⎻ アプリケーションのユーザに対する問題のインパクトを特定 ⎻ アプリケーションのサービスコールグラフの可視化
  8. 8. #aws_serverless X-Rayがどのように役⽴つか?
  9. 9. #aws_serverless X-Ray
  10. 10. #aws_serverless X-Ray SDK ✤ Java、.NET、Node.jsで利⽤可能 ✤ 以下への呼び出しに対するメターデータを⾃動的にキャプチャする フィルタを追加 ⎻ AWS SDKを利⽤したAWSサービス ⎻ HTTPやHTTPSを通したAWS以外のサービス ⎻ データベース(MySQL, PostgreSQL、そしてAmazon DynamoDB) ⎻ キュー(Amazon SQS) ✤ リクエストに関するメタデータを記録するためのアプリケーション コードを⼿動で実装することなく今すぐに始められます。
  11. 11. #aws_serverless X-Ray daemon ✤ UDPでSDKからデータを受信し、ローカルバッファとして振る舞う ✤ データはバックエンドに対して毎秒、もしくはローカルバッファが いっぱいになるとフラッシュされる ✤ Amazon Linux AMI、RHEL、Ubuntu、OS XとWindowsで利⽤可能
  12. 12. #aws_serverless コンセプト
  13. 13. #aws_serverless X-Rayのコンセプト Trace サービスをまたがった単⼀リクエストに関連したエンド ツーエンドのデータ Segments 1つのサービスに対応するトレースの⼀部 Sub-segments サービス内でのリモートコールもしくはローカルコン ピュートのセクション Annotations トレースをフィルタするのに使⽤できるビジネスデータ Metadata トレースに対して付与できるビジネスデータ ただし、トレースのフィルタリングには使⽤されない Errors 正規化されたエラーメッセージとスタックトレース Sampling トレースとして取得するアプリケーションへのリエストの 割合
  14. 14. 設定サンプル { "rules": { "move": { "id": 1, "service_name": "*", "http_method": "*", "url_path": "/api/move/*", "fixed_target": 0, "rate": 0.05 }, "base": { "id": 2, "service_name": "*", "http_method": "*", "url_path": "*", "fixed_target": 1, "rate": 0.1 } } } この例では2つのルールを定義 最初のルールは/api/move以下のパスへのリクエ ストを最⼩数を指定せず5%のサンプリングレー トを適⽤ 2つ⽬は1秒ごとに最初のリクエストと追加リク エストの10%をトレースするというデフォルト のサンプリングルールをオーバーライド
  15. 15. #aws_serverless API
  16. 16. #aws_serverless X-Ray API ✤ X-Rayはトレースデータを送信、フィルタ、検索するためのAPIセットを提 供 ✤ SDKを利⽤する必要なくサービスに対して直接トレースデータを送信可能 (例えば、現在サポートされていない⾔語のSDKを⾃前で書くことも可 能) ✤ Batch get APIを使ってロートレースデータを利⽤可能 ✤ X-Rayにより集められたデータの上で独⾃のデータ分析アプリを構築可能
  17. 17. #aws_serverless X-Ray API PutTraceSegments AWS X-Rayへセグメントのドキュメントをアップ ロード BatchGetTraces IDにより指定されたトレースのリストを検索 GetServiceGraph アプリケーションとコネクション内でサービスを⽰ すドキュメントを検索 GetTraceSummaries オプションのフィルタを使⽤して、指定された時間 枠で使⽤可能なトレースのIDとメタデータを取得し ます。
  18. 18. #aws_serverless Use cases
  19. 19. #aws_serverless サービスコールグラフの可視化
  20. 20. #aws_serverless 影響の特定
  21. 21. #aws_serverless 影響の特定
  22. 22. #aws_serverless パフォーマンスボトルネックの特定
  23. 23. #aws_serverless パフォーマンスボトルネックの特定
  24. 24. #aws_serverless パフォーマンスボトルネックの特定
  25. 25. #aws_serverless パフォーマンスボトルネックの特定
  26. 26. #aws_serverless 問題の特定
  27. 27. #aws_serverless 問題の特定
  28. 28. #aws_serverless 問題の特定
  29. 29. #aws_serverless エージェントのインストール
  30. 30. #aws_serverless Agentのインストール(Amazon EC2 Linux)
  31. 31. #aws_serverless Agentのインストール (Amazon EC2 Windows)
  32. 32. #aws_serverless Agentのインストール (Amazon ECS)
  33. 33. #aws_serverless Applicationへの実装(Node.js) //Add aws-xray-sdk package to package.json var XRay = require('aws-xray-sdk'); var AWS = captureAWS(require('aws-sdk')); … XRay.config([XRay.plugins.EC2]); XRay.captureHTTPs(http); XRay.setDefaultName('myfrontend-dev'); … app.use(XRay.express.openSegment()); app.get('/', function(req, res) { … }); … app.use(XRay.express.closeSegment());
  34. 34. #aws_serverless Pricing
  35. 35. #aws_serverless X-Ray価格 ✤ プレビュー期間中は無料: ✤ 無料枠 ⎻ 記録された最初の100,000トレース/⽉は無料 ⎻ 検索されたり、スキャンされた最初の1,000,000トレース/⽉は無料 ✤ 追加課⾦ ⎻ 無料枠を超えて、記録されたトレースは100万トレースあたり$5.00/⽉ ⎻ 無料枠を超えて、検索もしくはスキャンされたトレースは$0.5/⽉
  36. 36. #aws_serverless サーバレス個別相談会やります ✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します ✤ サーバレスなシステムに関するアーキテクチャ相談 ✤ 1スロット、45分で7スロット受け付け予定 ✤ 要事前登録 ✤ もちろん無料 https://aws-serverless.connpass.com/event/45337/
  37. 37. #aws_serverless

×