本日はクラウドサービスについてです。
昨日までのはこちら
100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1
100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1
100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1
100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1
100日後にエンジニアになるキミ - 37日目 - データベース - SQLの環境構築
クラウドサービスについて
クラウドサービス
クラウドサービスとは何でしょうか?
クラウドサービスはインターネットを通じて
サーバーなどのコンピューター資源を提供するサービスの事です。

参考:総務省
https://www.soumu.go.jp/main_sosiki/joho_tsusin/security/basic/service/13.html
オンプレミス
クラウドの対義語としてオンプレミスという言葉があります。
これは自社でサーバー資源などを保有してデータセンターなどに配置し
それらのリソース管理を主体的に行う運用形態のことを言います。
いわゆる自社運用型です。
この場合は新しいサービスを始めるのに
1.サーバーを用意して
2.データセンターを建てるか契約を結び
3.インフラエンジニアなどの管理要因を雇ってサーバーを設置
4.OSやミドルウェアのインストール作業
5.ネットワークの開通作業
などかなりの手間とコストがかかります。
これに対してクラウドサービスはすでにデータセンターに配置された
サーバー群を借りる契約形態になります。
主に2010年頃からこのような形態と区別するために
オンプレミスという用語が生まれた形になります。
メリットデメリット
2010年代後半はクラウドサービスでの開発が主流となってきました。
オンプレミスでなくクラウドサービスを使う主なメリットデメリットは以下の通りです。
| 考慮点 | クラウドサービス | オンプレミス |
|---|---|---|
| 課金体系 | 従量課金 | 一定額 |
| 初期コスト | 安く抑えられる | かなり掛かる |
| 開発コスト | 安く抑えられる | それなりに掛かる |
| 運用保守コスト | それなりに掛かる | それなりに掛かる |
| 撤退費用 | 安く抑えられる | それなりに掛かる |
| セキュリティ | 気をつけないと危ない | 自社管理できていれば安全 |
| カスタマイズ性 | 柔軟 | 大変 |
| 可視性 | 気をつけないと低くなる | 自社管理なら高い |
| 拡張性 | 高い | 低い |
費用の面ではクラウドサービスは簡単に始めることが出来て運用コストも圧倒的に安いです。
サーバー1台を1月借りても数千円〜です。
一方でサーバーを買うとなると数十万円からです。
コスト面では初期コスト、運用コスト、撤退コストには大きなメリットがありますが
金融業や防衛産業など、ビジネスモデルによってはセキュリティーを重視するために
オンプレミスの方が望ましいと考えられる事もあります。
また、クラウドサービスは従量課金性であるので、うっかり利用などによる
加重課金の発生によるクラウド破産という点も気をつけるべき点です。
例をあげると:
BigQueryのクエリの書き間違えによるデータベース総ナメによるハイパー課金
テストで利用したサーバーの立ち上げっぱなし千台分の鬼課金
lambdaのin-out設定の間違えによるうっかりイベントの悲しい課金
慣れていないと従量課金による事故が多発するのがクラウドサービスの特徴でもあります。
DeepLearningなどでGPUサーバーをフル稼働させ続けるような用途だと
オンプレミスの方が安くつく事もありますし
たまにしか稼働しないGPUサーバーであればクラウドサービスの方が安くつき
常に新機種を用いることができるというメリットもあります。
ものすごく大量のデータをフル稼働で検索しまくるといったシステム要件を鑑みて
クラウドサービスの方が料金が高くなるという場合はオンプレミスに切り替えるなど
システム要件やコスト感を見極めた上で柔軟なシステム設計が出来るように考える必要があります。
主なクラウドサービス
国内外でたくさんのプレーヤーがおりコストや機能面で選択することになります。
主なクラウドサービス事業者などは下記の通りです。
| 事業者 | サービス名称 |
|---|---|
| アマゾン | AWS(Amazon Web Services) |
| グーグル | GCP(GoogleCloudPlatform) |
| マイクロソフト | Azure |
| アリババ | Alibaba Cloud |
| オラクル | OCI(Oracle Cloud Infrastructure) |
| IBM | IBM Cloud |
| NTTコミュニケーションズ | Cloud n |
| 富士通 | Fujitsu Cloud Service S5 |
| ニフティ | ニフティクラウド |
この他にもたくさんの事業者が存在しますが
国外ではAWSが圧倒的に強く、国内では富士通が頑張っているようですね。
機能面ではAWSの充実度は素晴らしく、ない機能がほとんど感じられないほど
逆に機能があり過ぎて困るほどです。
とは言え全てのクラウドサービスを使えるようになる必要はなく
抑えておくのはAWS,GCPだけで良いのではないかと思います。
社内政治などでどのクラウドを使うのか、というのは変わってきますし
自分で勉強するのであれば、よく使われる頻度の高いAWS,GCPだけで十分です。
それ以外は使う羽目になったらお勉強するか逆に使うのやめましょうと提案しましょう。
クラウド関係の用語について
抑えておきたい用語がいくつかあります。
SaaS
Software as a Serviceの略でサースやサーズなどと呼びます。
いわゆるクラウドベースで提供しているソフトウェアのサービスです。
電子メールやグループウェア、管理会計ソフトなどがこれに当たります。
PaaS
Platform as a Serviceの略でパースと呼びます。
インターネット経由での、仮想化されたアプリケーションサーバや
データベースなどアプリケーション実行用のプラットフォーム機能の提供を行うサービスのことで
AWSやGCPなどはこれに当たります。
IaaS
Infrastructure as a Serviceの略で、インターネット経由で
デスクトップ仮想化や共有ディスクなど、ハードウェアやインフラ機能の提供を行うサービス。
HaaS(Hardware as a Service)と呼ばれることもあります。
あまり利用する機会はないかもしれません。
DBaaS
Database as a Serviceディービーアースとか呼ぶようです。
インターネットを通じてオンライン上のデータベースを利用することができる提供形態です。
BaaS
Backend as a serviceバースト呼び
モバイルアプリのバックエンド機能ををインターネットを通じて提供する形態です。
MBaaS
MobileBackend as a Serviceエムバースと呼び、BaaSと同義となります。
MobileのMを付け加え、スマートフォン用サービスであることを強調しています。
インスタンス
クラウドサービス上で借りられるサーバーのことです。
基本的にはサーバーそのものを借りるのではなく、仮想的なコンピュータとして
サーバーのメモリやCPUの一部分を間借りする形になります。
この借りたコンピューター資源のことをインスタンスと言っています。
インスタンスはプラットフォーム、CPU、メモリ、ストレージの4項目で
スペックが値として示され、利用者は要件にあったインスタンスを選択して借ります。
コストは従量課金で、時間分の課金がされることがほとんどです。
リージョン
クラウドサービスのデータセンターが存在する地域のことを指します。
世界で展開しているサーバーは様々な国の各地域にデータセンターを立てているため
リージョンは複数存在します。
AWSなどでは国内では東京リージョンなどがあります。
ゾーン
リージョン内の地域を細かく分けた概念になります。
クラウドサービスでは障害が発生することがあり
このゾーンの設計の仕方などで、障害に対する耐性が変わってきます。
AWSでは全世界にたくさんのリージョンがあり
その中にアベイラビリティーゾーン(AZ)と呼ばれるデータセンターが複数カ所存在します。
システムの冗長性を保つために、ゾーンを分けてシステム構成を考えたりする形を取っています。
参考:
https://www.itmedia.co.jp/news/articles/1908/28/news127.html
オートスケール
サーバーの負荷状況に応じ、自動でサーバーの割り当て数の増減を行う仕組みのことです。
最近のクラウドサービスではこの仕組みにより、稼働状況やイベントに応じて
サーバーの台数を増減させる運用をしています。
まとめ
クラウドサービスの概念や主要な用語などを押さえておこう。
クラウドの開発に興味があるなら実際に試し借りしてみよう。
AWS,GCPは無料お試しクーポンをよく発行しているよ。
君がエンジニアになるまであと58日
作者の情報
乙pyのHP:
http://www.otupy.net/
Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter:
https://twitter.com/otupython
