はじめに
クラウドでない環境(オンプレミス)でシステムを動作させるには、PCやルーターといったハードウェアの準備であったり、それらを動かすための電源ケーブルやLANケーブルなどの配線であったり、OSのインストール・ネットワークの設定といったインフラ環境の準備を行う必要があります。
クラウド上でシステムを動作させる場合にも同じようにクラウド上の仮想的な空間にコンピュータやネットワーク、ストーレジといったインフラ環境を準備する必要があります。
クラウド上にインフラ環境を構築する手段として下記のような方法があり、それぞれにメリット・デメリットがあります。
・クラウドベンダーが用意している管理コンソールを使う ・クラウドベンダーが用意しているSDKを使う ・サードパーティ製のツールを使う
クラウドベンダーが用意している管理コンソールを使う
ブラウザからクラウドベンダーが用意している管理コンソールにアクセスして直感的な操作でクラウド上に環境を構築することが出来ます。
下の画面は、AWS・Azure・GCP・OCIの管理コンソールになります。
どのクラウドベンダーの管理コンソールも似たようなUIとなっており、使用したいクラウドサービスをGUI上で選択して必要な項目を入力していくことでサービスを使用することが出来るようになります。
管理コンソールを使って環境を構築することのメリットは、GUI上で必要なことを直感的に入力してくことで使用したいサービスを使えるようにすることが出来る手軽さとなります。
サービス内容をちょっと確認したい場合などに管理コンソールから手軽に作成したり破棄したりすることが出来ます。
デメリットは、同じ環境を構築しなければならないような場合に、GUI上で一つ一つ入力操作していくことになるので時間もかかり入力誤りなどによるミスが発生する確率が高まることです。
また、設定内容や変更履歴を管理する場合には、別途記載する等して残していく必要があるため記載忘れなどが発生する可能性があります。
クラウドベンダーが用意しているSDKを使う
クラウドベンダーが用意しているSDKを使用することでコマンドラインやプログラムでクラウド上の環境を操作する事が出来るようになり、コードでインフラを管理するIaC(Infrastructure as Code)を実現する事ができます。
各ベンダが用意しているSDKは、下記のリンク先からコマンドラインで操作するためのCLIやJavaScript・Python・Java・.Netなど各プログラム言語用のSDKをダウンロードすることが出来ます。
SDKを使用するメリットは、コードによって環境が管理されるため同じ環境を再現することも簡単に出来るようになり、環境構築を自動化しやすくなるので人の操作ミスによる人為的な事故などを防ぐことが出来るようになる事です。
また、コードなのでgitなどのコード管理ツールを使って変更履歴などを管理することが出来ます。
デメリットは、コードを理解出来る必要がありドキュメントなどを読みながらコーディングしてく必要があるので学習コストがかかり最初の構築までに時間がかかることです。
また、SDK自体も各クラウドベンダーごとに異なるのでマルチクラウドと言われるような複数のクラウドベンダーのサービスを使用する必要があるような場合、各クラウドベンダーのSDKの使い方を覚える必要があるため学習コストが多くかかることになります。
サードパーティ製のツールを使う
コードでインフラを構築・管理するためのサードパーティ製のIaCツールを使用することでクラウド上に環境を構築する事が出来ます。
サードパーティ製のツールとしては下記のようなものがあります。
ツール名 | 特徴 |
---|---|
Terraform | HashiCorp社が開発しているOSSのツールで、HCLという専用の言語でクラウド上に構築する環境を定義することが出来ます。 クロスプラットフォームに対応しておりWindows・macOS・Linuxなどで動作させることが出来ます。 対応しているクラウドベンダーも数多く、IaCツールのデファクトスタンダードとなっています。 |
Pulumi | Pulumi社が開発しているOSSのツールで、JavaScript・TypeScript・Python・Go・.Netといった複数のプログラム言語に対応しているので自分の使いなれたプログラム言語を使ってクラウド上に構築する環境を定義することが出来ます。 クロスプラットフォームに対応しておりWindows・macOS・Linuxなどで動作させることが出来ます。 Terraformほどではありませんが複数のクラウドベンダーに対応しています。 |
サードパーティ製のツールを使用するメリットは、「クラウドベンダーが用意しているSDKを使う」で記載したメリットと同様に、コードによって環境が管理されるため同じ環境を再現することも簡単に出来るようになり、環境構築を自動化しやすくなるので人の操作ミスによる人為的な事故などを防ぐことが出来るようになる事とコードなのでgitなどのコード管理ツールを使って変更履歴などを管理することが出来るようになる事です。
これに加えてTerraformのように複数のクラウドベンダーに対応したツールを使用することでマルチクラウド対応が用意になりツールの使い方を覚える学習コストも抑えることが出来ます。
デメリットは、ツールによって得手・不得手があるのでどのツールを使って何を実施するのかの設計が出来る必要があるのと、コードを理解出来る必要がありドキュメントなどを読みながらコーディングしてく必要があるので学習コストがかかり最初の構築までに時間がかかることです。
Terraformの使い方は、下記を参照してください。
まとめ
クラウド上でのインフラ構築は、オンプレのように物理的な準備が必要ないので、PC上から簡単に構築や破棄を行うことができます。
構築するための方法も管理コンソールを使ってGUI上から簡単に構築することやプログラムを使ってインフラをコードで管理しながら構築することも出来ます。
自動化するための方法も進んでおり、Terraformでクラウド上にインフラ環境を構築した後、構成管理ツールのAnsibleと連携させてOSやアプリケーションの構成まで行ってしまい、その後の検証作業も自動的に行うようにすることも出来ます。
クラウドは、サービス自体のバージョンアップや機能のスピードも早くツール自体のバージョンアップも早いので、まずはさわって試していくことが重要ではないかと思います。
クラウドを触ったことがないような場合は、下記のリンクにあるクラウド無料枠を活用して試してみることも出来ます。
下記に無料枠で試せるTerraformのコードもあるので試してみてください。
また、すでにクラウド上に環境を構築済みの場合には、下記のリンクにあるようなツールやクラウドベンダが用意しているサービスを使用して、構築済みの環境をTerraformのコードに変換することが出来るので後からIaC対応を行うことが出来る場合もあります。
Comment