37
#aws_serverless Introduction to AWS X-Ray Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Dec 07, 2016

Introduction to AWS X-Ray

Embed Size (px)

Citation preview

Page 1: Introduction to AWS X-Ray

#aws_serverless

Introduction to AWS X-RayKeisuke Nishitani (@Keisuke69)

Amazon Web Services Japan K.K.Dec 07, 2016

Page 2: Introduction to AWS X-Ray

#aws_serverless

ProfileKeisuke NishitaniSpecialist Solutions Architect, Amazon Web Service Japan K.K

@Keisuke69 Keisuke69

✤ Specialist SA- Serverless- Mobile- DevOps- Application Service

✤ ソーシャルで⾚ドクロの⼈です✤ RESTおじさん✤ 餃⼦の王将エヴァンジェリスト(⾃称)✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました✤ ブログ: http://keisuke69.hatenablog.jp/

Keisuke69 Keisuke69Keisuke69x

Page 3: Introduction to AWS X-Ray

#aws_serverless

アプリケーションのデバッグとは

Page 4: Introduction to AWS X-Ray

#aws_serverless

Development vs production✤ 従来のデバッグで必要とされていたこと:

⎻ 開発環境⎻ 問題を再現する⼿がかりをログを通して検索⎻ コード内にブレークポイントをセットして実⾏を停⽌し、変数やコールスタックの調

査⎻ 必要に応じてログ出⼒を追加し、アプリケーションを再デプロイ⎻ 問題がFixされるまで繰り返す

✤ 伝統的なデバッグプロセスは、本番アプリケーションやサービス指向、マイクロサービス、またはサーバーレスのアーキテクチャで構築されたアプリケーションには適していません

✤ 退屈で、繰り返し、時間がかかる

Page 5: Introduction to AWS X-Ray

#aws_serverless

モノリシック vs サービス志向アプリケーション✤ モノリシックなアーキテクチャで伝統的に開発されたアプリケーション

✤ モノリシックアプリケーション・アーキテクチャの⽋点を克服するためのサービス志向(マイクロサービス)アーキテクチャへの移⾏

✤ ただし、マイクロサービスにはそれ独⾃の課題がある

利点:• シンプルな開発• シンプルなテストとデバッグ• シンプルなデプロイ• シンプルなスケール

⽋点:• 速い反復の難しさ• 効果的なスケールの難しさ• CI/CDに時間がかかり、難しさ• 信頼性の課題 — シングルコンポーネント

に伴う問題はアプリ全体のダウンを引き起こす

Page 6: Introduction to AWS X-Ray

#aws_serverless

チャレンジ✤ サービス志向アプリケーションのデプロイと管理はモノリシックアプ

リケーションと⽐べより効果的になる✤ AWS Lambda, Amazon EC2 Container Service, AWS Elastic

Beanstalk, AWS CloudFormationなどといったサービスは数百のサービスからなるアプリケーションのデプロイと管理を簡単にする

✤ 以下のような理由により、本番アプリケーションでアプリケーションの問題をデバッグすることは依然として難しい:⎻ Cross-service interactionsサービス間の相互作⽤⎻ サービスごとに異なるログフォーマット⎻ サービス群からログを収集し、集約し、照合すること

Page 7: Introduction to AWS X-Ray

#aws_serverless

解決策✤ AWS X-Rayができること

⎻ パフォーマンスボトルネックとエラーの特定⎻ アプリケーション内の特定サービスへの問題を特定⎻ アプリケーションのユーザに対する問題のインパクトを特定⎻ アプリケーションのサービスコールグラフの可視化

Page 8: Introduction to AWS X-Ray

#aws_serverless

X-Rayがどのように役⽴つか?

Page 9: Introduction to AWS X-Ray

#aws_serverless

X-Ray

Page 10: Introduction to AWS X-Ray

#aws_serverless

X-Ray SDK✤ Java、.NET、Node.jsで利⽤可能

✤ 以下への呼び出しに対するメターデータを⾃動的にキャプチャするフィルタを追加⎻ AWS SDKを利⽤したAWSサービス⎻ HTTPやHTTPSを通したAWS以外のサービス⎻ データベース(MySQL, PostgreSQL、そしてAmazon DynamoDB)⎻ キュー(Amazon SQS)

✤ リクエストに関するメタデータを記録するためのアプリケーションコードを⼿動で実装することなく今すぐに始められます。

Page 11: Introduction to AWS X-Ray

#aws_serverless

X-Ray daemon✤ UDPでSDKからデータを受信し、ローカルバッファとして振る舞う

✤ データはバックエンドに対して毎秒、もしくはローカルバッファがいっぱいになるとフラッシュされる

✤ Amazon Linux AMI、RHEL、Ubuntu、OS XとWindowsで利⽤可能

Page 12: Introduction to AWS X-Ray

#aws_serverless

コンセプト

Page 13: Introduction to AWS X-Ray

#aws_serverless

X-RayのコンセプトTrace サービスをまたがった単⼀リクエストに関連したエンド

ツーエンドのデータSegments 1つのサービスに対応するトレースの⼀部Sub-segments サービス内でのリモートコールもしくはローカルコン

ピュートのセクション

Annotations トレースをフィルタするのに使⽤できるビジネスデータMetadata トレースに対して付与できるビジネスデータ

ただし、トレースのフィルタリングには使⽤されないErrors 正規化されたエラーメッセージとスタックトレースSampling トレースとして取得するアプリケーションへのリエストの

割合

Page 14: Introduction to AWS X-Ray

設定サンプル

{

"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%をトレースするというデフォルトのサンプリングルールをオーバーライド

Page 15: Introduction to AWS X-Ray

#aws_serverless

API

Page 16: Introduction to AWS X-Ray

#aws_serverless

X-Ray API✤ X-Rayはトレースデータを送信、フィルタ、検索するためのAPIセットを提

✤ SDKを利⽤する必要なくサービスに対して直接トレースデータを送信可能(例えば、現在サポートされていない⾔語のSDKを⾃前で書くことも可能)

✤ Batch get APIを使ってロートレースデータを利⽤可能

✤ X-Rayにより集められたデータの上で独⾃のデータ分析アプリを構築可能

Page 17: Introduction to AWS X-Ray

#aws_serverless

X-Ray API

PutTraceSegments AWS X-Rayへセグメントのドキュメントをアップロード

BatchGetTraces IDにより指定されたトレースのリストを検索

GetServiceGraph アプリケーションとコネクション内でサービスを⽰すドキュメントを検索

GetTraceSummaries オプションのフィルタを使⽤して、指定された時間枠で使⽤可能なトレースのIDとメタデータを取得します。

Page 18: Introduction to AWS X-Ray

#aws_serverless

Use cases

Page 19: Introduction to AWS X-Ray

#aws_serverless

サービスコールグラフの可視化

Page 20: Introduction to AWS X-Ray

#aws_serverless

影響の特定

Page 21: Introduction to AWS X-Ray

#aws_serverless

影響の特定

Page 22: Introduction to AWS X-Ray

#aws_serverless

パフォーマンスボトルネックの特定

Page 23: Introduction to AWS X-Ray

#aws_serverless

パフォーマンスボトルネックの特定

Page 24: Introduction to AWS X-Ray

#aws_serverless

パフォーマンスボトルネックの特定

Page 25: Introduction to AWS X-Ray

#aws_serverless

パフォーマンスボトルネックの特定

Page 26: Introduction to AWS X-Ray

#aws_serverless

問題の特定

Page 27: Introduction to AWS X-Ray

#aws_serverless

問題の特定

Page 28: Introduction to AWS X-Ray

#aws_serverless

問題の特定

Page 29: Introduction to AWS X-Ray

#aws_serverless

エージェントのインストール

Page 30: Introduction to AWS X-Ray

#aws_serverless

Agentのインストール(Amazon EC2 Linux)

Page 31: Introduction to AWS X-Ray

#aws_serverless

Agentのインストール (Amazon EC2 Windows)

Page 32: Introduction to AWS X-Ray

#aws_serverless

Agentのインストール (Amazon ECS)

Page 33: Introduction to AWS X-Ray

#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());

Page 34: Introduction to AWS X-Ray

#aws_serverless

Pricing

Page 35: Introduction to AWS X-Ray

#aws_serverless

X-Ray価格✤ プレビュー期間中は無料:

✤ 無料枠⎻ 記録された最初の100,000トレース/⽉は無料⎻ 検索されたり、スキャンされた最初の1,000,000トレース/⽉は無料

✤ 追加課⾦⎻ 無料枠を超えて、記録されたトレースは100万トレースあたり$5.00/⽉⎻ 無料枠を超えて、検索もしくはスキャンされたトレースは$0.5/⽉

Page 36: Introduction to AWS X-Ray

#aws_serverless

サーバレス個別相談会やります✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します✤ サーバレスなシステムに関するアーキテクチャ相談✤ 1スロット、45分で7スロット受け付け予定✤ 要事前登録✤ もちろん無料

https://aws-serverless.connpass.com/event/45337/

Page 37: Introduction to AWS X-Ray

#aws_serverless