Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AKIBA.SaaS ONLINE 「サーバーレスウェブアプリケーションにおける監視」
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
koki_minami
March 17, 2022
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AKIBA.SaaS ONLINE 「サーバーレスウェブアプリケーションにおける監視」
koki_minami
March 17, 2022
More Decks by koki_minami
See All by koki_minami
最大80%工数削減!?AWS WAFの新コンソールを徹底検証してみた!
mkoki0422
0
560
Inspectorを利用した脆弱性管理について
mkoki0422
0
980
Other Decks in Programming
See All in Programming
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
140
yield再入門 #phpcon
o0h
PRO
0
920
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
130
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
120
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
520
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
4.7k
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
230
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
170
Android CLI
fornewid
0
210
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
810
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
330
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Building an army of robots
kneath
306
46k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
Designing Powerful Visuals for Engaging Learning
tmiket
1
470
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
620
So, you think you're a good person
axbom
PRO
2
2.1k
Six Lessons from altMBA
skipperchong
29
4.4k
Transcript
サーバーレスウェブアプリケーションにおける監視 〜NewRelicで出来ること〜 2022年3月9日 インターン生 南宏樹 1
2 自己紹介 南 宏樹(Minami Koki) • 立命館大学情報理工学部 4年(先週に卒業確定しました) •
クラスメソッドで去年の3月から 内定者インターン中 • 好きなサービス ◦ Lambda ◦ CDK • 趣味 ◦ スカイスポーツ
3 はじめに 今回扱う「サーバーレスウェブアプリケーション」とはLambda やFargateがバックエンドであるSPAを例にしています。
4 みなさんどのように監視してますか? • マネコンでの運用が多いイメージ • 〇〇Insights系のサービスも充実してはいるが、痒いとこ に手が届かないことも
5 アジェンダ 1) SaaS型の可観測性プラットフォーム New Relicとは 2) New Relicでどのように導入するのか?、どんなことが出来るの か?
a) バックエンド i) Fargate構成の場合 ii) Lambda構成の場合 b) フロントエンド i) NewRelic Brower 3) まとめ
6 可観測性(オブザーバービリティ)? New Relicとは?
7 可観測性(オブザーバビリティ / Observability) Observability = Observe (観察する)+ ability (能力)
システムを総合的・多角的にモニタリングし継続して分析する オブザーバビリティの利点 →問題の検出、調査が可能になる。 つまり、システムの開発と運用のサイクルを回してビジネスの継続 的な運営と成長を目指すDevOpsには必須
3 Pillars of Observability 可観測性(オブザーバビリティ / Observability) 「システムを総合的・多角的にモニタし継続して分析する」 そのための機能(性質)をシステムが備えていること Metric
CPU%, Mem Usage, Traffic, Counter Log 高コンテキスト アプリ/インフラロ グ Trace 複数箇所からの関連 するデータを連結 Blackbox 外部/インフラスト ラクチャからの計測 Whitebox アプリ内部の計測 データ・APM Frontend 合成(Synthetic)監視 RealUser Monitoring 可視化 グラフ化, 分類, 図示 ダッシュボード 分析 相関, 推移・傾向予測, ふるまい検出, Severity 通知(Action) 通知(アラート/on-call), 自動処理(failover/recovery) 4 Golden Signals Latency, Errors, Saturation, Traffic 3 Dimmensions Functionally, Availability, Speed
New Relicを導入するメリット • より統合されたモニタリング ◦ New Relicの各機能は、APMを中心に統合されておりCloudWatch の各機能とX-Rayなど、複数の画面を渡り歩く必要がない ◦ AWSのマルチアカウント環境もオンプレミスも一元化
• 洗練されたダッシュボードと通知機能 ◦ 最初からダッシュボードを作り込む必要はない ◦ Applied Intelligenceによる「通知地獄」からの解放 • APM(Application Performance Management) ◦ 高い定評を誇るAPM機能がNew Relicの中心
10 サーバレスアプリケーションに対して どんな風に導入するのか? どんなことが出来るのか?
11 Fargate構成の場合
12 • 導入することで ◦ Amazon CloudWatch の標準メトリクスでは収集できないタスク・コン テナレベルのメトリクス、Service、Clusterの情報が取得可能 ◦ アプリケーションのレイテンシーやトラフィック、アプリ間のトレー
ス、ログとの紐付け(ドリルダウンに調査可能に)
13 Fargate構成の場合 • Fargate構成の場合 1. AWS Integrationの有効化 2. アプリケーションログを取得する為にLambda関数の実装 3.
ECS Integrationを有効化し、タスク情報の取得 4. New Relic APMを有効化し、分散トレーシングの有効化
14 New Relicでどんなことが出来るか 1. AWS Integrationの有効化 ◦ AWS IntegrationとはCloudwatchのメトリクスデータをNewRelic に連携する仕組み。NewRelicを使う上の第一歩
APIポーリング • 外部SasSとの連携で昔からよく使 われた手法 • 定期的なポーリングを行う為、遅 延が発生、かといってレートをあげ るとCW側の課金額が大変なこと に... CloudWatch Metric Streams • 2021年からの新しい手法 • CloudWatchのメトリクスデータをKinesis Data Firehoseに流し込むことが出来るよ うに! • これにより「ストリーミング化」、「ほとんど の場合コスト減」! おすすめ
15 New Relicでどんなことが出来るか 2. アプリケーションログを取得する為にLambda関数の実装 a. AWS Serverless Application Repositoryから
「newrelic-log-ingestion」というLambda関数をデプロイ b. Lambdaのトリガー設定からストリーミングしたいロググループを選 択
16 Fargate構成の場合 3. ECS Integrationの導入 ◦ Amazon CloudWatch の標準メトリクスでは収集できないタスク・コン テナレベルのメトリクスを収集可能に
◦ 仕組みとしてはサイドカーパターン 導入方法は3パターン ◦ AWSCloudFormationを使用して導入する方法 ◦ 自動スクリプトを使用して導入する方法 ◦ 手動でインストールする方法 おすすめ
17 Fargate構成の場合 AWSCloudFormationを使用して導入する方法 a. CloudFormationテンプレートを利用し、ECS Integrationに必要な以 下の各種リソースを作成 i. ライセンスキーを保存するAWS Secret
Managerのシークレット ii. ライセンスキーが保存されているシークレットにアクセスするためのIAMポリシー iii. 2のポリシーがアタッチされたタスク実行ロール b. 監視したいタスク定義にECSエージェントをサイドカーとして追加 i. テンプレートを使って、ARN部分を対象のものに変更
18 Fargate構成の場合 4. New Relic APMの有効化 1. New Relic の環境変数を追加してタスク定義の更新
19 Fargate構成の場合 2. APM Agentを導入したベースイメージの作成
20 Lambda構成の場合
21 Lambda構成の場合 • 今までは… ◦ Lambda実行環境に常駐プログラム(Agent)をインストールすること ができなかった為、コードを改変する必要があった • 2020年からは! ◦
Lambda Extensionsが利用可能となったことで、コードを改変す ることなく、New RelicのLayerを追加するだけでOK!
22 Lambda構成の場合 • 導入することで ◦ コールドスタートや実行時間などの様々なパフォーマンスデータ ◦ API Gateway 、SQS、DynamoDBなど、各AWS
Lambda呼び出しをトリガーしたイベント についてのコンテキストと属性を提供するAWS Lambdaイベントソース情報 ◦ Lambda機能の詳細な動作が一元的に可視化 ◦ ドリルダウンで調査することが出来る
23 Lambda構成の場合 • Lambda構成の場合の流れ 1. AWSアカウントとの連携 2. 観測するLambda関数との連携
24 1. AWSアカウントとの連携 • newrelic-lambda CLI を利用することで、AWS Integrationsとログ の転送部分も設定してくれる
25 2. 観測するLambda関数との連携 導入方法は3パターン ◦ Iacを使用して設定する方法 ◦ newrelic-lambda layersコマンドを利用して設定する方法 ◦
手動でLayer、環境変数を設定する方法 おすすめ
26 • CDK、SAMの場合は ◦ ハンドラーの変更、アカウントIDなどの環境変数、ポリシー、New RelicのLayerの追加などが必要 • Serverless Frameworkの場合 ◦
serverless-newrelic-lambda-layersというプラグインを使うことで、ア カウントID, APIキー等を設定するだけでOK
27 フロントエンドの導入
28 フロントエンド • New Relic Browser ◦ New Relic Browserを導入することでリアルユーザーモニタリング
(RUM)が可能 ◦ フロントエンド からバックエンドを一貫して分散トレーシングも可能 に
29 フロントエンド • 導入方法 a. New Relic Browserの新規作成 ▪ CORSの設定など
b. 生成されたスニペットを追加 c. バックエンド側の修正 ▪ 「newrelic」というキーでヘッダーを追加 ▪ newrelic.interaction()メソッド内でAJAX の呼び出し
30 まとめ • サーバーレスアーキテクチャでも比較的簡単に導入する ことが出来る! • 料金体系が変わったことで、今回紹介したほとんど機能 が無料で体験可能!