HOME»情報処理安全確保支援士令和5年秋期»午前Ⅱ 問22
情報処理安全確保支援士令和5年秋期 午前Ⅱ 問22
問22
目的別のサービスが多数連携して動作する大規模な分散型のシステムでは,障害時の挙動を予知することが困難である。このようなシステムにおいて,ステージング環境や本番環境で意図的に障害を引き起こしてシステムの挙動を観察し,発見した問題を修正することを継続的に実施し,システムの耐障害性及びシステム運用の信頼性を高めていく手法はどれか。
- DevOps
- Infrastructure as Code
- カオスエンジニアリング
- テスト駆動開発
分類
テクノロジ系 » ソフトウェア開発管理技術 » 開発プロセス・手法
正解
ウ
解説
- DevOps(デブオプス)は、開発を意味する Development と運用を意味する Operations を組み合わせた造語で、開発担当チームと運用担当チームが緊密に協力・連携し、自動化ツールなどを活用して柔軟かつスピーディに開発を進めるソフトウェア開発手法です。
- IaC(Infrastructure as Code)は、インフラストラクチャ、すなわちシステムの動作基盤となるサーバ、ネットワーク、OS、ミドルウェアなどの設定をプログラムのようなコードとして管理することで、その変更やセットアップ作業をソフトウェアで自動化する手法です。
- 正しい。カオスエンジニアリング(Chaos Engineering)は、「ITの避難訓練」のようなイメージのものであり、サービスが多数連携して動作する大規模な分散型のシステムにおいて小規模の障害(サーバダウンや応答遅延など)を意図的に発生させ、特定のサービスが一時的に使用できなくなったときにシステムがどう対応するかを把握する取組みのことです。Netflixが導入したことで注目されるようになった手法です。
あえてテスト環境ではなく本番環境で障害を起こし、自動復旧の仕組みが実際に想定どおりの動きをするかを確かめることで、テスト環境ではうまく自動復旧したが、本番環境ではうまく復旧しなかったというリスクを低減することを目的とします。 - テスト駆動開発は、プロダクトコードと並行してテストコードを書き、小まめに実行して結果を見ながら開発するというテストファーストの開発手法です。テストをパスする最低限の実装を行うことで求める機能を明確化し、機能を維持したままコードを洗練していくという手順で開発を進めます。