見出し画像

クオリティエンジニアリングに有益な6つのAWSサービス

原文:A Taste Test of AWS Services for the Software Quality Engineer
作者:Zane Scheel, Taylor Wagner and Deborah Calderon
日本語訳:Sydney Leigh Annatu and Haruka Makabe

AWSのサービスを活用して、テストをサポートし、ソフトウェアプロダクトを改善する方法を考えたことがありますか?この記事では、AWSの6つのサービスを紹介し、クラウド上で高品質なソフトウェアプロダクトをビルドするためにどのように活用できるかを解説します。

各サービスの紹介とともに、クオリティエンジニア(QE)が実際に活用した例や、フォーカスした6つのサービス以外のAWSのサービスも紹介しています。皆さんもぜひ、紹介したサービスを調べてみてください。

Amazon CloudWatchとAWS CloudTrail - 予測と自動化で効率的にテストする

クオリティエンジニアリングの主な焦点は予測です。テスト自動化を設計・実施する時、QEはソフトウェアの結果を予測する必要があります。予想される結果を検証し、予想外の結果によってテストが失敗することを確認します。

Amazon CloudWatchは、アラームの設定、ログの維持、イベントの作成など、アカウントのアクションに自動的に対応するように設定できるメトリクスを収集することで、リソース利用、アプリケーションパフォーマンス、運用のヘルスを効率的に監視します。Amazon CloudWatch LogsをAWS CloudTrail(AWSアカウント上のすべてのAPIコールの履歴を記録・保存するサービス)と組み合わせることで、AWS顧客はAWSアカウントのリソースを完全に可視化することができます。QE の場合はアプリケーションに関する洞察と情報を提供できるサービスは、テストの効率化に不可欠です。

下の例を読むときは、図を参照してください

理解を深めるために、ある例を見てみましょう。例えば、大量のデータを取り込むアプリケーションがあり、そのデータが複数のLambda関数を経由して実行される必要があります。このプロセスは、Lambda A関数がデータベースAでクエリを実行することから始まります。Lambda A関数はクエリの結果を受け取り、csvファイルをS3バケットに保存します。最後に、Lambda B 関数は、ファイルからデータベース B にデータを入力できます。データベース B では、メトリック値の数を決定するためにいくつかの計算が行われるように設定されています。1 つのメトリックはエラーの数です。Amazon CloudWatch Logs Insightsのメトリック値は、AWS CloudTrailのログを特定の値について評価することができます。Amazon CloudWatch Alarmをトリガーして実行の懸念をチームメンバーに知らせることができる「エラー数」メトリックに閾値を設定することができます。

この自動化を取り入れると、複数のLambda関数からのログを同時にレビューし、役に立たない何千ものログをレビューすることなく、特定のユースケースのためにフィルタリングできるため、検証プロセスが大幅に高速化されます。このプロセスを通じて、データが全プロセスを通過していない、データが重複しているなどのバグを見つけることもでき、QEはフェイルセーフを作成してエラーの数を減らすことができるようになります。データの可視化がお好きなら、Amazon CloudWatchにはカスタムダッシュボードを設定し、メトリクスをグラフで表示する機能があります。

上記で触れた各AWSサービスはAWSサイトを参照ください。:
· AWS Lambda: https://aws.amazon.com/lambda/
· Amazon CloudWatch: https://aws.amazon.com/cloudwatch/
· AWS CloudTrail: https://aws.amazon.com/cloudtrail/
· Amazon S3: https://aws.amazon.com/s3/

AWS X-Ray - 遅いリクエストを特定しデバックプロセスを効率化する

クオリティエンジニアは、多くの遅いAPIリクエストを持つ複雑なプログラムを扱うことがよくあります。これらのリクエストが蓄積すると、キューイングによってアプリケーションの遅延が発生し、ユーザー エクスペリエンスが低下する可能性があります。ここで AWS X-Ray の出番です。X-Rayは、プログラムの内部でこれらの遅いリクエストを特定するために使用することができるサービスです。

AWS X-Rayは、APIリクエストのそれぞれがアプリケーションを通過する際の視覚的なマッピングを作成し、QEが効率的にデバッグできるようにします。AWS X-Rayは、リクエストとレスポンスからデータトレースを収集します。これらのデータトレースの収集により、AWS X-Rayは、トレースの受信数沿ってトレースの処理にかかった時間を表示する詳細なマップを作成します。そこから、QEはトレースを分析し、最も時間がかかったものを見つけ、その結果を開発者に伝え、アーキテクチャ全体のリクエストのフローを改善することができます。

また、分析を簡単にするために、AWS X-Rayは特定のリクエストや特定の時間フレームタイムに作成されたものを表示するフィルタリングシステムを備えています。AWS X-Ray は、トレースが送信されたブラウザのタイプを特定することもできます。 AWS X-Ray はセキュリティにも配慮しており、機密情報の送信時にデータを暗号化することで安全なシステムを維持するのに役立ついくつかの追加機能を提供します。 これは、チームから要求されたセキュリティ ニーズに合わせて構成できます。

QEにとって、これらの機能は、デバッグプロセスを効率化し、ネットワークのボトルネックなどの問題を発見するのに役立つために有益です。詳細な情報が期待できる場合は、Amazon CloudWatchの代わりに、またはAmazon CloudWatchと組み合わせて使用することができます。

AWS X-Rayの詳細はAWSサイトを参照ください。:

  • AWS X-Ray: https://aws.amazon.com/xray/

Amazon X-Ray サッシュボード

AWS Device Farm - アプリケーションのテスト工数短縮

企業では、アプリケーションを複数のブラウザやデバイスで動作させることが求められており、クオリティエンジニアにとって多大な時間を費やすことになります。そこで、多数の必要なプラットフォームでアプリケーションをテストする時間を短縮するソリューションとして、AWS Device Farmが登場します。

AWS Device Farmは、カスタムの自動テストを複数のブラウザやデバイスで同時に実行する機能があります。その過程で、ブラウザやデバイスのいずれかに起因するテストの失敗を記録します。また、AWS Device Farmは、実行されたテストのスクリーンショットやビデオも撮影します。テストは、コミットがプッシュされた時など、必要な時に実行されるように自動化することもできます。エンジニアは、使用するWi-Fiや発見された場所など、テスト環境の設定をカスタマイズして、正確なテストを行うことも可能です。AWSデバイスファームは、サポートされているフレームワーク、組み込みテスト、手動テストなど、多くのオプションを提供しています。

これらの機能は QE にどのように役立つでしょうか? リモート テストとカスタマイズ可能なテストにより、テストするブラウザーまたはデバイスの特定の部分についてより深いインサイトを得ることができます。ビデオやスクリーンショットを含むすべてのログは、別々の環境で発生した問題をより正確にデバッグするために使用することができます。そして最後に、自動化によって、開発中に行われた変更に対応したデバイスを一貫して動作させることができるようになります。全体として、このサービスは、QEとして貢献する可能性のあるアプリケーションで、特殊なユースケースを実装するのに役立ちます。

AWS Device Farmの詳細についてはAWSサイトを参照ください。

  • AWS Device Farm: https://aws.amazon.com/device-farm/


AWS Fault Injection Simlulator - コントロールされた実験で回復性とパフォーマンスを改善する

クラウドアーキテクチャやマイクロサービスは、ますます複雑化しています。この複雑さは、予測な障害や中断につながります。カオスエンジニアリングは、障害が停止する前に特定するための規律あるアプローチです。AWS Fault Injection Simulator(FIS)は、カオスエンジニアリングの原則に基づいています。このサービスでは、アクション、ターゲット(AWSリソース)、ガードレールに基づき、コントロールされた障害のインジェクション実験を実行することができます。この実験により、システムの不具合のポイントを特定し、そのポイントを未然に改善することができます。

AWS FISの導入はシンプルです:

1. 事前に作成されたテンプレートを使用して実験を作成し、目的の中断を生成します。 テンプレートには、以前に定義された Amazon CloudWatch アラームに達した場合に実験が停止するように、停止条件も含まれています。
2. 実験を保存します。 保存したら、実験を実行するか、パイプラインに含めます。
3. 実験結果を表示します。 最初の AWS FIS セットアップに基づいて、AWS FIS コンソールまたは Amazon CloudWatch や AWS CloudTrail などの他のサービスで結果を監視できます。
4. 必要に応じて、アーキテクチャのパフォーマンスと回復力を向上させるためのアクションを実行します。

なぜQEはAWS FISやカオスエンジニアリングに関心を持つべきなのか?なぜなら、エンジニアはコードやアプリケーションの動作だけでなく、自分たちのチームが制作しているもの全体に関心を持つべきだからです。例えば、AWSインフラ上のアプリケーションは、顧客のためにビルダーされました。QEは、手作業によるテストと強なテスト自動化フレームワークの作成によって、アプリケーションが動作することを確認し、現在はアプリケーションの中で動作しています。FISでフォールトトレランス、回復力、アプリケーションパフォーマンスに関連する追加チェックを提供することも、製品の品質に組み込むことができ、その結果、よく設計されテストされたアプリケーションになります。

AWS FISの情報についてはAWSサイトを参照ください。

  • AWS Fault Injection Simulator: https://aws.amazon.com/fis/

EC2 インスタンスを再起動するための AWS FIS 実験テンプレート

AWS Macie - 機密データを検出して保護する

機械学習(ML)とパターンマッチングを使用して、データセキュリティサービスであるAmazon Macieは、機密データを発見し、セーフガードすることができます。最初に有効にすると、Macieは既存のS3バケットのスキャンを開始します。このスキャンはダッシュボードに表示され、ユーザーの組織外で共有され、暗号化されていないパブリックに設定されているバケットを特定します。ユーザーは、バケットごとに機密データのスキャンを実行するジョブを設定することができます。ジョブは、頻度(毎日、毎週、毎月)に基づき、管理された識別子、カスタム識別子、キーワードを含む/含まないを設定することができます。

QE は、ログやファイルからPersonal Identifiable Information(PII)やProtected Health Information(PHI)が削除されていることを確認する必要がある場合があります。顧客のクレジットカード決済をデジタルウォレットに追加するAPIを想像してください。要件の1つは、APIによってプロデュースされるAmazon CloudWatch LogsからすべてのPIIを冗長化することです。Amazon Macieはこのような状況で使用する重要なセキュリティ・チェックになります。まず、Amazon Macieを有効にし、既存のデータをスキャンしてPIIを確認します。次に、Amazon CloudWatch Eventを追加して、新しいログをAmazon S3バケットにコピーするLambda関数をトリガーします。最後に、S3バケット内の新しいデータをスキャンして、PIIを確認します。

Amazon MacieがQEの機密データ守る方法の検討にどのように役立つかを簡単にまとめたものです。Amazon Macieの導入方法の詳細な手順については、Amazonの「Getting Started」チュートリアルとドキュメントを次のリンクからチェックしてください:https://docs.aws.amazon.com/macie/latest/user/getting-started.html

Amazon Macie サマリー ダッシュボード

次のステップと実装

AWSは、多様なアプリケーションのニーズに応えるために多くのサービスを提供していますが、品質の観点から役に立ついくつかのサービスを紹介し、その利点を説明することができたと思います。読者には、AWSが提供する他のサービスだけでなく、様々のサービスをご自身で調べたり試したりすることをお勧めします。簡単な練習として、AWSのサンドボックスオプションを無料から最小限のコストでチェックしてみてください。


この記事が気に入ったらサポートをしてみませんか?