こんにちはZOAMONです。
これからこの記事ではクラウドをなぜ学ぶ必要があるのか、クラウドを学んでおくとどれほど良いことがあるのか、という点について、お伝えさせていただきます。
クラウドとは何か
そもそもクラウドとは何かと言う部分ですが、クラウドとはAWSやGCPのことを、ここでは指すとします。つまり、クラウドインフラのことで。自分のところでサーバーを立ててネットワークの配線をひいたりして、アプリケーションの実行環境を用意するオンプレミスの環境ではなくて、クラウド上でボタンをポチポチするだけで、サーバーを構築したりして、そのクラウド上に構築されたインフラを使って何かアプリケーション実行していくと言うようなものです。
IT業界の世の中の動向
今世の中の動向として、クラウドは必須のスキルとなってきています。といいますのも、今のほとんどのインフラストラクチャはクラウド上に構築されていて、ネットワークの配線をひいたりなど自分ですることはもうほぼなくなりました。これらは全てクラウドに置き換わっています。
そして、インフラは、アプリケーションを動かすためには必ず必要なものとなってきます。インフラ(基盤)というからには、生活のインフラである水や電気が生活に必要であるように、アプリケーションを動かすには絶対にサーバやネットワークのインフラは必要です。
ただ、サーバを構築したり、ネットワークを構築したり、それだけですと、既存のオンプレミスのインフラと何ら変わりないんですが、近年のクラウドは、高度な要求を実現することができるようになり、それに伴い、非常に高度なスキルを要求されるようになってきました。例えばサーバーレスアプリなどを作るための環境もそうですし、Dockerなどの仮想化の技術も非常に高度なものになってきました。そしてセキュリティーの所でもネットワークの切り分けなどが非常に簡単にボタン1つで行えるようになっていっており。クラウドによってもたらされる恩恵は非常に重要なものとなってきました。
結果として、クラウドができると言う事は非常にアプリケーションの中でも、重要な機能を付け加えることができると言う付加価値を高めることができるスキルとなってきております。これまでのように、ものが動くためのインフラを整える技術ではなくなってきているといえます。
クラウドによる付加価値
以上のように、クラウドができるとかなり幅広い分野でサービス価値をつけることができるということがいえます。そして、インフラ技術の凄いところは、上に乗るアプリケーションがどのようなものでも、それは活用できるということです。つまり、上に乗る技術がPythonで書かれたものでDjangoあろうが、Rubyで書かれたものであろうが、PHPで書かれたものであろうが、何でも活躍することができます。もちろん、アプリケーションがある程度対応がされていないと、インフラ側でいくらすごい技術を使ってもうまく動作しないと言うこともあり得るのですが、大半の場合はアプリケーション側での問題をクラウドインフラ側で吸収することができたりします。
例えばですが、ログインが必要なシステムで、社内で使うシステムの場合に、クラウドのセキュリティーを使うことができます。例えばVPNで制限することもできるし、IPアドレスでの制御もできるし、アクセス元の地域での制限と言うこともできるようになります。これらをオンブレでネットワークを構築して作っていたりとか、ソフトウェアを導入して入れる、ということになると、非常に面倒な作業が発生していたのですが、クラウド環境ですと、ボタン1つで様々なアプリケーションに対してこれらのセキュリティー機能を付与することができるようになるわけです。
求められる技術
ただし、クラウドを学ぶと言っても、単純にサーバーインスタンスをデプロイできるとかデータベースを構築できると言うだけでは決して付加価値が出ているとは言えません。それらは単純にこれまでのオンブレの技術をより簡単にできるようになったと言うだけなので、特に優れた技術が使われているわけでもありません。クラウドを活かしているとは言えないわけです。
クラウドを活かしていると言うのは、クラウドだからこそできる技術を使ってアプリケーションに対してより優れた形を提供していると言うことでして、これまでの技術で出てきていたことをクラウドで代替すると言うのはクラウドの真の価値ではありません。
それでは、どのような技術を使えば、どのような技術をマスターすれば、クラウドを生かすことができるようになるのでしょうか。
- サーバ能力の増減
- インフラ構築の自動化(CI/CD)
サーバ能力の増減
まず1番初めは、負荷量に応じたサーバーの能力の増減です。負荷が高い時はより多くのサーバー、より能力の高いサーバが稼働するように設定されることです。本プレミスのサーバーリストサーバー1台を、増やそうと思えば、ものすごい膨大な時間と作業が必要になってきますが、クラウドであればすぐにサーバーの容量を増やすことができます。しかし、クラウド上でも、手動でサーバーのスペックを増やしたり減らしたりしていては、作業の工数では増えてしまいますし、何かあったときに対応ができてないとトラブルにつながってしまうということがあり得ます。そこで、きちんとクラウドニュースを使って、負荷が増えたときにはサーバーのスペックを増やす、負荷が減ったときにはサーバーのスペックを減らすといった動作ができるようになっていれば、システムをより柔軟に動いてより適切なコストになってくれます。
インフラ構築の自動化(CI/CD)
2つ目には、インフラ構築の自動化が挙げられます。これは、インフラをコードで記述する記述がどんどん進歩してきた結果、このようなことができるようになってきました。
具体的には、Terraformや、AWSであればCloudFormationを使って、全体のインフラストラクチャをコードで定義してしまいます。そして、各アプリケーションを実行するサーバについては、コンテナであればDockerなどを使って、そうでなければChefやAnsibleで定義していきます。こうすることで、ほしい環境をデプロイコマンドを実行してしまうだけで、いくつもすぐに用意できます。
これらの技術があると、どこにいっても重宝される人材になります。
結論
インフラは、アプリケーションを実行する上で、必要不可欠な技術です。そして、コンテナ化やクラウドにより、これまでのインフラの概念からは新しいものがどんどん出てきています。
これは、新しくインフラを学んでいくものとしては、チャンスな状況です。アプリケーションを開発するものとしては、より柔軟でより効率のよいインフラは常に求め続けています。
そうしたチャンスをモノにするために、クラウドは是非とも学んでいきましょう!
参考資料
いくつかオススメの書籍を挙げておきます。
コメントを残す