「この1冊で全部わかる クラウドの基本」 林 雅之 (後編)
さて、クラウドってそもそも何?というところから、
クラウドを使うメリットやSaaSやPaaSなどのサービスモデルとプライベートクラウドなどの利用モデルのパターンを大まかに紹介しました。
その後SaaSについてざっくり学びましたが、続いてPaaSです!
● PaaSとは、Platform as a service の略で、
サービスとしてのプラットフォーム。
プラットフォームというのは、何かを動かすときの土台 みたいなイメージです。
WORD(ワード)やEXCEL(エクセル)を使うには、OS(オペレーションシステム)であるWindowsが必要ですが、この場合、WORDやEXCELのプラットフォームはWindowsということになります。ざっくりですが。。。
検索するために必要な「Google検索エンジン」もプラットフォームの1つ、SNSをするための「Twitter」や「Facebook」もプラットフォームと言われています。
やっぱり「何かをするための土台、基盤」みたいな感じです。
何かソフトを作るときに、その土台となる環境をちゃんと作らないと動かないんですね。でもそういう土台を作るのは超大変そう。ファミコン(古い?)のソフトを作るのと、ファミコン本体を作るのでは、ソフトを作るだけの方が簡単な気がしますよね、そんな感じです、たぶん。。。
作るのが超大変そうな土台をクラウド事業者が提供してくれるのが、PaaSということになります。説明下手ですみません。。。
よく本では「開発環境」とか「実行環境」とか説明に使われています。
つまり、企業のアプリケーション実行環境やアプリケーション開発環境をサービスとして提供するモデルです。
ユーザー企業において、自社でアプリケーションの開発環境を一から構築するには多くの時間がかかります。その点、PaaSには、JAVA、PHP、Rubyなどのプログラミング言語に対応したアプリケーション実行環境やデータベースなどがあらかじめ用意されているので、インフラの構築や運用保守することなく、その基盤をりようすることで短期間にアプリケーションを開発し、サービスを提供することができます。
JAVA、PHP、Rubyって?
詳しいことは検索して調べて頂きたいのですが、それも邪魔くさいと思いますので、簡単に説明しますと、
JAVA:いろんな現場で使用されている。汎用的でOSに依存しないプログラミング言語。OSに依存しないとは、MACのOS(IOS)なのかWINDOWSなのか気にしなくても良いということ。だからとても人気のあるプログラミング言語です。
PHP:web開発でよく使われる言語。PHPはHTMLに埋め込むことができるため、Web開発でよく使用されるスクリプト言語なんです。
Web開発でよく使用されるスクリプト言語に、JavaScriptがありますが、PHPとJavaScriptの大きな違いは、そのコードがどこで実行されるか?にあります。
JavaScriptは、クライアントサイド(Webサイトを閲覧しているブラウザ)がコードを受け取り、そこで動作します。そのため、どのようなコードが書かれているのか、誰でも見ることができてしまいます。
一方、PHPはサーバーサイドでコードを実行します。クライアントサイドはその結果のみを受け取るため、どのようなコードで導き出された結果なのか見ることができません。
Ruby:WEBアプリケーションでよく使われているプログラミング言語。動きのあるWEBサイトを作るのによく使われている。有名なクックパッドもRubyで作られている。
CやJavaといったコンパイラ言語は、プログラムを実行するためにはコンパイルという手続き(人間が書いたソースコードを機械がわかる言葉に変換)を介して初めて実行ができる。しかし、スクリプト言語はこう言った手続きが一切不要で、そのまま実行することができるため、コンパイラ言語に比べてプログラミングを手軽に行うことができる。
実際使ってみないとわからないので、このへんにしておきます。私も得意では無いので。。。
IaaSと比べると、PaaSはサーバー、ネットワーク、セキュリティの部分は事業者にお任せで、構築や運用が簡単にできる。
また、SaaSが決まったソフトウェアをサービスとして提供することに比べて、PaaSは自社で開発したアプリケーションを稼働させることができるので、アプリケーション活用の自由度の高いことが特徴です。
PaaSの代表的なサービスやソフトウェアとしては、サイボウズのkintone(キントーン)や、オープンソースのPaaS基盤ソフトウェアのCloud Foundry、OpenShiftなどが挙げられる。
kintoneって?
開発の知識がなくても自社の業務に合わせたシステムをかんたんに作成できる、サイボウズのクラウドサービスです。業務アプリを直感的に作成でき、チーム内で共有して使える。社員間のつながりを活性化する社内SNSとしての機能も備えているため、スピーディーに情報共有が可能。
Cloud Foundryって?
公式サイトの言葉を借りますと、「業界標準のクラウドアプリケーションプラットフォーム」のこと。
インフラを抽象化し、アプリケーションのイノベーションに注力できるプラットフォームとのことです。オープンソースのPaaS(Platform as a Service)ソフトウェアとも言われる。
IaaSの場合、インフラの調達部分はオンデマンドで行えるようになりましたが、ミドルウェアのセットアップやアプリケーションの配置、起動、その他DNSなどのネットワーク周りの設定は依然として開発者ないしは運用者が行う必要があった。しかし、PaaSの場合、インフラだけでなくその上のレイヤーまでまとめて自動化することで、開発者はアプリケーションの開発に専念できるようになる。
OpenShiftって?
CNCFが開発を推進するKubernetes(クーバネティス)は、たくさんの企業が参画して開発を進め、急速に発展している。このCNCFが配布するKubernetesは、上流(アップストリーム)のKubernetesと呼ばれ、ソフトウェア・ベンダーが製品化する前の実証試験的なプロダクトと見なされている。
この様な上流のKubernetesの課題を解決に、企業情報システムに適する製品として仕上げられたのが、Red Hat社のOpenShift。
OpenShiftとKubernetesの違いは、OpenShiftは初期の段階では、独自の設計でPaaS(Platform As Service)として開発された。しかし、バージョン3では大幅な改修と共に、Kubernetesをベースとするコンテナ・プラットフォームとして生まれ変わった。そのため、OpenShiftには上流のKubernetesには無い多くの特徴を備えている。
CNCFって?
2016年1月に正式発足したCloud Native Computing Foundation
ん~。いろいろあってややこしいけど、
PaaSとはやっぱり何かのアプリを開発するとき、その環境を作ることなく、サービスとして提供されるってことってだけ押さえておけばいいかな。。。
Kubernetes(クーバネティス)って?
・Dockerコンテナ※をクラスタ化した際の運用ツールの1つ。
・コンテナを使いこなすための強い味方
→コンテナマネジメントのデファクトスタンダード(事実上の標準)と言われる
・Googleが中心になって開発している。
・自動デプロイ、スケーリング、アプリ/コンテナの運用自動化ができる
※デプロイ:一言で言うと「使える状態にすること」
(元々はdeploy:配置する、展開する)
・マイクロサービスと相性が良い
・管理上の基本単位はPodという
・試すなら、GKE(Google Kubernetes Engine)を使うのが良さそう
改めてコンテナとは・・・
ホストOS上にアプリケーションの起動に必要なアプリケーション本体・必要なライブラリ・設定ファイルなどをひとまとめにした「コンテナ」を作成し、「コンテナエンジン」上で動作させる技術のこと。
ハイパーバイザーやホストOSは、従来の仮想化技術では、仮想マシン上でゲストOSを起動する必要がありました。これに対して、コンテナではゲストOSを起動することなく、アプリケーション実行環境を構築することが可能。
つまり、仮想マシンに比べて少ないリソースでのアプリケーション実行が可能となるため、メモリやCPUリソースを余分に使うことがない。
コンテナの構造からみると若干わかりやすい。
仮想化とは、「CPUやメモリなどのハードウェアのリソースをハイパーバイザーというソフトウェアの力で抽象化したもの」とよく解説されます。この仮想化の仕組みを一般的にハイパーバイザー型仮想化と呼び、仮想化によって作られたサーバーを仮想マシンと呼ぶ。
一方でコンテナは、コンテナエンジンというプロセスを通して、ホストOSの「カーネル」を共有することでCPUやメモリなどのリソースを隔離し、仮想的な空間を作り出す。これをコンテナ仮想化という(カーネルとは、OSの最も中核(コア)となる部分のこと)。
ハイパーバイザー型仮想化では、物理サーバーにインストールされているOSとは別に、仮想マシン上にも個別にOSをインストールする必要があるため、仮想マシンの起動には物理サーバーと同様にOSを起動する。しかし、コンテナでは起動しているホストOSの「カーネル」を共有することでアプリケーションの実行土台を備えることから、コンテナの起動には従来のOSの起動といった工程が必要ないのです。
ホストOSとは・・・
仮想マシン(仮想コンピューター)環境で仮想的なOSを動作させている(土台となっている)OSのこと。
仮想マシンの手法では、あるコンピューターのシステム上で別のコンピューター環境を再現できる手法である。
CPUやハードディスクといったハードウェアから、OSやアプリケーションなどのソフトウェアまでを、基盤となっている現実のコンピューターとは独立させて動作させることができる。
このとき、仮想マシン環境を動作させている土台のOSがホストOSと呼ばれる。
そして、仮想マシン上で動作している仮想的なOSは、ゲストOSと呼ばれる。
ホストOSが正常に動作していることが、ゲストOSを動作させる前提条件となる。
仮想マシンを実現すれば、LinuxがインストールされているPCでWindowsを操作したり、Windowsでマックを動作させたりすることができる。
(Linux上でWindowsを動かすとすれば、LinuxがホストOS、WindowsがゲストOSとなる。
仮想コンピューターを実現するには、Virtual PCやVMwareのような専用ソフトを必要とする。
話がだいぶ飛んでしまったので、元に戻します。
● IaaSとは、Infrastructure as a Serviceの略で、
サービスとしてのインフラストラクチャ。
CPUやハードウェアといったコンピューティングリソースを、ネットワークを経由してサービスとして提供するモデルです。
IaaSの基本的なサービスとしては、仮想サーバーやオンラインストレージなどがある。
仮想サーバーとは、クラウド事業者の保有する物理サーバーのCPUやメモリ、ストレージなどのハードウェアリソースをソフトウェア的に分割してユーザーに提供するもの。
IaaSの料金体系や、多くのクラウドサービスでは、利用分に応じた従量制課金もしくは月額課金となっています。
IaaSの利用例として、Webサイト用のサーバーが挙げられます。Webサイトを運営していてキャンペーン用のWebページを開設すると、短期間に膨大なアクセスが集中することがあります。そこで、そのときだけ一時的にコンピューターのリソースを多めに借り、キャンペーンが終了したらリソースを減らすといったように、リソースの量を柔軟に変更することによって、安定したサイトの構築、運用を低コストで行うことができる。
企業の業務統合パッケージであるERP(Enterprise Resource Planning:統合基幹業務システム)をIaaS上で稼働させるといった事例も出てきている。
代表的なIaaSのサービスとして、
Amazon Web Service (AWS)が提供するAmazon Elastic Compute Cloud ( EC2 )などがある。MicrosoftのAzure(アジュール)も、Azure仮想マシンがIaaSに該当する。
(Elastic:弾性、柔軟)
●まとめ
・SaaS
全てをクラウド事業者(クラウドサービスプロバイダー)が管理。
自由度は低いが、管理負荷も低い。
Microsoft 365やグーグルのG Suiteなど。
・PaaS
アプリケーション以外をクラウド事業者が管理する。
サイボウズのKintoneやCloud FoundryやOpenShiftなど。
MicrosoftのWebアプリの実行環境を提供するAzure Web Apps や
データベースの実行環境を提供するAzure SQL Databaseなど。
・IaaS
ハードウェアのみをクラウド事業者が管理。
自由度は高いけど管理負荷も高い。
AWSのEC2や、MicrosoftのAzure仮想マシンなど。
● クラウドの利用モデルについて
上の図の右側のことです。
①パブリッククラウド
パブリッククラウドとは、クラウド事業者がシステムを構築し、インターネット網などのネットワークを介して不特定多数の企業や個人にサービスを提供する形態。
クラウドのシステムは企業や個人のファイアフォールの外側に構築される。
必要なコンピューティングリソースを短期間・低コストで利用でき、運用管理の負担が少ないといったメリットがある。
②プライベートクラウド
プライベートクラウドとは、クラウドサービスのユーザー側または事業者側のデータセンターに、クラウド関連技術を活用した自社専用の環境を構築して、コンピューティングリソースを柔軟に利用できる形態。
システムのパフォーマンスとコストが最適化され、柔軟にカスタマイズできることが特徴。
③コミュニティクラウド
コミュニティクラウドとは、共通の目的を持った特定企業間でクラウドのシステムを形成し、データセンターで共同運用する形態。
パブリッククラウドとプライベートクラウドの中間的な形態。
④ハイブリッドクラウド
ハイブリッドクラウドとは、パブリッククラウドとプライベートクラウド、コミュニティクラウドなどの各クラウドやオンプレミスシステムを連携させて活用するシステム/サービスのこと。
※クラウド環境を、誰が、どこに構築して、運用するかで呼び名が変わる!
ここまで知っているだけでも、なんとなくクラウドってどういうものか、どういった種類があるのか、それぞれざっくりとどういうものか?がわかってきたと思います。
前編と後編でご紹介しましたが、これでもまだこの本の1/6くらいの内容です。
もっとクラウドについて知りたい、詳細を学びたいという方で、まずは入門書を読んでおきたい!という方には打ってつけです。
専門家になるには、まず入門書→少し専門的な内容を含むもの→専門的な中でも興味があるもの・・・と進んでいくのがプロへの王道とよく言われます。
この機会にぜひ!おすすめです。
アマゾンで詳細を見る。
楽天で詳細を見る。
参考