ある開発チームがBicepを使ってAzureリソースをデプロイしている。Bicepファイルとして宣言的にリソースを管理する際に、ARMテンプレートのJSONと比較したBicepの主な利点を2つ選択してください。
- A. BicepはTerraformのstateファイルと完全互換であり、既存のTerraform管理リソースをそのままBicepに移行できる
- B. BicepはコンパイルなしにそのままデプロイAPIに送信でき、JSONへの変換が不要
- C. Bicepはモジュール(module)機能によりBicepファイルを再利用可能なコンポーネントに分割でき、大規模環境のコード管理が容易になる
- D. BicepはAzure以外のクラウド(AWS・GCP)にも対応しており、マルチクラウドデプロイが可能
- E. Bicepは宣言的なDSLでARMテンプレートのJSONより構文が簡潔であり、冗長なスキーマ宣言が不要なためコードが読みやすい
解答と解説を見る
正解: C, E
Bicepの主な利点として、第一にARMテンプレートのJSONより簡潔な宣言的DSL構文を持ち、プロパティの冗長な記述が減りコードの可読性・保守性が大幅に向上する点が挙げられる。第二にBicepのmodule機能により、再利用可能なBicepファイルをモジュールとして別ファイルに分離し、それを参照して大規模環境のインフラコードをコンポーネント化・再利用できる。選択肢BはBicepの実際の動作の誤解を含む。BicepはデプロイのときにAzure CLIまたはPowerShellがARM JSON形式にコンパイルしてAPIに送信しており、JSONへの変換は発生している(ただしユーザーはそれを意識しない)。選択肢DはBicepがAzure専用であるため誤り。選択肢AはBicepとTerraformのstateファイルは互換性がなく完全に誤り。