質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

Webサービスのパフォーマンスを上げる方法について(DataDog、サーバーレス(AWS Lambda))

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 229

KoukoMatsumoto

score 47

AWS Lambdaを使ったサーバーレスのWebサービスで、フロント側はReactで実装しています。
DataDogが使えるため、メトリクスやトレースの収集を行っております。
本当に申し訳ございませんが、「パフォーマンスを上げる」という方法が全くわかりません。何から調べて良いのかもわからない状態で・・・
たくさんのエンドポイントがあり、一つずつ見ることなどもできず、何を持ってパフォーマンスが悪いというのかすらわからない状態です。
正直、何から手をつけていけば良いのでしょうか。
サービスそのものを変えることは厳しいため、今の環境のままパフォーマンスを上げることに繋がる改善提案を作っていければ良いのですが、どこがボトルネックなのか、DataDogの膨大な情報を見てもわからなくて、何をしたら良いのかも見えず、困っています。
このような質問で申し訳ございません。何からやれば良いか、という具体的な道筋があればお教えいただけるとありがたいです。ヒントだけでも構いません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

0

Webパフォーマンス虎の巻という非常にありがたい記事がありました。

読んだ本は超速! Webページ速度改善ガイドだそうです。
よくわからないならこれを読むというのはいかがですか?

ちなみに、上記は検索したら一番上に出てきました。
調べることができない場合は、知ってる人に投げるのが良いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/08/08 11:44

    遅くなってしまって申し訳ありません。なるほど、書籍で基礎を抑えていくのはありですね。
    まとまった時間が取れるか微妙ですが、取れそうであれば試し読みできるものであれば見たいと思います。ありがとうございます。

    キャンセル

0

どのようなシチュエーションかが見えないので一般論よりの回答となりますが。

Datadogを見るよりは、まずはユーザーサイドに近い意見や感覚値を吸い上げるのが良いと思います。

ただ漠然と「パフォーマンスアップしたい!」という話が出てくるシチュエーションはあまり考えづらく、なんらかのトリガーとなる事象があってのことと思います。であれば、まずはユーザーサイドに近い人からの意見を吸い上げて仮説を立てて絞り込むのかよろしいかと思います。

例えば、特定のページでのみ応答/表示が遅い、ということであれば、そのページで投げているバックエンドAPIを掘り下げればなにか手がかりがあるかも?と多少なり方向性が見いだせますし、全体的に遅いのであればフロントでロードするファイルサイズが重すぎたり、CDNのキャッシュが十分効いていなかったりするかもしれません。
なにも手がかりのない状態から漠然と手を出すのはさすがに辛すぎますので、報告事例が集められるならそこから網を絞っていくのが良いと思います。

lambdaを使っているということは、おそらく裏は API Gateway や DynamoDB を使っているのでは無いでしょうか。その前提で初歩的なところを挙げるなら、

・DynamoDBをScanしていないか?(これは明確にバッドプラクティスです)
・Lambdaの同時実行数の制限に抵触していないか?(lambdaの同時実行数はリージョン単位で制限があります。たしか、東京リージョンのデフォルトでは100ぐらいだったような気がしてますが、詳しくは公式ドキュメント、 lambda の制限事項をお調べください)

バックエンドにアタリをつけるのであれば、とりあえず lambda の duration time, throttling, error などを見ると思います。API Gateway のレスポンスコードやレイテンシあたりも有力なのではないかと。あとは前述したように DynamoDB に変なクエリを投げていないかコードとスキーマを確認するなどが考えられます(いずれにせよ、収集できる仮説を集めるのが最優先であろうとは思いますが)。

私自身はあまり使ったことがありませんが、トレーシングである程度バックエンドの状況を概観することことで見える傾向があるかもしれません。こちらは Datadog のAPM (個別の有償プランだったと思います)や、AWS の X-Ray を有効化するなどで確認可能です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/08/08 11:46

    遅くなってしまって申し訳ありません。長く色々ありがとうございます。
    はい、API Gateway や DynamoDB、まさしく使っております。
    DynamoDB自体のレイテンシーはあまり掛かっていないようなので、他がネックになりそうです。
    API Gateway のパフォーマンスについて無知のため、色々ヒントをありがとうございます。
    ちなみにDataDogのAPMとAWSのX-rayに差はあるのでしょうか?両方設定すると無駄、、、などあるようでしたら知りたいところです。

    キャンセル

  • 2020/09/11 02:29

    Datadog APM の方は正直きちんと活用できてないので、私から明確なアドバイスは難しいです。申し訳ありません。ただし基本は AWS が提供するサービスよりは監視を専門とする Datadog のほうが色々行き届いてるはず、とは思います。APMでない metric, logs, dashboard の話になりますが、複数メトリック(ログイベントも含めて)を横串で view にしたりとかが簡単にできるので、 AWS 標準で可視化を頑張るよりは色々と分析・考察が捗りやすい使い勝手という印象は持っています

    あと、Datadog APM を AWSに使う場合は X-Ray の有効化が必須だったはずです。なので、どちらを使うにせよ少なくとも X-Ray の有効化は無駄にならないと思います

    キャンセル

0

AWS Lambdaなのであれば、AWS X-Rayを有効化することで簡便に遅くなってるであろう箇所の特定につながる可能性があります。棒グラフが長いところを短くすることで、ユーザ体験時間の削減とそもそものAWS Lambdaの費用削減ができます。

チェックボックスをチェックするだけですのでお試しください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/08/08 11:48

    ありがとうございます。AWS LambdaのX-ray、設定してあるので見てみました。各種リソースがちゃんと認識されきれていないようなので、ソースコードをいじる必要がありそうです。
    ある程度は取得できましたが、サービスによって言語が違って、取得しきれていないリソースがあります。
    もうちょっとみてみたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る