IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウドネイティブで行こう

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第7回 イミュータブルインフラストラクチャ (宮崎悟) 2023年1月

前回は、サービスメッシュについて説明しました。今回は、イミュータブルインフラストラクチャについて説明します。

イミュータブルインフラストラクチャとは

イミュータブルインフラストラクチャ(Immutable Infrastructure)とは、基盤環境を変更せずに運用するという考え方です。

イミュータブルインフラストラクチャ前

ベアメタル環境を構築するためには、手動でサーバやネットワークなどのハードウェアをセットアップします。そこに必要なソフトウェアをインストールしていました。このような手動での環境構築は、とても時間がかかり、効率が悪いものでした。長期間管理する場合も、OS、パッケージ、ライブラリ、アプリケーションを定期的に直接市変更します。更新時の動作検証のためには、同じ構成のハードウェアを使用し、同じ環境を手動で構築していたため、それを確保するのは予算的、運用的に問題があります。

ハードウェアを仮想化した IaaS の登場により、テスト環境用のハードウェアを用意する必要はなくなりました。依然として本番環境と同じテスト環境を用意し、検証が必要性な点は変わりません。近年は、IaC(Infrastructure as Code)という、環境構築の自動化が発展してきて、同じ環境を作成することは容易になってきました。

イミュータブルインフラストラクチャ後

イミュータブルインフラストラクチャは、安定した環境を用意することにより、安定したサービスの提供に寄与します。もちろん、インフラストラクチャ前と同じように、OSやアプリケーションの更新は、定期的に行わなければいけません。ここで活用できる技術が、コンテナ型仮想化です。

アプリケーションを動作する環境をコンテナイメージ内に作成することで、安定した動作環境を提供します。このコンテナイメージで、アプリケーションやサービスのテストを十分を行うことができます。テスト完了後は、確認したイメージをそのまま本番環境で動作させるだけで済みます。

Docker HubではPython、PHP、JavaScriptなどの言語を使用する環境が、正式イメージとして公開されています。これを利用することで、言語、ライブラリのバージョンを指定でき、アプリケーションのテストに集中できます。

基盤をコンテナ化することは、コンテナが動作するならば、サービス提供する環境を柔軟に選択可能であることを意味します。このため、環境依存する部分は少なくなり、アプリケーション作成者はアプリケーション開発に集中できます。 サービスをリリースした後、アプリケーションやサービス時に問題が発生したり、新たな脆弱性が見つかることは、今までと同じようにあります。このような場合、アプリケーションやソフトウェアバージョンを修正し、その環境をコンテナイメージとして作成します。このイメージのテスト後、本番環境で新しいコンテナイメージを起動し直すことで対処できます。 このようなことからアプリケーション開発者が、環境構築を担うことが多くなってきます。昔から運用などの下位工程より、設計などの上位工程で修正するほうが、バグを修正するコストが低いと知られています。開発者自身がコンテナ環境の構築まで行うのは、大きなメリットがあります。バグ修正を運用時ではなく、その前の工程で行うことをシフトレフトと呼びます。

アプリケーション開発と同様に、環境作成もコード化することで、通常の開発サイクルに含みやすくなります。これは、DevOpsと呼ばれる概念です。また、コンテナイメージを静的スキャンすることで、アプリケーションや含まれるソフトウェアの脆弱性、マルウェアなどを検知できます。開発、テスト、リリース、運用、セキュリティを一貫して行うことで、アプリケーションやサービスの品質向上につながります。

終わりに

今回は、イミュータブルインフラストラクチャについて説明しました。コンテナ化することで安定した環境が得られること、本番環境を変更しないことで安定したサービス提供できること、DevOps型の開発と相性が良いと分かります。次回は、宣言型APIについて説明します。次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes