Slide 1

Slide 1 text

All rights reserved by Postman Inc サーバーレス API の パフォーマンステストと アプリの未来 草薙 昭彦 テクノロジーエバンジェリスト #serverlessjp #serverlesstokyo

Slide 2

Slide 2 text

テクノロジーエバンジェリスト Postman 株式会社 草薙 昭彦 @postman_japan @nagix

Slide 3

Slide 3 text

@postman_japan API を呼ぶなら curl で十分だ ※ただし熟練者に限る

Slide 4

Slide 4 text

サーバーレス で API を 構築? @postman_japan

Slide 5

Slide 5 text

サーバーレス @postman_japan ● 開発者が基盤となるインフラストラクチャを管理することなくアプリケーションを構 築および実行できるクラウドコンピューティングモデル ● 名前に反して、サーバーは依然として存在するが、その管理は抽象化されてい るため、開発者はコードのみに集中できる サーバーレス = API

Slide 6

Slide 6 text

Function-as-a-Service FaaS @postman_japan ● イベントに応じて実行される個別のコード ● イベントは、HTTP リクエスト、データベースの変更、またはスケジュールされた タスクなど ● トリガーされると、クラウドプロバイダーはコンテナーをインスタンス化して関数を 実行 ● このコンテナーは、このコードとそのメモリを、他のユーザーが同じ物理ハード ウェアで実行している他のサーバーレス関数から保護

Slide 7

Slide 7 text

サーバーレスの利点 @postman_japan ● コスト効率 : 消費したコンピューティング時間に対してのみ料金が発生 ● 自動スケーリング : サーバーレス関数は、必要に応じて複数のインスタンスを生 成することで自動的にスケーリングレイテンシが最小限に抑えられ、全体的な ユーザー体験が向上 ● 運用管理: インフラの管理、メンテナンス、更新はクラウドプロバイダーによって 処理されるため、チームメンバーは他の重要な部分を管理するための時間を確 保できる ● 迅速な導入と更新 : 管理するインフラがないため、導入はより迅速かつ容易に。 各エンドポイントは独自の機能またはメソッドであるため、コードのメンテナンス が最小限に抑えられ、簡素化

Slide 8

Slide 8 text

サーバーレスの課題 @postman_japan ● コールドスタート : アイドル時間の経過後に関数を初めて呼び出すと、レイテン シが急上昇する場合がある ● リソース制限 : アプリケーションとサポートコードの実行時間、メモリ、サイズに制 限がある ● デバッグの課題 : 従来のデバッグツールが適用できるとは限らない。デプロイ時 に最も一般的なデバッグツールはログデータ ● 作業の重複 : 各エンドポイントが独自のコードブロックである場合、共有ライブラ リコードを簡単に追加できないインフラストラクチャでは、コードが重複することが ある

Slide 9

Slide 9 text

サーバーレス API の構築は実現可能か @postman_japan ● もちろん可能!サーバーレスのオンデマンドスケーリングは API に最適 ● きめ細かいスケーリング : 各エンドポイントは需要に応じて個別にスケーリング できる ● コスト削減 : アイドル状態のサーバーがないのでリソースが無駄にならない ● より高速なイテレーション : 開発者は、API 全体に影響を与えることなく、エンド ポイントの変更を迅速に展開できる

Slide 10

Slide 10 text

サーバーレス API 構築の課題 @postman_japan ● 状態管理: サーバーレス関数はステートレスであるため、特定の操作の実装が より困難に ● 複雑なアーキテクチャ : 大規模な API では多数の機能が必要になる場合があ り、API の構成がより複雑に ● ツールと監視 : 従来のツールはサーバーレス環境に対応していない可能性があ り、新しいソリューションが必要になる ● レイテンシの増加とカスタマイズの制限 : コールドスタートにより API のレイテ ンシが発生。アプリケーションを起動したままにする?クラウドプロバイダーの提 供内容によってはコストとビジネスニーズの両立が難しい場合も

Slide 11

Slide 11 text

API のパフォーマンスの 課題に対応するには @postman_japan

Slide 12

Slide 12 text

Postman API プラットフォーム @postman_japan 日本語 UI 対応

Slide 13

Slide 13 text

Postman とは? 3,100 万人以上のユーザーに使わ れている API コラボレーションプラッ トフォーム Postman は API を使う作業をより 効率よく行うのに役立ちます 公開 設計・モック 自動化テスト ドキュメント 監視 デバッグ @postman_japan

Slide 14

Slide 14 text

Postman API パフォーマンステスト @postman_japan 実際のトラフィックを シミュレート 複数の並列ユーザー(仮想ユー ザー)をシミュレートすることがで きます。 これにより、実際のシナリオで API のパフォーマンスを観察し ながら、テストすることができま す。

Slide 15

Slide 15 text

実行タイプ @postman_japan 固定 ランプアップ ピーク スパイク

Slide 16

Slide 16 text

テスト結果の分析 @postman_japan 満を持してデプロイ! シミュレーションされた負荷の下 で、応答時間、エラー率、 1秒あ たりのリクエスト数などのパ フォーマンス指標を簡単に観察 できます。 パフォーマンスのボトルネックを 早期に特定し、パフォーマンスを 改善し、自信を持ってデプロイす ることができます。

Slide 17

Slide 17 text

コールドスタートの具合を眺める @postman_japan ● サーバーレス関数に負荷がかかってい る状態が数分継続することがあるもの の、最終的には正常化してより速くアク セスできるようになる様子を 表示 ● この場合、最初の起動時の平均応答 時間が 2 秒から平均約 200 ミリ秒に 正常化するのに約 20 ~ 30 秒かかっ た

Slide 18

Slide 18 text

リクエスト応答時間をモニターする @postman_japan ● レスポンス時間のようなリクエストのメタ情報を取得して、スクリプトでテストを書く ● デプロイ後にテストをスケジュール実行して、常にサービスの健全性をモニター

Slide 19

Slide 19 text

なぜ Postman でパフォーマンステスト? @postman_japan Postman API コレクション レスポンスの確認 一度コレクションを 作ってしまえば、 色々な用途に使える🚀 モック開発 API テスト ドキュメント生成 パフォーマンステスト Open API 仕様 curl コマンド Postman プロキシ インターセプター API ゲートウェイ API ゲートウェイ

Slide 20

Slide 20 text

パフォーマンスはユーザー体験である ソフトウェアやウェブアプリケーションのパフォーマンスはユーザーエクスペリエンスに直結してい るとても重要な要素 Web performance is user experience. As you design and develop a new site, youʼll consider many components of its user experience: layout, hierarchy, intuitiveness, ease of use, and more. Your siteʼs experience determines how much your audience trusts your brand, returns to your site, and shares it with others. Designing for performance, by Lara Callender Hogan, Dec 2014 https://www.oreilly.com/library/view/designing-for-performance/9781491903704/ https://designingforperformance.com/index.html @postman_japan

Slide 21

Slide 21 text

パフォーマンスに関する取り組みはできるだけ早く 他のテスト同様にライフサイクルにおいてできるだけ早い段階(シフトレフト) から 継続的 に実施することが重要。Test frequently, Fail early Define Design Develop Test Deploy Observe Distribute ● パフォーマンス要件 ● アーキテクチャ分析 ● メトリクス設計・開発 ● パフォーマンス監視 ● ボトルネック検知・分析 ● フィードバック check check check check check 後ろのフェーズになればなるほど改修コストが大きい check @postman_japan

Slide 22

Slide 22 text

パフォーマンステストとは? パフォーマンステストは一般に、特定の作業負荷のもとで、システムが応答性と安定性の面でどのように 動作するかを判断するために実施されるテストである。また、スケーラビリティ、信頼性、リソース使用量な ど、システムの他の品質属性を調査、測定、検証、確認することもある Performance Testing Load Testing Stress Testing Breakpoint Testing Spike Testing Soak Endurance) Testing Configuration Testing Internet Testing 負荷テスト: 特定の負荷下でのシステム動作理解のた め実施。ボトルネック特定に役立つ 予想最大負荷を超えた状況下でシステムが機能する かをテスト。システムの上限理解のために実施 負荷を徐々に増加させてシステムの限界を特定 劇的な負荷の変化に対処できているかテスト 継続的な負荷に耐えられるかどうかをテスト 構成変更が性能や振る舞いに与える影響をテスト。例 : 負 荷分散方法、H/W組合せ、設定値変更 グローバルアプリに 各ターゲット大陸から膨大な負荷 をかけるテスト Wikipedia: https://en.wikipedia.org/wiki/Software_performance_testing @postman_japan

Slide 23

Slide 23 text

Postman パフォーマンステストのスイートスポット ● 大規模向けではなく、小〜中規模向けパフォーマンステスト ○ API クライアントからのテストであり実現可能な出力には限界がある ● 開発ライフサイクルの比較的早い段階で実施するパフォーマンステスト ○ API の機能テスト用と同じツールセットで、敷居低くカジュアルに実行できる Define Design Develop Test Deploy Observe Distribute check check check check check check @postman_japan

Slide 24

Slide 24 text

アプリの未来 @postman_japan

Slide 25

Slide 25 text

@postman_japan

Slide 26

Slide 26 text

開発者だけでなく誰もが API を使えるように・・ @postman_japan

Slide 27

Slide 27 text

ビジュアルツール Postman Flows @postman_japan

Slide 28

Slide 28 text

Postman Flows とは? API 中心のアプリ(ワークフロー)を構築するためのビジュアルエディター ● 複数の API の連携、データの加工、出力結果の可視化など一連のアクションの自動化 ○ サービス連携処理、自然言語処理、 DevOps 処理、など ● 既存のコレクションにある API リクエスト設定や環境を活用可能 ● フロー用の Webhook エンドポイントを公開して、外部からフローをトリガー可能 @postman_japan

Slide 29

Slide 29 text

Postman Flows とフロー Flow ● Postman Flows : ワークフロー構築のためのビジュアルエディター ● フロー Flow Postman Flows で構築するワークフローのこと フロー フロー一覧 Postman Flows @postman_japan

Slide 30

Slide 30 text

Postman Flows ユーザーインターフェース https://learning.postman.com/docs/postman-flows/gs/the-flows-interface/ グループ化 その他ブロック Startブロック 注釈(annotation) コンソール Webhook ツールバー Runボタン 注釈追加 ミニマップ @postman_japan

Slide 31

Slide 31 text

Postman Rail @postman_japan

Slide 32

Slide 32 text

@postman_japan @postman_japan

Slide 33

Slide 33 text

Postman Rail 構成(ローカル) ローカル PC Postman Flows Mabeee API サーバー Bluetooth 127.0.0.1 @postman_japan

Slide 34

Slide 34 text

Postman Rail 構成(フローをデプロイ) @postman_japan ローカル PC Mabeee API サーバー Bluetooth 127.0.0.1 Postman クラウド Postman Flows ngrok クラウド ngrok Raspberry Pi Webhook センサー

Slide 35

Slide 35 text

AI アシスタントによるフローの生成 @postman_japan

Slide 36

Slide 36 text

まとめ ● サーバレスは API ● API の構築にはサーバレスアーキテクチャの特徴が生かせるが、 サーバレスの特性をよく理解しておく必要がある ● API 開発の中で常に挙動を確かめるのに Postman パフォーマンスモニターが 役に立つ ● 開発者だけでなく誰もが API を使える 未来へ @postman_japan

Slide 37

Slide 37 text

ダウンロードして無料でスタート! https://www.postman.com/downloads/ デスクトップアプリ ● Windows ● Mac ● Linux Web アプリ ● アカウント登録で同 じ機能をブラウザで も利用できる @postman_japan

Slide 38

Slide 38 text

Postman Japan コミュニティ Discord Discord サーバーを開設しました! 今後 Postman のプロダクトアップデートやイベン ト情報の配信や、みなさんとの交流の場として活 用していきたいと思います。 https://discord.gg/G4SQWDDqVa @postman_japan

Slide 39

Slide 39 text

Postman Connpass グループ API Night(勉強会)& ワークショップ https://postman.connpass.com/ Postman イベントにぜひご参加ください Postman Japan X アカウント @postman_japan @postman_japan

Slide 40

Slide 40 text

ありがとうございました @postman_japan