Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アプリケーション性能を管理するのに必要なこと

takayasu
August 18, 2022

 アプリケーション性能を管理するのに必要なこと

ITproActive製品選択支援セミナー

takayasu

August 18, 2022
Tweet

More Decks by takayasu

Other Decks in Technology

Transcript

  1. ITproActive製品選択⽀援セミナー 1 2 3 4 5 ⾃⼰紹介 ⾼安 厚思 ▌

    活動領域・キーワード ▌20年にわたり、ソフトウエアエンジニアリングを適⽤した システム開発やコンサルティングに携わる。 ▌最新技術を適切に利⽤した、柔軟なシステムの構築、 品質管理を中⼼として技術マネージメントなどを主要テーマとして活動。 ▌開発⽅法論、アーキテクチャ設計コンサルティング、システム全体設計を 得意分野とする。 ▌東京電機⼤学⾮常勤講師、SQuBOK設計開発領域 検討委員、 ITSS-DS検討委員 ▌関連事例 ▌ソーシャルアプリケーション構築プロジェクト 性能分析 ▌B2B ECサイト移⾏プロジェクト 性能分析 ▌公共機関 性能改善プロジェクト アーキテクト その他多数 2 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved.
  2. ITproActive製品選択⽀援セミナー 1 2 3 4 5 対外活動 n最近の著書、訳書 ▌ 「システム設計の謎を解く(ソフトバンク)」

    ▌ 「StrutsによるWebアプリケーション スーパーサンプル(ソフトバンク)」 ▌ 「Seasar⼊⾨[(ソフトバンク)」 ▌ 「Javaルールブック(エクスメディア) ▌ 「ITアーキテクトのためのシステム設計実践ガイド アーキテクチャ編(⽇経 BP)」など。 n連載記事執筆 ▌ ⽇経SYSTEMS誌「Webアーキテクチャ再⼊⾨」 n講演 ▌ SODEC ミッションクリティカル開発 ▌ ⽇本テクノセンター セミナー講師 ▌ UML Forum講師 ▌ ⽇経BP社 ITアーキテクトのためのシステム設計フォーラム 特別講演 講師 ▌ Developers Summit 2013 Summer ▌ QCon 2014 ▌ ITpro Active製品選択⽀援セミナー 3 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved.
  3. ITproActive製品選択⽀援セミナー 1 2 3 4 5 会社案内 ▌社名︓株式会社ビッグツリーキャピタル(Big Tree Capital.LTD.)

    ▌Webサイト︓http://www.bt-capital.com ▌サービスメニュー︓ ▌テクノロジー ▌ システムインテグレーション(基幹系システム、ECサイト構築等) ▌ プラットフォーム(AWS、Solr、Hadoop、仮想化基盤等) ▌コンサルティング ▌ IT戦略コンサルティング(ビジネスモデリング、TCO削減等) ▌ プロジェクトマネジメント(PMO/PgMO、IT調達⽀援等) ▌ 技術コンサルティング(アーキテクチャ設計、技術検証等) 4 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved.
  4. ITproActive製品選択⽀援セミナー 1 2 3 4 5 アジェンダ ▌1 性能とは ▌2

    性能を決定する要素 ▌3 性能改善の技術 ▌4 ライフサイクルと性能 ▌5 結論のようなもの ▌付録 ライフサイクルと性能の詳細 5 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved.
  5. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能にまつわるよくある話 ▌性能に関するステークホルダは多岐にわたり、性能にかかわる要素も 多いため、以下のような会話がされることがある。 7

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. アプリケーションとしては⼗分に テストしているので問題ない。 ⼗分なシステムリソースがないのでは︖ リソースが空いている状態なので、 アプリケーションの問題では︖ インフラ担当社 アプリ担当社 責任範囲が不明確なため、お互いに疑⼼暗⻤になりやすい
  6. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能とは ▌『性能』という⾔葉の定義を明確にし、ステークホルダー間で同意し ておくことが重要 8

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. 性能は⾮機能要件(上記の定義、ハードウェアコストの制約)によって あらわすことができる。 オンライン アプリ ü レスポンスタイム(処理時間、応答時間) ü スループット(同時アクセス数) バッチ アプリ ü 処理時間 ü 処理可能データ量 同時アクセス数と処理時間はトレードオフ オンラインバッチの場合、オンラインの 影響に留意
  7. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能を考える上での原則 ▌性能を設計、改善する場合には守るべき原則がある 9 Copyright

    (C) 2015 Atsushi Takayasu All Rights Reserved. 何事も計測すべし ボトルネックを改善せよ 仮説検証を繰り返せ この原則を無視した施策は効果がでにくい
  8. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能を決定する要因・要素 ▌粒度の異なる複数の要因・要素によって性能が決まる 11 Copyright

    (C) 2015 Atsushi Takayasu All Rights Reserved. 性能は階層の異なる複数の要因によって決定され、 システムリソースがボトルネックとして表れる 要因 要素 計算量、計算処理量、リソースの利⽤⽅法 性能を構成する要素(システムリソース) 影響 観測可能 観測困難 推測
  9. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能を決定する要因 ▌性能を決定する要因は、外的要因、内的要因、ミドルウェア特性、 アプリロジックに⼤別できる 12

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. 複数の要因によって性能が決定される 外的要因 内的要因 ミドルウェア 特性 アプリ ロジック 同時アクセス数 データ量 処理内容 システムリソースの利⽤⽅法 処理内容 システムリソースの利⽤⽅法
  10. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能を決定する要素 ▌性能を構成する最終要素 ▌CPU等のシステムリソースがボトルネックになって、 性能の上限が決まる

    13 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. CPU メモリ ディスク N/W p 同時アクセス数の増加 p 計算量の増加 p 同時アクセス数の増加 p データ量の増加 p メモリ確保の増加 p CPU待ち時間の発⽣ p スワップの発⽣ p GCの発⽣ p メモリ不⾜による システムダウン p アクセス特性 p データ量の増加 p アクセス待ち時間の 発⽣ p 同時アクセス数の増加 p データ量の増加 p アクセス待ち時間の 発⽣ システム リソース 要因 現象
  11. ITproActive製品選択⽀援セミナー 1 2 3 4 5 性能改善の技術 ▌ システムリソースのボトルネックを改善するためには以下のような技術が有効 Copyright

    (C) 2015 Atsushi Takayasu All Rights Reserved. 15 圧縮 キャッシュ 分散 計算量の減少 同じデータや構造の繰り返しを別の構造で 表現することによって、データ量を削減する 繰り返し利⽤されるデータをアクセス速度の ⾼いリソースに配置することによって、 アクセス速度を向上させる ボトルネックになるリソースを複数準備し、 それぞれ並列で処理させることによって、 ボトルネックを解消する ループの回数やデータ構造を変更することに よって、計算量を減少させる これらの技術を直接あるいは間接的に利⽤し、性能を 維持する。
  12. ITproActive製品選択⽀援セミナー 1 2 3 4 5 分散⽅法 ▌システムリソースのボトルネックを解消する⼿段として、 「分散」が⽤いられる 16

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. ステートレスの場合 ステートフルの場合 l 状態に依存せず振り分け先を決定できる。 l 処理するノードを増加させ、振り分けを⾏うことで実現する。 l 振り分け装置(HW/SW)の性能に依存するがスケールしやすい。 l 例)ロードバランサーによるWebサーバの分散 l 状態に依存していて、単純に振り分けができない。 振り分けロジックと振り分けに必要な情報によって振り分けを ⾏うことで実現する。 l 分散先を決定するノードによる処理がボトルネックになり、ス ケールしにくい。 l 例)ユーザIDをキーとするシャーディングによる DBサーバの分散
  13. ITproActive製品選択⽀援セミナー 1 2 3 4 5 ライフサイクル ▌アプリケーションの性能を管理するには各⼯程で性能を 意識する必要がある 18

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. 要件定義 設計 実装 テスト 運⽤ p 性能の定義 p 性能を表す⾮機能要件 p アーキテクチャ設計(性能設計) p リリース・拡張⽅式設計 p 性能監視設計 p 性能・負荷・限界テスト及び改善 p アルゴリズム選択 p 単体レベルの性能計測・改善 p 性能監視・改善 p 拡張計画とリリース 本当の意味で、性能を管理するためには全⼯程での配慮が必要
  14. ITproActive製品選択⽀援セミナー 1 2 3 4 5 結論めいたもの 20 Copyright (C)

    2015 Atsushi Takayasu All Rights Reserved. ü 性能はプロジェクト全体の課題と位置づけ、 アーキテクトを中⼼にして、 全てのステークホルダで取り組む ü 原則をとらえた性能改善に取り組む ü 性能を改善するためには全⼯程で 取り組みが必要
  15. ITproActive製品選択⽀援セミナー 1 2 3 4 5 要件定義⼯程 ▌業務要求から検証可能な性能要件に変換する ▌性能の定義のあいまいさやコストとのトレードオフとなることから、 組織標準があると良い

    22 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. 業務要求 性能要件 業務側から要求される性能のレベル 他の制約は考慮されない場合が多い 他の制約を含め、調整された性能のレベル 定量的に計測できる場合が多い 拡張性要件 拡張の条件やリードタイムの条件 制約 ハードウェアコスト・運⽤コストなどの制約 調整・確定
  16. ITproActive製品選択⽀援セミナー 1 2 3 4 5 設計⼯程 ▌アーキテクチャ設計において、性能を考える(パフォーマンスモデル) ▌リリース・拡張⽅式設計において、各構成要素について拡張を設計する ▌運⽤設計の中で、性能監視を考える

    23 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. パフォーマンスモデル リリース設計 性能を改善してリリースするライフサイクルを意識し、 容易にリリースできるようなインフラ・アプリ構成とする。 詳細は「ソフトウェアシステムアーキテクチャ構築の原理」を参照
  17. ITproActive製品選択⽀援セミナー 1 2 3 4 5 開発⼯程 ▌アルゴリズムの選択が重要 ▌単体レベルの性能計測・改善を実施 24

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. アルゴリズムの選択 性能計測 データ量、ループ回数、性能条件の厳しい処理の回避・軽減 (キャッシュ、分散など) 補⾜事項 p 単⼀プログラム内での検討 p 複数プログラム、ミドルウェアを 利⽤する場合はアーキテクチャ設計の 守備範囲 ロジック上の性能課題を洗い出すために、 開発中に単体機能(単⼀プログラム)における性能測定をおこなう (JUnitで記述することでJUnitPerfも利⽤できる)
  18. ITproActive製品選択⽀援セミナー 1 2 3 4 5 テスト⼯程 ▌性能テスト、負荷テスト、限界テストの⽬的を理解し、どのように おこなうかを検討する 25

    Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. 性能テスト 負荷テスト 負荷のかからない通常レベルの処理量において、 性能を計測し、性能課題がないかを確認する ピーク時の負荷を疑似的に発⽣させ、性能要件を 満たしているかを確認する 限界テスト 性能要件を超えた負荷をかけた場合の動作及び 性能特性(ボトルネック発⽣個所の特定)を確認する ⼀般的には、負荷テストのみが計画されるケースが多いが テスト計画段階で、この組み合わせを考える必要がある
  19. ITproActive製品選択⽀援セミナー 1 2 3 4 5 運⽤フェーズ ▌通常時はシナリオで監視する ▌繁忙期は、監視のトリガーに合わせて⾃動リリースを組み込むという 対応も検討する

    26 Copyright (C) 2015 Atsushi Takayasu All Rights Reserved. 通常監視 Web監視の例 http://www.zabbix.com/jp/web_scenarios.php から引⽤ p ユーザが利⽤するサービス単位で 監視を構成する p 監視によって負荷が 増加しないように留意する 繁忙期監視 p サービスが維持できているかを 確認する p 流量制御や⾃動リリースで システムをダウンさせないように する
  20. ITproActive製品選択⽀援セミナー 1 2 3 4 5 お問い合わせなど 27 Copyright (C)

    2015 Atsushi Takayasu All Rights Reserved. ご清聴ありがとうございました。 ご質問、ご依頼事項がございましたら [email protected] へ、お気軽にご連絡ください。