技術・機能解説、ノウハウ|オンプレxクラウド運用管理
Infrastructure as Codeのメリットとデメリット|ITインフラの運用自動化
ITインフラの管理に変革をもたらす考え方として、ITインフラをコード化する「Infrastructure as Code(IaC)」に注目が集まっている。
理由は、クラウドの台頭から物理的な制約が少なくなったことによって、より柔軟性のあるITインフラが求められているためだ。
Infrastructure as Codeのメリットとデメリット、及び注意点とは?
そこで、Infrastructure as Codeの匠ことCTCテクノロジーの小川辰夫氏に、ITインフラのコード化のメリットやデメリット、導入する上での注意点について尋ねてみた。
- 小川辰夫
- CTCテクノロジー
- テクニカルサポート本部 テクニカルサポート第3部 ネットワークサポート第2課
- テクニカルマネージャー
- 経歴
- 18年間、ネットワーク系のテクニカルサポート、ベンダーコントロールからフィールドエンジニアへのサポート業務に従事
- 現在は主にセキュリティ、ワイヤレス製品を担当している
- CTCテクノロジー
▼ 目次
・Infrastructure as Codeのメリットとデメリットとは
・IaCを導入する上での注意点や課題とは
・IaCに必要なスキルセットを手に入れる方法
1. Infrastructure as Codeのメリットとデメリットとは
Infrastructure as Codeの概要、メリット、デメリットについて尋ねてみた。
Q1-1. Infrastructure as Codeとは?
小川 Infrastructure as Code(以下、IaC:アイエーシー) とは、OS、ミドルウェア、ネットワークといったITインフラストラクチャをコード化することで、ITインフラの運用に関わる膨大な作業を自動化する、或いは、手作業では不可能だった新しいプロセスを実現するための考え方です。
Q1-2. IaCが注目されている理由とは?
小川 ITインフラの管理にかかる負荷を軽減できる見込みがあるためです。
高度化し続けるITインフラを人手で全て管理することは不可能になりつつありますが、これを根本から解決するのがIaCです。
IaCの本質は、ITインフラをコード化することにより、新しい運用管理の形を創造できるところにあります。
また、多くの国内企業がデジタルトランスフォーメーション(以下、DX)を推進していますが、IaCはDXを支える重要な要素として考えられています。
インフラエンジニアは、IaCを意識することで活躍できるフィールドが広がるでしょう。
Q1-3. IaCのメリットとは?
小川 次に挙げるフェーズでメリットが考えられます。
- 開発フェーズ
- 開発期間の短縮
- 人的リソースの有効活用
- 運用フェーズ
- 信頼性・保守性の向上
- 属人性の排除
将来的には自動化の次のフェーズである自律化にも繋がっていきます。
Q1-4. IaCのデメリットとは?
小川 主に次の点です。
- 導入までに多くの時間とコストがかかる
- すぐに効果を得られるわけではないため、組織内で意見の相違など混乱が生じてしまう場合がある
Q1-5. IaCの身近なユースケースをお教えください
小川 私が所属する部署には、お客様のシステムの構築支援や障害調査に使用するための、様々な検証機器があります。
お客様への支援を迅速化する目的で、IaCにより検証環境を素早く構築したり、もとに戻したりできるような仕組みを実現しています。
2. IaCを導入する上での注意点や課題とは
IaCを推進する上での注意点や課題、推奨事項について尋ねてみた。
Q2-1. IaCの注意点とは?
小川 すぐ効果を得られるわけではないため、焦って強引に進めると逆に業務品質の低下を招く恐れがあります。
Q2-2. IaCの課題とは?
小川 主な課題は、必要な知識とスキルを持つエンジニアが不足していることが挙げられます。
Q2-3. IaCを導入するための推奨事項とは?
小川 ずばり、次の点が挙げられます。
- リスクを最小限に押さえるために、スモールスタート&フェイルファーストで進める
- 企業や組織の体制・風土に合った進め方を模索する
- エンジニアを育成・確保する
3. IaCに必要なスキルセットを手に入れる方法
最後に、インフラエンジニアがIaCに必要なスキルセットを手に入れるための方法について尋ねてみた。
Q3-1. IaCで使われている技術やツールは?
小川 目的により利用される技術やツールは様々ですが、代表的なものとして Git、コンテナ、構成管理ツールが挙げられます。
- Git
- Gitとは、コードのバージョン管理を行う
- GitHubやGitLabなど、コードの開発を支援するリポジトリサービスを利用する
- コンテナ
- コンテナとは、OS上に独立した軽量なアプリケーションを実行する環境
- Dockerなどコンテナエンジンで動作する
- コンテナはテキストベースのDockerfile から作成することができる
Q3-2. インフラエンジニアは何を習得するべきですか?
小川 役割によって求められるスキルセットは異なりますが、主に次の点を習得すると良いでしょう。
- サーバやミドルウェア、ネットワーク、クラウドなどの専門知識
- クラウドに関連する仮想化技術
- DevOpsやCI/CDといった開発手法
- 最新の ITを理解して使いこなす能力(ITリテラシー)
Q3-3. 何から学び始めれば良いですか?
小川 次の技術から学ぶことをお勧めします。
- Git
- Docker
- Python
- Ansible
このうち、IaCの関係が深く活用の幅が広いAnsibleやPythonから学習を始めると良いと思います。
ただし、プログラミングの経験がない方は、まずはバージョン管理システムとコードエディタに慣れることから始めると良いでしょう。
理由は、プログラミング経験がない状態からコードを書こうとすると、途中で挫折する可能性が高いためです。
現在、バージョン管理システムのデファクトスタンダードは Git です。
Gitは「人類には早すぎたテクノロジー」と語られるほど、使いこなすには深い知識と経験が要求されます。
しかし、一般的な使い方であれば数時間の学習で理解できます。
学習したい人に向けた様々な研修や書籍がありますし、Web上の入門者向け学習サイトでも十分です。
基本的な仕組みを理解できた後、ホスティングサービスを利用しつつ、業務へのIaC導入を意識しながら必要なツールを選定し、それについての学習を継続すると良いでしょう。
Q3-4. おすすめのホスティングサービスとは
小川 GitHubやGitLabといったホスティングサービスがおすすめです。
Gitでバージョン管理する対象はソースコードである必要はありません。
テキストベースのもの、例えば、随時更新する個人的な業務メモでも構いません。
Q3-5. お勧めのコードエディタは?
小川 Microsoft社製のVisual Studio Code(VSCode)がおすすめです。
軽量で使いやすく、拡張機能も豊富で、Gitと連携する機能もあります。
また、自分にあったカスタマイズにより、従来業務の効率化に役立てながら使い方を習得することができます。
Q3-6. お勧めの書籍があればご紹介ください
小川 IaCの考え方を理解するうえでは、次の書籍をお勧めします。
- オライリー・ジャパン
Q3-7. 体系的に学べる研修があればご紹介ください
小川 IaCの学習や実装に関心のある方、或いは課題を抱える方に対しては、次の研修をお勧めします。
- CTC教育サービス(https://www.school.ctc-g.co.jp/)
- コンテナ
- プログラミング言語
- DevOps/Ansible/資産管理
まとめ
IaCは下記を目的に、ITインフラストラクチャをコード化する考えだ。
- ITインフラの運用の自動化
- 新しいプロセスの実現
IaCを導入する上では下記を考慮する必要がある。
- リスクを最小限に押さえるために、スモールスタート&フェイルファーストで進める
- 企業や組織の体制・風土に合った進め方を模索する
- エンジニアを育成・確保する
一方で、IaCを習得するエンジニアは、自身のスキルに合わせて学習のスタートラインと目標を定め、幅広く技術領域を拡張するとともに、常に最新トレンドのキャッチアップに心がける必要がある。
必要に応じて、知識や技術を体系的に学習できる研修もおすすめだ。