クラウドサービスについて

#前提
AWS（クラウドサービス）について学んだことを書いていきます。

#本題
#クラウドサービスとは
Amazon Web Services（AWS）は、クラウドサービスの１種です。
クラウドサービスとはどのようなものかを簡単に説明します。

##オンプレミスとクラウドサービス
クラウドサービスは、情報システムを提供するときに必要なサーバーやネットワークなどのインフラを提供するサービス。

###全部自分で用意するオンプレミス
オンプレミスとは、クラウドサービスを使わずにサーバーやネットワーク機器などをデータセンターに持ち込み自前で構築することです。

***課題***
オンプレミスでの運用は、次の点が課題になりがちです。

・サーバーの設置やネットワークの敷設に日数が必要
機材の調達や配置が必要なため、追加や変更にはにっすが必要です。
入念な下準備が必要なため、明日からサーバーの台数を増やしたいということは困難になります。

・保守が必要
サーバーやネットワーク機器などは自社で保有します。
初期コストがかかるのはもちろん、故障の時は交換が必要になります。
さらに、古くなると最新の技術に対応しなくなったり、セキュリティの不具合を修正するための更新プログラムが提供されなくなったりするため、サポート期間が切れる数年単位で、機材自体を一新する必要もあります。
そして、サーバーやネットワーク機器に異常がないかを日々監視する運用業務も必要となります。

・障害対策にコストがかかりすぎる
サーバーやネットワークが壊れた時は、それを交換する必要があります。
そのためには予備の設備を用意しておく必要があります。
例えば、サーバーが壊れた時のために２台以上用意しておく、回線も二重化しておくなどの方法があります。
しかし、こうした予備設備を保有することは、それなりのコストがかかります。

###設備をレンタルするクラウドサービス
クラウドサービスは、こうしたオンプレミスの不便さを解決したインフラサービスです。
クラウドサービスでは、データセンターにサーバーやネットワークを各自が設置しましせん。
代わりにデータセンターには、あらかじめ十分な数のサーバーやネットワーク設備が用意されていて、必要に応じてそれらをすぐに借りて使うことができます。
つまりクラウドサービスは、サーバーやネットワークのレンタルサービスです。

***課題***
クラウドサービスは、オンプレミスにおける課題を次のように解決します。

・サーバーの設置やネットワークの敷設は即時
クラウドサービスでは、仮想化技術を使ってサーバーやネットワークを構成しています。
そのため物理的な配置が必要ないので、クラウドサービスの管理画面から操作すると、ものの数分でサーバーやネットワークを作れます。

・保守は必要なし
サーバーやネットワーク機器などはクラウドサービス会計が保有し、管理しています。
セキュリティ対策なども実施してくれます。
そのため、保守の必要がありません。
いつでも最新の設備を使うことができます。

・障害対策のコストを抑えられる
クラウドサービスでは、すぐにサーバーやネットワークの代替えを作れるため、予備の設備をあらかじめ用意しておく必要がありません。
ほとんどのクラウドサービスは、回線を二重化（もしくはそれ以上）していますし、データセンターも複数の拠点、そして世界各国で運用しています。
このため各拠点間でのデータ同期などで、大規模災害が発生した時にも耐えられるような、分散して運用するシステムも作りやすくなっています。
そして、さらにクラウドでは、サーバーやネットワークが仮想化されています。

***メリット***
次のような、メリットも得られます。

・サーバーのスペック変更が容易
サーバーは仮想化されていて、管理画面からの操作一つで、CPUの性能をあげたり、メモリを増やしたりできます。
そのため、最初は価格が安く性能が低いサーバーで運用し、利用者が増えてきたところでスペックを上げるという使い方もできます。


##マネージドサービスとアンマネージドサービス
クラウドサービスは、サーバーを貸し出すだけのサービスではありません。
データベースサーバーやメールサーバーなど、特定の目的の設定が完了した状態のサービスも提供しています。
素のままのサーバーを貸し出すサービスを「アンマネージドサービス」、あらかじめ設定された状態で貸し出すサービスを「マネージドサービス」と言います。
マネージドサービスを使う利点は、自分でソフトウェアをインストールしたり設定したりしなくてよく、また保守運用もクラウドサービスに任せられる点です。
例えば、データベースサーバーを例にとれば、安全に運用するには、保存先のストレージの二重化やバックアップなどを考えることがたくさんあります。
こうしたことを全部自分でやるのは大変ですし、操作を間違えるとデータを焼失するなどの大事故になります。
その点、マネージドサービスを使えば、バックアップや二重化などデータ保全策を任せられます。
必要に応じてソフトウェアのバージョンアップやセキュリティ対策もされるので、安全に運用できます。

##責任分界点
マネージドサービスとアンマネージドサービスでは、どこまでを自分が担当するか、どこまでクラウドサービスが担当してくれるかの違いもあります。
この担当の分岐点のことを責任分界点と言います。
責任分界点がクラウドサービス側に寄っているものほど保守管理を任せられるため、運用の手間を軽減できます。

※IaaS、PaaS、SaaS
クラウドを語るときはどこまでの機能が提供されるのかを分ける用語としてSaaS、PaaS、IaaSという３つの言葉がよく使われます。

・SaaS（Software as a Service：サース）
ソフトウェアの機能がサービスとして提供されるもの。
メールサーバー、データベースサーバーなど多くのマネージドサービスが、これに担当します。
利用者は、保守・運用の一切を任せることができます。

・PaaS（Platform as a Service：パース）
アプリケーションを実行するためのプラットフォームを提供するもの。
簡単にいうと、作ったアプリケーションを配置するだけで実行できる環境です。
利用者は、自分で配置したアプリケーションだけを運用・保守すればよく、それが実行される環境については考える必要がありません。
例えば、AWSのLambodaなどのプログラム実行環境機能が、このPaaSサービスに相当します。

・IaaS（Infrastructure as a Service：イアース）
ネットワークや仮想的なサーバーなど、インフラ部分を提供するもの。
アンマネージドサービスが、これに相当します。
利用者は全体の保守・管理をする必要があります。

※マネージドサービスは手出しできないサービスでもある
マネージドサービスは、運用管理をクラウドサービスに任せられるということは、自分ではコントロールできないということでもあります。
例えば、ソフトウェアの新しいベージョンが登場したとき、新しいバージョンを取り入れる、あるいは古いバージョンを残すのはサービス側が決定します。
そのため、機能が豊富な最新版を使いたい、システムの保守負担軽減のために古いものを使い続けたいといった要望があっても実現しないケースがあります。
特に後者の問題になりやすいかもしれません。
オンプレミスにおける運用では、システムは作ったら終わり。OSやソフトウェアは当時のままというところも多いでしょう。
しかし、クラウドサービスを使う運用では、そうはいきません。
クラウドサービスでは、システムが最新の環境に変わることを前提としなければなりません。
アップデートしたときに動くかどうかを確認したり、動かないならシステムを改修するなど、システム自体の保守が不可欠です。

##クラウドサービスの可用性
クラウドサービスを使う場合、どの程度、信頼性がおけるのかを検討することも大事です。
信頼性を図る基準はいくつかありますが、よく使われるのはサービスの可用性です。
可用性とは、稼働時間のうち、システムが使える時間の割合です。
システムが無停止であれば、可用性は１００％です。
サービスに対して、どの程度の可用性を保証するのかは、SLAという契約に示されています。
メンテナンスなどを考えると１００％の可用性を保証することは困難であるため、９９％や９９.９％などが妥当な保証証であり、サービスによって異なります。
この９９％や９９.９％というのは、とても高い品質に見えますが、実際に計算すると意外と許される停止時間は長いので注意ください。
AWSでは月間使用時間をベースにSLAを規定しています。
仮に１ヶ月を３０日とすれば、１ヶ月は、２４時間×６０分×３０日＝４３,２００分です。
この９９.９％や９９.９９％を計算すると次のようになります。

```
43,200 × （100 - 99.9）= 432分 = 7.2時間
43,200 × （100 - 99.99）= 43.2分
```
もし、これだけの時間、停止したとしてもサービスとしては正常の範囲内です。
実際にこんなに長く停止することはありませんが、９９.９％と９９.９９％とでだいぶ違ってくる点は、意識する必要があります。
クラウドサービスは、よく無停止で使えるかのように勘違いされますが、そんなことはありません。
システムトラブルによって使えなくなるような想定外の停止だけでなく、アップデートなどのため計画的に一時的に数分の停止が生じることもあります。
もし提供するサービスを無停止で運用しなければならないのであれば、システムを冗長化するなどの仕組みが必要です。