Upload
keisuke-nishitani
View
867
Download
0
Embed Size (px)
Citation preview
#aws_serverless
Introduction to AWS X-RayKeisuke Nishitani (@Keisuke69)
Amazon Web Services Japan K.K.Dec 07, 2016
#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
#aws_serverless
アプリケーションのデバッグとは
#aws_serverless
Development vs production✤ 従来のデバッグで必要とされていたこと:
⎻ 開発環境⎻ 問題を再現する⼿がかりをログを通して検索⎻ コード内にブレークポイントをセットして実⾏を停⽌し、変数やコールスタックの調
査⎻ 必要に応じてログ出⼒を追加し、アプリケーションを再デプロイ⎻ 問題がFixされるまで繰り返す
✤ 伝統的なデバッグプロセスは、本番アプリケーションやサービス指向、マイクロサービス、またはサーバーレスのアーキテクチャで構築されたアプリケーションには適していません
✤ 退屈で、繰り返し、時間がかかる
#aws_serverless
モノリシック vs サービス志向アプリケーション✤ モノリシックなアーキテクチャで伝統的に開発されたアプリケーション
✤ モノリシックアプリケーション・アーキテクチャの⽋点を克服するためのサービス志向(マイクロサービス)アーキテクチャへの移⾏
✤ ただし、マイクロサービスにはそれ独⾃の課題がある
利点:• シンプルな開発• シンプルなテストとデバッグ• シンプルなデプロイ• シンプルなスケール
⽋点:• 速い反復の難しさ• 効果的なスケールの難しさ• CI/CDに時間がかかり、難しさ• 信頼性の課題 — シングルコンポーネント
に伴う問題はアプリ全体のダウンを引き起こす
#aws_serverless
チャレンジ✤ サービス志向アプリケーションのデプロイと管理はモノリシックアプ
リケーションと⽐べより効果的になる✤ AWS Lambda, Amazon EC2 Container Service, AWS Elastic
Beanstalk, AWS CloudFormationなどといったサービスは数百のサービスからなるアプリケーションのデプロイと管理を簡単にする
✤ 以下のような理由により、本番アプリケーションでアプリケーションの問題をデバッグすることは依然として難しい:⎻ Cross-service interactionsサービス間の相互作⽤⎻ サービスごとに異なるログフォーマット⎻ サービス群からログを収集し、集約し、照合すること
#aws_serverless
解決策✤ AWS X-Rayができること
⎻ パフォーマンスボトルネックとエラーの特定⎻ アプリケーション内の特定サービスへの問題を特定⎻ アプリケーションのユーザに対する問題のインパクトを特定⎻ アプリケーションのサービスコールグラフの可視化
#aws_serverless
X-Rayがどのように役⽴つか?
#aws_serverless
X-Ray
#aws_serverless
X-Ray SDK✤ Java、.NET、Node.jsで利⽤可能
✤ 以下への呼び出しに対するメターデータを⾃動的にキャプチャするフィルタを追加⎻ AWS SDKを利⽤したAWSサービス⎻ HTTPやHTTPSを通したAWS以外のサービス⎻ データベース(MySQL, PostgreSQL、そしてAmazon DynamoDB)⎻ キュー(Amazon SQS)
✤ リクエストに関するメタデータを記録するためのアプリケーションコードを⼿動で実装することなく今すぐに始められます。
#aws_serverless
X-Ray daemon✤ UDPでSDKからデータを受信し、ローカルバッファとして振る舞う
✤ データはバックエンドに対して毎秒、もしくはローカルバッファがいっぱいになるとフラッシュされる
✤ Amazon Linux AMI、RHEL、Ubuntu、OS XとWindowsで利⽤可能
#aws_serverless
コンセプト
#aws_serverless
X-RayのコンセプトTrace サービスをまたがった単⼀リクエストに関連したエンド
ツーエンドのデータSegments 1つのサービスに対応するトレースの⼀部Sub-segments サービス内でのリモートコールもしくはローカルコン
ピュートのセクション
Annotations トレースをフィルタするのに使⽤できるビジネスデータMetadata トレースに対して付与できるビジネスデータ
ただし、トレースのフィルタリングには使⽤されないErrors 正規化されたエラーメッセージとスタックトレースSampling トレースとして取得するアプリケーションへのリエストの
割合
設定サンプル
{
"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%をトレースするというデフォルトのサンプリングルールをオーバーライド
#aws_serverless
API
#aws_serverless
X-Ray API✤ X-Rayはトレースデータを送信、フィルタ、検索するためのAPIセットを提
供
✤ SDKを利⽤する必要なくサービスに対して直接トレースデータを送信可能(例えば、現在サポートされていない⾔語のSDKを⾃前で書くことも可能)
✤ Batch get APIを使ってロートレースデータを利⽤可能
✤ X-Rayにより集められたデータの上で独⾃のデータ分析アプリを構築可能
#aws_serverless
X-Ray API
PutTraceSegments AWS X-Rayへセグメントのドキュメントをアップロード
BatchGetTraces IDにより指定されたトレースのリストを検索
GetServiceGraph アプリケーションとコネクション内でサービスを⽰すドキュメントを検索
GetTraceSummaries オプションのフィルタを使⽤して、指定された時間枠で使⽤可能なトレースのIDとメタデータを取得します。
#aws_serverless
Use cases
#aws_serverless
サービスコールグラフの可視化
#aws_serverless
影響の特定
#aws_serverless
影響の特定
#aws_serverless
パフォーマンスボトルネックの特定
#aws_serverless
パフォーマンスボトルネックの特定
#aws_serverless
パフォーマンスボトルネックの特定
#aws_serverless
パフォーマンスボトルネックの特定
#aws_serverless
問題の特定
#aws_serverless
問題の特定
#aws_serverless
問題の特定
#aws_serverless
エージェントのインストール
#aws_serverless
Agentのインストール(Amazon EC2 Linux)
#aws_serverless
Agentのインストール (Amazon EC2 Windows)
#aws_serverless
Agentのインストール (Amazon ECS)
#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());
#aws_serverless
Pricing
#aws_serverless
X-Ray価格✤ プレビュー期間中は無料:
✤ 無料枠⎻ 記録された最初の100,000トレース/⽉は無料⎻ 検索されたり、スキャンされた最初の1,000,000トレース/⽉は無料
✤ 追加課⾦⎻ 無料枠を超えて、記録されたトレースは100万トレースあたり$5.00/⽉⎻ 無料枠を超えて、検索もしくはスキャンされたトレースは$0.5/⽉
#aws_serverless
サーバレス個別相談会やります✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します✤ サーバレスなシステムに関するアーキテクチャ相談✤ 1スロット、45分で7スロット受け付け予定✤ 要事前登録✤ もちろん無料
https://aws-serverless.connpass.com/event/45337/
#aws_serverless