Replatformシステム移行ノウハウ(運用のマネージドサービス化)(AWS編)
2023/03/27 公開
バッチ処理の改革
バッチ処理の改革はアプリケーションへの影響が大きいため、以下のノウハウを参考のうえ可能であれば検討すること。
マネージドサービスの選択
ジョブ管理を提供するサービスをどのようなユースケースでどういう選択をするのか
ジョブ管理にはジョブの実行制御を行うオーケストレーター/スケジューラー系サービスと、計算リソースを提供する実行コンピュート系サービスが存在する。
- オーケストレーター/スケジューラー: Amazon EventBridge Scheduler、AWS StepFunctions、Amazon Managed Workflow for Apache Airflow、Amazon Simple Workflow Service、
AWS Glue - 実行コンピュート: AWS Lambda、Amazon ECS on Fargate、Amazon ECS on EC2、Amazon EC2
オーケストレーター・スケジューラーサービス検討のポイント
スケジューラーはAmazon EventBridge Schedulerが推奨される。Amazon EventBridge Ruleも同様のスケジューラー機能を提供するが、後発のサービスであるAmazon EventBridge Schedulerの方が機能が高機能である。
ジョブオーケストレーターについては、ETLジョブの場合はAWS Glueが最適である。ETL以外の場合で、ジョブオーケストレーターが必要な場合はコストとパフォーマンスの効率がよいStepFunctionsが有力な選択肢となる。StepFunctionsで要件が満たせない場合は、Amazon Managed Workflow for Apache Airflow又はAmazon Simple Workflow Serviceを検討する必要がある。
| 検討ポイント1 | 検討ポイント2 | サービス |
|---|---|---|
| ジョブスケジューラー | EventBridge Schedulerが使える | Amazon EventBridge Scheduler |
| EventBridge Schedulerが使えない何等かの理由がある。 (ex. 既存のIaCテンプレートを使いまわしたい等) | Amazon EventBridge Rule | |
| ETLジョブでない | 繰り返し処理、並列実行、エラー処理など基本的なジョブフロー機能が求められる。 | AWS StepFunctions |
| オープンソース性が求められる。 他クラウドプロバイダーへの可搬性が求められる。 AWS以外の各種クラウドSDK/OSS API等を呼び出すジョブが多い。 | Amazon Managed Workflow for Apache Airflow | |
| 外部シグナルによりプロセスへ介入する必要がある。 結果を親プロセスへ返す子プロセスを作成する必要がある。 | Amazon Simple Workflow Service | |
| ETLジョブである | 繰り返し処理、並列実行、エラー処理などのジョブフロー | AWS Glue |
実行コンピュート検討のポイント
コンピュート環境はAWS Lambdaで要件が満たせるワークロードの場合、AWS Lambdaの利用が推奨される。Lambdaで要件が満たせない場合においてもなるべくコンテナ化を目指し、サーバーレス環境での実行を優先的に検討することが推奨される。
| 検討ポイント1 | 検討ポイント2 | 検討ポイント3 | サービス |
|---|---|---|---|
| Lambdaでサポートされるプログラミング言語/ツールのみで実装可能 | 実行が15分以内に完了する (15分以内に完了するサブタスクに分割できる) | AWS Lambda | |
| 実行に15分以上かかる (15分以内に完了するサブタスクに分割できない) | ECS on Fargate | ||
| Lambdaでサポートされないプログラミング言語/ツールが必要 | コンテナ化可能である | 汎用インスタンス上で実行可能である | ECS on Fargate |
| 特殊なインスタンスが必要である(GPU付きインスタンス等) | EC2またはECS on EC2 | ||
| コンテナ化が困難である(特殊なOSでしか実行できず、OSの公式コンテナイメージが提供されていない等) | EC2 |
各サービスの詳細
オーケストレーター/スケジューラー
| サービス | 詳細 |
|---|---|
| Amazon EventBridge Scheduler | 設定した時間にジョブの実行を開始させることができる。 スケジュールパターンは以下の3種存在する。 - Rate-based: 指定の期間ないで繰り返し定期実行 - Cron-based: Cron式による複雑な定期実行 - One-time: 指定されたタイミングで一回だけ実行。統合されているAWSサービスの数やクォータ制限などの面でEventBridge Ruleより優れている。 |
| Amazon EventBridge Rule | 設定した時間にジョブの実行を開始させることができる。Amazon EventBridge Schedulerより古いサービスである。 |
| AWS StepFunctions | Lambdaの実行やAWSリソースへのAPIコールを行うことができる。 条件分岐、ジョブの繰り返し、複数ジョブの並列実行などの実装が可能。 失敗したジョブの途中実行ができないため、それを念頭に置いたジョブ設計をする必要がある。 StepFunctionsの機能で要件が満たせない場合は、より自由度の高いMWAAの検討が推奨される。 |
| Amazon Managed Workflow for Apache Airflow (省略形:MWAA) | Apache AirflowをAWS上で実行できるサービス。 各種クラウドSDK/OSS APIを呼び出すためのパッケージが提供されている(例えばMicrosoftAzure、Facebook、DiscordなどStepFunctionsには実装されていないものもある)(参照Opens in new tab)。 オープンソースと移植性を優先する場合は、MWAAが有力な選択肢となる 。 コストとパフォーマンスを優先する場合は、StepFunctionsが推奨される。 |
| Amazon Simple Workflow Service | EC2やオンプレミス上で実行するジョブのオーケストレーションを行う。 以下の場合を除き、StepFunctionsが推奨される。 - 外部シグナルによりプロセスへ介入する必要がある場合 - 結果を親プロセスへ返す子プロセスを作成する必要がある場合 |
| AWS Glue | データのETLジョブを実行するサービス。 Pythonスクリプト又はPythonで記述されたAppache Spark API (PySpark)スクリプトを実行可能。 サーバーレスサービスのため、コンピューティング環境を選択する必要はない。 |
実行コンピュート
| サービス | 詳細 |
|---|---|
| AWS Lambda | イベント駆動型でコードを実行するサービス。 15分の実行時間制限がある。 多くのプログラミング言語をサポート。 |
| Amazon ECS on Fargate | Dockerコンテナを実行及び管理するサーバーレスなコンテナ実行サービス。 イベント駆動型の起動が可能。 サービスとしての起動、ロードバランサーとの紐づけ、オートスケーリングなども可能。 |
| Amazon ECS on EC2 | DockerコンテナをEC2上で実行及び管理するコンテナ実行サービス。 サーバーレスではないため、EC2の管理は別途必要。 運用保守の負荷が大きいため、LambdaやECS on Fargate等サーバーレス環境で実現困難な場合のみ採用を検討するべきである。 |
| Amazon EC2 | AWS上の仮想サーバー。 GPU付きインスタンスなど特殊なデバイスが必要な場合やOSが特殊でコンテナイメージが入手できない場合のみ利用すべきである。 |
イベントドリブン化
イベントドリブン処理の必要性について
従来のオンプレミスシステムでよく存在していた夜間バッチアプリケーションについては、夜間バッチ処理の処理負荷を分散するために夜間のシステムの停止(閉局)が必要になったり、夜間のジョブの監視要員が必要になったり、バッチ処理が失敗したときに朝のシステムの開始(開局)までのリカバリーが困難であるなど、システム運用の難度を上げる大きな要因であった。これを廃止、もしくは極小化し、更新イベントがあるたびに後続処理を行う、イベントドリブン処理とすることでシステム運用のシンプル化に大きく貢献することができる。また、夜間バッチアプリケーションを廃止・極小化することで、複雑なジョブ連携をジョブフローとして管理するジョブ管理サーバも不要となる。
イベントドリブン処理の基本的な構成要素
これまでの夜間バッチ処理をイベントドリブンな処理に変更する際に、基本的な構成要素がどのようになるかを以下に解説する。リクエストの呼び出しイベント、処理の完了イベント、データの変更イベントなどの状態の変化をイベント発行元(イベントプロデューサ)からイベントストア/ルーター/バスを通じて、後続の処理サービスへと伝播し処理を実装することができる。
| 構成名 | 概要 | 対応するサービス |
|---|---|---|
| イベントプロデューサー | リクエストの呼び出しイベント、処理の完了イベント、データの変更イベントなどの状態の変化をイベントルータ等に伝える主体。 | 様々なアプリケーション、モバイルをふくめた様々なチャネル、AWSサービスが発行するイベント(処理完了、データ変更、状態変化等) |
| イベントルータ/イベントストア/イベントバス) | イベントを受信し、ルーティングする中継作業を行うコンポーネント。AWSの場合は、用途に応じていくつかのサーバーレス型の選択肢がある。 | Amazon SQS、EventBridge、AmazonMQ |
| イベントコンシューマ | イベント駆動で処理を起動する。イベント待ち受けの効率性/経済性を考慮すると、サーバーレスは良い選択肢になる。 | AWS Lambda、ECS Task、EKS Pod、AWS Batch |
イベントドリブン処理のデザインパターン
イベント駆動のジョブを作成するにあたって、代表的なデザインパターンとして以下の3種類のデザインパターンが存在する。ジョブを実装する際に、いずれかの方式を選択するというよりは、それぞれの方式を組み合わせて、イベント駆動のアプリケーションやジョブを構築することとなる。
| デザインパターン名 | パターンの概要 | 特徴 |
|---|---|---|
| コレオグラフィ | 全体の作業を制御する指揮者(オーケストレータ)は存在せず、個々のサービスに予め与えられた動作条件(振付:コレオグラフィ)に従ってサービスを実行する実行するパターン | サービスが疎結合になり、直接互いに影響を与えない。また、イベントメッセージの保存と取得が非同期の関係になるため、スケーラビリティと信頼性が向上する。 |
| コマンド責任分離(Command-Query Responsibility Segregation:CQRS) | データストアを参照するクエリと更新するコマンドを分離し実行するパターン | 更新側と参照側がユースケースに応じて個別にスケールすることが可能となる。ただし、コマンド側とクエリ側の結果整合性を許容する必要がある。 |
| イベントソーシング | データに対して実行された一覧のすべてのアクションを記録するパターン | 任意の時点におけるアプリケーションの状態を識別して再構成できる。これにより、永続的な監査証跡が生成され、デバッグが容易になる。 |
コレオグラフィ
コレオグラフィの動きの概要
コレオグラフィの動きとしては、必要なすべての情報を含んだ最初のイベントを 1 つのメッセージに保存して、最初のトランザクションを完了する。他のサービスがそのメッセージを非同期的に取得し、あらかじめ定められた動作条件(振付:コレオグラフィ)にしたがって、それぞれのタスクを完了させる動きとなる。これにより、サービスが疎結合になり、直接互いに影響を与えない構成となる。その結果として、イベントメッセージの保存と取得が非同期の関係になり、スケーラビリティと信頼性が向上する。
実装例1:SNS、SQS、Lambdaの利用
- リクエストを行う「リクエストサービス」(アプリケーション等)から「SNS」にメッセージをトピックにパブリッシュする。
- 「SNS」に作成したトピックを「SQS」はサブスクライブ(購読)する。
- 「Lambda」は「SQS」がメッセージを受信された際に、何らかの「Lambda」関数を呼び出す。
- この場合、従来型のバッチ処理は「Lambda」関数として実装することとなるが、マイクロサービスとなるように役割を決めて実装することを推奨する。なお、トピックをサブスクライブしている「SQS」が複数ある場合、「SQS」に紐づく「Lambda」を並行的に実行(ファンアウト)することができる。
- この構成の利点としては、「リクエストサービス」は「SNS」のトピックにパブリッシュするだけでよく、バッチ処理などの記述はサブスクライブする「SNS」と、それに呼応する「Lambda」関数を「SQS」に紐づけることができる。すなわち、ロジックを意識せずにサービス結合ができ、疎結合な構成が可能である。
実装例2:Amazon EventBridgeの利用
- リクエストを行う「リクエストサービス」(アプリケーション等)から「EventBridge」のイベントバスに対してイベントを発行する(カスタムアプリの場合は、「EventBridge」でカスタムイベントバスを作成しておく。AWSサービスをイベントソースとする場合は、デフォルトイベントバスを利用する。)
- 「EventBridge」ではイベントバスとイベントターゲット(「支払」、「注文」などのLambda等で記述されたマイクロサービス)の関係性記述を行う。
- この構成の利点としては、「リクエストサービス」は「EventBridge」のイベントバスにイベントを発行するだけでよく、バッチ処理などの記述は「EventBridge」の機能を用いてイベントターゲットとなる「Lambda」等の関数を定義できる。すなわち、ロジックを意識せずにサービス結合ができ、疎結合な構成が可能である。
コマンド責任分離の実装例
コマンドクエリ責任分離の概要
コマンドクエリ責任分離 (CQRS) パターンは、データ変更、つまりシステムのコマンドサービス(更新部分)をクエリサービス(参照部分)から分離する。スループット、レイテンシー、または一貫性に関して、コマンドとクエリで要件が異なる場合は、CQRSパターンを使用して更新とクエリを分離することが可能となる。
実装例1:Kinesis Data StreamsとLambdaを利用
この実装方式の特徴や、実装する場合の留意点を記載する。
実装例2:DynamoDB StreamsとLambdaを利用
この実装方式の特徴や、実装する場合の留意点を記載する。
イベントソーシングの実装例
イベントソーシングの動きの概要
データベースの更新や、メッセージやイベントの発行を信頼性の高いアトミックな方法で実行したい場合に利用するパターン。イベントソーシングではデータベースなどに更新クエリを直接実行するのではなく、注文依頼、与信確認、注文受け付け、配送依頼などビジネスの事象によってデータの状態が変更されるイベントをイベントリスト(DynamoDB等)に追加して永続化する。イベントの保存は単一の操作で行われるため処理はアトミックになる。保存されたイベントを再生することで現在の状態に再構築可能なところがこのパターンの特徴。特定のデータソースへのアップデートクエリではなく状態を更新する事象を表すイベントとして保存されるため、複数のサービスがイベントストアからイベントを再生して状態を更新する際に、サービス個々のデータソース用に更新処理を実装することができる。これによって、先に紹介したCQRSパターンのようにコマンド側とクエリ側で異なるデータソースの異なるスキーマであってもイベントの再生ができるため、CQRSパターンと組み合わせて使われることもある。
実装例1:Kinesis Data Streams (or SQS FIFO)とLambdaによる実装例
イベントドリブン処理の実装を効率化するために
Amazon EventBridge Pipes
イベントドリブンなアプリケーション構築時に、発行側と受取側同士の連携を実現する、シンプルで信頼性の高い方法を提供する仕組みをAWSは提供している。イベントドリブンな処理を実装する際に、つなぎ込むためのコード開発の手間を最小化することが可能になっている。LambdaやStep Functionsなどとの連携でデータ加工・変換も可能となっている。
| 構成名 | 対応内容 | 対応するサービス |
|---|---|---|
| イベント-ソース | イベントソースとして、複数のAWSサービスをサポートして、パイプラインの上流として扱うことができる。 | Amazon DynamoDB、Amazon Kinesis Data Streams、Amazon MSK(自己管理のKafkaも含む)、Amazon SQS、Amazon MQ(ActiveMQ/RabbitMQ)をサポート |
| 強化と変換 | イベントパイプライン上でのプレ処理を行う必要がある場合に、対応する処理を選択することができる。 | AWS Lambda、AWS Step Functions、Amazon API Gateway、Amazon Eventbridge API Destinationsをプレ処理としてサポート |
| イベントターゲット | イベントターゲットとして複数の処理をすることができる。 | 5種類のEventBridgeターゲット、Lambda、API Gateway、SNS、SQS、Step Functions、一般的なHTTPSエンドポイントをサポート |
Amazon EventBridge Pipesの概要
監視の移行
監視は、必須で検討し、阻害要因が無い限り適用を推奨すること。
前提
Observabilityとは
Observabilityが確保されているということは、システムの監視機能が以下を達成している状態を指す。
Observabilityの要件
- 問題発生時にアラームを発報し人へ介入を促す。
- 問題発生時に原因を調査するために必要な情報を提供する。
- 長期的な計画を立てるために必要となる情報(サービスの状態とリソース消費量の傾向)を提供する。
- 更新がデプロイされる前後、又は二つの異なるバージョンを比較するための情報を提供する。
- これらの情報のうち重要なものを視覚的に表示する。
これらの目標を達成するためにシステムの監視機能は以下3種類のデータを収集する必要がある。
- メトリクス: 特定の時刻に計測されたシステム状態を現わす数値
- ログ: システム内で発生したイベントの記録
- トレース:複数サービスを横断して連鎖的に発生したイベントの記録
監視移行の方法論
監視対象についての考え方
システムに異常が発生しているかを判断するためには最低限以下の項目を監視すべきである。
- レイテンシー(Latency)
- 各サービスがリクエストの応答にかかる時間を計測したもの。成功時応答とエラー時応答のレイテンシーはそれぞれ個別に集計され統計値を算出すべきである。これは、例えば瞬時に応答が返るエラーがある場合、成功時応答とエラー時応答を混同した平均レイテンシーなどの統計値は有益な情報をもたらさないからである。
- トラフィック(Traffic)
- 各サービスの需要を計測したもの。例えばHTTPベースのAPIサービスであれば秒間HTTPリクエスト数がトラフィックにあたると考えられる。ストリーミングサービスの場合、同時接続数がトラフィックを現わすメトリクスとしてより適切である。
- エラー(Errors)
- ユーザーが期待される結果を返せないという事象。これは5XXエラーが発生した場合のみならず、HTTPコードは200だが応答内容が正しくない場合や許容範囲外のレイテンシーを要した場合など、ユーザーが期待する結果を返せない状態全てを意味する。単純なロードバランサーの5XXエラーコード数カウントだけでは不十分なことが多く、ユーザー視点から期待値と結果の整合性を担保する外形監視の導入が推奨される。
- 飽和度(Saturation)
- 各リソースの配置済み容量の内、使用中の割合を示したもの。各サービスのボトルネックとなる可能性が高いリソースほど飽和度監視の優先度が高い(例:CPU使用率に応じてオートスケーリングするサーバークラスタのメモリ使用率)。反対に、ボトルネックになりにくいリソースは優先度が低い(例:CPU使用率に応じてオートスケーリングするサーバークラスタのCPU使用率)。
監視を実現するためのAWSサービス
監視の実現するサービスはそれらが達成するObservabilityの要件(参照:Observabilityとは)に応じて、以下の3種類に分類される。
- 計測・通知を行うサービス(1を達成)
- 計測手段: CloudWatch Logs、Cloudwatch Metrics、CloudWatch Synthetics、Budgets、TrustedAdvisor、CloudTrail、GuardDuty、Inspector、Config Rules、Health、X-Ray SDKとDaemon、AWS Distro for OpenTelemetry
- 連携手段: Cloudwatch Alarm、EventBridge、SecurityHub
- 通知手段: Amazon SNS、ChatBot
- ログ・メトリクスデータを保管するためのサービス(2と3を達成)
- ストレージ: S3、CloudWatch Logs、CloudWatch Metrics
- ストリーミング: Kinesis Data Firehose
- 可視化を行うサービス(2、4と5を達成)
- CloudWatch Dashboard、QuickSight
計測通知を行うサービス
計測手段
| サービス | 詳細 |
|---|---|
| Amazon CloudWatch Logs | 各AWSサービスやアプリケーションが生成するログを集約するためのサービス。ログ検索機能も提供される。 |
| Amazon CloudWatch Metrics | 各AWSサービスやアプリケーションが生成するメトリクスを集約する為のサービス。 |
| Amazon CloudWatch Synthetics | Synthetic Monitoring(いわゆる外形監視)機能を提供するサービス。 |
| AWS Budgets | AWS利用料金を監視する機能を提供するサービス。 |
| AWS TrustedAdvisor | コストの最適化、パフォーマンス、セキュリティ、耐障害性、サービスクォータに関するチェックを行うサービス。 |
| Amazon Guard Duty | VPCフローログやDNSクエリログ等のAWS上のワークロードに関する情報をスキャンし、セキュリティ上の脅威を検出するサービス。 |
| Amazon Inspector | EC2インスタンス、ECRコンテナイメージ及びLambdaをスキャンし脆弱性診断を行うサービス |
| AWS Config Rules | AWSリソースの設定変更を管理するサービス。 |
| AWS Health | AWS障害やメンテナンスに関する情報を提供するサービス。 |
| AWS X-Ray SDKとDaemon | 分散アプリケーションのトレースを取得するためのサービスであるX-Rayのトレース収集用SDKとDaemonコンテナ。収集したトレースはX-Rayコンソール上で可視化することができる。 |
| AWS Distro for OpenTelemetry | 分散アプリケーションのトレースを取得する為のオープンソースプロジェクトであるOpenTelemetryのAWS用ディストリビューション。X-Rayより実装コストが高いが、以下のような場合においては有力な候補となる。 - マルチクラウドでありAWSとそれ以外のクラウドプロバイダーのトレースデータを一元管理したい場合 - オープンソース性を重視する場合 - Zipkin、Jaeger、Prometheusなどのパフォーマンス監視ツールへトレースを送信したい場合 |
連携手段
| サービス | 詳細 |
|---|---|
| Amazon CloudWatch Alarm | CloudWatchメトリクスの値が特定の条件に合致した際にアラーム状態となる。 アラーム発生イベントはSNSトピックへ連携することができる。 |
| Amazon EventBridge | AWS上で発生する数多くのイベントがEventBridgeに集約される。 特定のイベントの発生をSNSトピックへ連携することができる。 |
| AWS SecurityHub | セキュリティ関連のイベントを集約する事ができるサービス。 SecurityHubに集約されたイベントをEventBridgeへ連携させることにより、最終的にSNSトピックまで繋げることができる。 |
通知手段
| サービス | 詳細 |
|---|---|
| Amazon SNS | Email、SMSテキスト、プッシュ通知などを通したA2P(Application to Person)通知機能を提供するサーバーレスサービス。 |
| AWS ChatBot | Amazon SNSと併用することで、簡単にSlackへの通知機能を実現するサービス。 CloudWatchアラームやSecurityHubの検出結果などのイベントをSlackへURLや画像付きで投稿する。 |
以下の図に示されるよう、ログやメトリクスは途中複数の中間サービスで集計され、異常と判断される場合EメールやSlackへ通知される。トレースは異常発生時の問題切り分けやパフォーマンス分析が主な用途であり、異常・正常の判定には用いられないため、以下の図には含まれない。
ログ・メトリクスデータを保管するためのサービス
ストレージ
| サービス | 詳細 |
|---|---|
| CloudWatch Logs | CloudWatch Logs自体にログを保管管理させることができる。保存期間やアクセス頻度によってはコスト最適化のためS3へのエクスポートも検討すべきである。 |
| CloudWatch Metrics | 期間の上限はあるが、CloudWatch Metrics自体にメトリクスデータを保管管理させることができる。上限を超えて保管する場合や、分析可視化ツールのソースとして利用する場合、S3へエクスポートする必要がある。 |
| S3 | オブジェクトストレージサービス。データのアクセス頻度に応じて複数ストレージクラス存在する。QuickSightなど分析・可視化ツールのソースとして利用するためや安価なストレージクラスであるS3 Glacierへアーカイブするために利用されることがある。 |
ストリーミング
| サービス | 詳細 |
|---|---|
| Amazon Kinesis Data Firehose | ストリーミングデータのリアルタイムの為のサービス。監視の文脈ではCloudWatch LogsやCloudWatch Metricsへ配信されたデータをS3へ転送する際に使われることが多い。 |
可視化を行うサービス
| サービス | 詳細 |
|---|---|
| Amazon CloudWatch Dashboard | CloudWatch Logs、Metrics、Alarmなどを可視化したウィジェットを配置したダッシュボードを作成できるサービス。 |
| Amazon QuickSight | S3やDBをデータソースとしデータの分析・可視化するためのBIツール。 |
| AWS X-Rayコンソール | X-Ray SDKやDaemonで収集したデータをマネジメントコンソール上で可視化する。 |
通知についての考え方
システムの監視機能はメトリクス、ログ、トレースを元にシステムの状態を継続的に診断する。異常が検知された場合、システムは人へ介入を促す必要がある。通知方法には問題の緊急度に応じて以下の3つに分類される。
- ページ: 即時対応が必要
- チケット: 数日以内に対応が必要
- ロギング: 対応は不要だが記録として残す(自動修復により解決された場合など)
ページは即時対応が必要な事象が発生した場合に可能な限り厳密に限定する必要がある。
即時対応が不必要にも関わらずページされるという事象が多発した場合、運用管理者へ不必要な負担をかけてしまうだけでなく、実際に緊急度の高いページが発生した場合に運用管理者が適切な緊張感を感じなくなってしまう可能性がある。
また一度発生したページは可能な限り再発しないよう、根本的原因の解決や対応の自動化を検討する必要がある。
問題の緊急度の高さはシステムによって異なるが、ユーザーへの直接的な影響が発生している場合はページ通知が適切な場合が多い。
以下に各異常の通知方法の分類の一例を示す。
通知方法の分類例
| 状態 | 通知方式 | 理由 |
|---|---|---|
| 5XXエラーが多発している | ページ | ユーザーが期待する結果をサーバーが返せていない可能性が高いため |
| 各リクエストへのレスポンスタイムが正常値を大幅に超えている | ページ | ユーザーが直接感じることができる異常のため |
| サーバーCPU使用率が100%になった | チケット | オートスケーリングが正しく機能していないなどの異常がある可能性は高いが、ユーザーへの直接的影響を計る指標ではないためチケットが適当である。ユーザーへの直接的影響が発生している場合、レスポンスタイムの監視によりページ通知がされるため、本項目はチケットで十分である。 |
| 毎週末実行されるバックアップジョブが失敗した | チケット | バックアップが失敗しても、ユーザーへ直ちに影響は発生しないためページは適当でない。しかし失敗の原因分析やバックアップの再試行が必要なためチケットが適当。 |
| ヘルスチェックに失敗したインスタンスが置換された | ロギング | 自動修復により解決され人が介入する必要はないため |
| 4XXエラーが少量発生している | ロギング | 4XXエラーは主にクライアント起因のエラーのため、サーバーが正常な場合でも発生することがあり、少量であれば問題があるとは考えられないため |
なお上記は通知方式の分類例の一例であり、すべてのシステムにおいて必ずしも上記の例が最適であるとは限らない。
改訂履歴
| 改訂年月日 | 改訂理由 |
|---|---|
| 2023 年 03 月 27 日 | 新規作成 |