こんにちは! この間、エラーの授業を受けて
「エラーはずっとそばにいてほしいし、敵じゃない」
と、そう思い始めたRareTECHの受講生です。
今回は、8月11日に行われた「AWSの基礎」の講義について理解したことをお話ししていきます
さて、巷でよく聞く「AWS」という言葉、聞いたことはあるけど、説明できない人結構多いのではないのでしょうか。
「AWSってそもそも何なの?」
「AWSの知識が身につくとどういうメリットがあるの?」
「AWSについてもっと知識を深めたい!」
今回、そんな疑問を解決するべく、初心者の私が学んだことを記事にまとめてみましたのでぜひご覧ください!
AWSとは?
AWSの特徴として「クラウドサービス、責任共有モデル、サービスの種類が200以上あり豊富、従量課金制」と言ったことが挙げられます。
ちなみにAWSの資格もあって「AWS 認定 ソリューションアーキテクト」通称SAAと言われています。
合格難易度はITパスポートと同レベルぐらいで勉強時間は50時間ぐらいあればいいと言われているそうです。
さて、先ほどあげた特徴として、馴染みのない用語があるかと思いますので一つ一つ順に追って解説していきます。
AWSはクラウドサービスの一つ
このクラウドは直訳すると雲なのですが、クラウドサービスとしての意味は「インターネット上に存在している」ものを指します。
Icloudとか、さくらサーバーなどの名前を聞いたことありませんか?
それらは、クラウドサービスの一つなのです。
クラウドの反対語としては「オンプレミス」という言葉があります。
こちらは、クラウドサーバーがインターネット上に置いてあるサーバーに対して、オンプレミスは現実にサーバーが設置されているという意味になります。
クラウドサービスの種類
さて、クラウドサービスが理解できたところで、実際に、クラウドサービスとして展開しているものの中で代表的なものをご紹介します。
AWSの名前にクラウドが入っていないのはクラウドができる前にサービスが展開されたとされています。
そう考えるとAWSって結構歴史が古いのですね。
AWS発祥の責任共有モデルとは?
AWSには責任共有モデルという考えがあります。
「こちらでできる限りのことは対策いたしますから、お客さまに不備があったらお客さまの責任になりますよ」と言う考えです。
実はこの考えができるまで、お客様に責任は存在しなかったのです。
どう言うことかというと
会社の社長さんがベンダー企業(でっかいサーバーを管理している企業のこと)からサーバーを借りるとします。
そこで問題が発生しました。
サーバーが止まりました。
サーバーが止まったらベンダー側の責任です。
また、サーバー上で情報漏洩が見つかった場合
これもベンダー側の責任になります。
何かあったらベンダー側の責任、これがIT企業の風潮でした。
この考えを変えたのがAWS発案の「責任共有モデル」と言う考えです。
要は責任範囲を変えると言うことですね。
AWSの責任共有モデルは、クラウドに対してのセキュリティーはきちんと対策しておきますが、
クラウド内のセキュリティー、つまりクラウドサービスでサーバーを作成した場合、そのサーバーのセキュリティーに関してはお客様でやってくださいね、と言う内容です。
AWSは従量課金制を採用している
従量課金制について例を挙げて説明します。
食べ放題の焼肉のように食べた分だけ支払いますよね。
それと同じように使った分だけ支払うということ
それが従量課金制のことを指しています。
さて、この従量課金制、画期的な考えの一つで、当時この考えが出るまでは
一年に一回、または二年に一回サーバを買うという買い切り型だったのです。
まとまった額を払うのがIT業界の流れだったのですね。
こうしたサービスが喜ばれたのはベンチャー企業や、小さい企業などです。
従来はお金をかけて、サーバー契約していたので、
サーバーを使用した分だけ課金できるため、負担が少なくなったのですね。
アマゾンの企業理念に「地球上で最もお客様を大切にする企業を目指す」と言う思想があり、AWSにおいてもこの考えが適用されています。
消費者が低コストでサーバー運用を開始でき、AWSの利用者が増えると、更に低価格提供が実現できると言ったものです。
これをかっこよく言うと「規模の経済」っていうらしいですね。
リージョン
リージョンとは「領域」のことを指します。
AWSはリージョンを複数分けており、例えば日本には東京と大阪の二つのリージョンが存在しています。
一つのリージョンの中には複数のアベイラビリティーゾーン(availability zone: AZ)が存在しています。
AZとは「地域」のことを指し、AZの中には1つ以上のデータセンターが存在しています。
リージョンが複数ある理由としては、データーセンターを設置しておいても万が一地震などの災害で損害を受けたとしても、他の場所にもリージョンを設置することで対応できるようにしておくと言うことです。
日本では、基本東京リージョンを使います。
現実にどこにあるかはセキュリティー機密の問題があるため公開されていません。
AWSにはサービスが200種類以上ある
AWSのサービスがですね、200種類以上あります。
種類が多すぎて、把握しきれないので各自調べましょう。
・・・
と言ったら元も子もないので代表的なサービスを紹介します
- ウェブサイトの運用(EC2)
- データのバックアップ(S3)
- ビックデータ分析(Amazon EMR)
- lotソリュージョンの構築(Amazon FreeRTOS)
- AI機械学習(Amazon Personalize)
200以上もあるので、サービスがありすぎてキャッチアップができないと言う課題を解決するために、
AWSには「AWSを使う時の指南書」があります。
それが、「AWS Well-Architected フレームワーク」です。略してw-aと言います。
5つの柱から成り立ち- セキュリティ
- パフォーマンス効率化
- 信頼性
- 運用上の優秀性
- コスト最適化
に分かれています。
例えば、コスト最適化の考えだと、できるだけスポットインスタンスと言う料金体系を選ぶといいみたいなことや
セキュリティの柱だとルートアカウントは避けた方がいいと言ったことが書かれています。
これも全てお客様が得になってほしいという、お客様を大事にすると言う考え方から来ているのですね。
詳しくはこちらから
この考え方は、アーキテクチャを設計する方やCTOみたいな人は知っておく必要があります。
この内容を全部理解できたらAWSエンジニアになれるとのことです。
AWSの特徴のまとめ
ここまで紹介してきたAWSの特徴については
- クラウドサービスの一つ
- 責任共有モデル
- 従量課金制を採用
- リージョン
- サービスが200種類以上ある
が挙げられます
他にAWSがいい感じにサポートしてくれるマネージドサービスというものがあるようです。
さらに完璧にフルマネージドサービスというものがあるのですが、フルマネージドサービスの方が
さらにいい感じにサポートしてくれるということです
次からは、具体的なサービスについて解説していきます。
AWSのサービスについて
ここから代表的なサービスについて解説していきます。
S3(Simple Storage Service) ストレージサービス
用途としては、S3に対して、ファイルをアップロードまたはファイルをダウンロードするいわば、ファイルの保管場所のことを指します。
種類がたくさんあるのですが、紹介しきれないため各自検索して調べましょう。
・・・・・
と言ったら元も子もないので代表的な種類を紹介します
- S3 Standard
- S3 Standard-IA
- S3 Intelligent-Tiering
- S3 One Zone-IA
- S3 Glacier
- S3 Glacier Deep Archive
種類の分け方として、そのファイルに頻繁にアクセスするかつまり読み書きする頻度が多いのかによって使い方が分けられます。
またファイルの容量の大きさに対しても課金額は変わっていきます。
大きい容量のファイルにたくさんアクセスするだけ料金が高いと言うことです。
全然使わないのでしたら、S3 Glacier、もっと使わないのでしたら、S3 Glacier Deep Archiveのようになります。
頻度としては10年に1回、開くぐらいの感覚ですがその代わりファイルの読み書きが非常に遅いのが特徴です。
例えば、10年前に撮った写真を見るのに3日間かかるぐらいの遅さです、
先ほどのリストの上にいくほど読み込みの速度が上がります。
S3 Intelligent-Tieringとは、よく使うファイルを読み込み速度を上げ、あまり使わないものを読み込み速度を遅くするようにすることをS3が自動でやってくれることです。
つまりコストが最適化されると言うことです。
S3 Standard-IAとは、ファイルを見る機会はなかなかないけど、見たいと思ったらすぐ見れるようにしておくために置いておくために使われることが多いです。
S3の特徴としては、アップロードの時間は変わらないけど、引き出す時間がそれぞれ変わると言うことです。
ただし、随時これを入れ替えようとしたら、課金が発生します。
S3の説明で、バケットとオブジェクトと言うものがあります。
オブジェクトはファイルのことですね。
バケットの中にはオブジェクトを入れます。
バケットとはバケツみたいなものと捉えましょう。
S3の中からファイルを取り出したいとき、バケットとオブジェクトを指定することでファイルを取り出せるのです。
EC2 仮想サーバー
俗に言うクラウドサーバーのことですね。
AWSのクラウドの中で、EC2がサーバーとして立ち上がります。
このサーバーですが、ウェブサーバーにしてもいいし、SSHのサーバーにしてもいいし、メールサーバーにもなり得ます。
EC2を起動することをスタートと言います。
EC2をシャットダウンすることをストップと言います。
またそれ以外に、ターミネートという言葉があります。
これは2度と立ち上がらないし、復元もできないと言うことです。
どういうことかというと
電車の窓からパソコンをぶん投げてしまえばもう元には戻らないと言うことです。(やってはいけません)
EC2には色々なOSが使えます。
LinuxやMacやWindowsなどですね。
ちなみに、EC2のスペックはどうやって決まるか気になりますね。
コンピューターには、
- CPU
- ストレージ
- メモリ
の3種類からスペックが決まりますよね。
EC2にはインスタンスタイプと言うタイプがあり、 CPU、メモリ、ストレージ、ネットワークキャパシティーなどの組み合わせを色々変えたものが種類あります。
具体的にどこが違うのかというと各自調べましょう。
と言ってしまうと元も子もないので、軽く説明すると、CPUが良くなったり、ストレージが増えたり、コア数が増えたりメモリ数が増えたりなどといった色々なスペックが選べるようになっています。
EC2は無料で立てれる、無料利用枠というものを設けているのですが
利用可能枠を調べてもすぐ変わるし、色々複雑すぎて結局課金してしまったということもあるので
多少の課金は覚悟しておくと良いかと思われます。
EC2プランの料金プラン
EC2は料金プランが非常に複雑です。
まず、オンデマンドインスタンスの説明としては、焼肉食べたら食べた分だけお金かかる従量課金制の考えです。
次にスポットインスタンスですが、焼肉屋のお店が混んできたら退店させられるという内容です。つまり、サーバー稼働中にサーバーがストップされる可能性があり、破格の価格で提供されています。
リザーブドインスタンス通称RIは、サブスクに考え方は近いです。
二年間、同じ焼肉食べにきてくれたら安いですよっていうプランです。
最後のsaving planについては、RIの上位版の考えで、二年間同じ焼肉食べてという点は変わらないのですが、途中で料金プランを変更することも可能です。2年以内に、やめるとその差額分だけ払ってくれれば料金プランを変更できるよっていう料金プランです。
検証用サーバーとして使うならスポットインスタンスを使った方がいいです。
スナップショットとAMI(アマゾンマシンイメージ)
サーバーのある時点のデータを保存しておくことができます。
スナップショットはファイルの状態を保存します。
例えば、WindowsだとCドライブというドライブがあったとして、Cドライブだけ保存することが可能です。
AMIはOSが持つ全ドライブを保存することができます。
ファイルだけ保存するならスナップショットを、サーバー全体の情報を取得するならAMIを取るといったように用途が分けられます。
AMIがスナップショットを保存することは可能です。
EC2をターミネートしたらAMIも破壊されるのかという疑問ですが
AMIはあくまでバックアップは別ファイルとして保存されているため破壊されません。
EBS サーバーを保存するハードディスク
EC2の中にファイルを保存したい場合は、EBSを使います。
サーバーを立てるとき、HDDとかSSDとか入れると思うのですが、
EBSの裏側は複数のHDD、SSDが含まれています。
EBSはRAID設定することも可能です。
RAIDについて説明すると長くなるので、下記の参考リンクを参考にしてみてください。
S3はファイルの容量を設定されていなくて使った分だけ料金が発生されるのに対し、EBSはファイルの容量をあらかじめ設定しておく必要があります。
つまり、EBSはあらかじめ10GBなら10GBとして設定しておくっていう必要があります。
このあらかじめ用意しておくことをプロビジョニングと言います。
ただし、EC2のインスタンスを停止しても、EBSは料金が発生します。
EBSはターミネートしないと料金が発生し続けるから注意が必要です。
VPC(Virtual Private Cloud) 仮想ネットワーク
VPCはAWS上に作られる仮想ネットワークのことを指します。
VPCにEC2インスタンスを設置するとき、ルーター設定であるルートテーブルの設定や
インターネットの接続の許可をする設定をしなければいけません。
VPC内に小さいネットワークであるサブネットを構成して、EC2インスタンスが立ち上がります。
ちなみに、異なるVPC同士を繋げることをVPIピアリングと言います。
EC2インスタンスのセキュリティーを担保するためにセキュリティーグループが存在しています。
サブネットの安全を確保するためにネットワークACLはサブネットのファイアウォールとして機能します。
図で大体のことを説明してみます。見慣れない用語もありますが後ほど説明入れていきます。
セキュリティーグループとネットワークACLについての違いについては以下になります。
セキュリティーグループ | ネットワークACL |
---|---|
ホワイトリスト方式 | ホワイト方式/ブラックリスト方式 |
OKなものだけ通せばいい | 何も設定してなかったら通る |
ステートフルで通信で状態を覚えていることにより行きのパケットに対する戻りのパケットも自動的に許可される | ステートレス通信で状態を覚えられないため行きのパケットは問題ないが戻りのパケットは許可設定をしないと戻れない。 |
外部にアクセスするためにサブネットの中にnat gatewayがあります。
これを説明するためには、NAPTとIPアドレスについて理解しないといけません。
IPアドレスとは、ネットワークの住所のことです。
IPアドレスの例
192.168.123.45
ちなみにIPアドレスには、ネットワーク部とホスト部に分かれていて、
ネットワーク部は、IPアドレスがどのネットワークで使用されているか、
ホスト部は、ネットワーク内のコンピュータを識別するための部分です。
IPアドレスにはどこからネットワーク部でホスト部なのか識別する必要があります。
そこで使われるのがサブネットマスクです。
実際にIPアドレスをスラッシュ/で区切って識別するのをCIDR表記と言います。
CIDR表記
192.168.123.45 /24
サブネットマスクは、IPv4というデータ通信の方法を定めたプロトコルが適用されている場合、使用されます。
URLの中に含まれるドメインは、DNS(Domain Name System)によってIPアドレスとドメインを紐づけられます。
IPアドレスは自分のパソコンにも割り振られています。
通常、自分のパソコンのIPアドレスは、インターネット上に接続されていないローカルなIPアドレス番号が割り振られ、このIPアドレスをプライベートIPアドレスと言います。
一方、インターネットに接続している環境で使われるIPアドレスはグローバルIPアドレスと言います。
インターネットに接続する時、プライベートIPアドレスをグローバルIPアドレスに変換して使うために、NAPTという技術があります。
NAPTは、プライベートIPアドレスをグローバルIPアドレスに変換する際にポート番号も変換します。
プライベートIPアドレスごとに別のポート番号に変換します。
このため、一つのグローバルIPアドレスで、同じプライベートネットワーク内の複数のプライベートIPアドレスに割り当てることができます。
では、先ほど出てきたnat gatewayですがこのNAPTの機能を提供するゲートウェイのことです。
ただこちらは、nat gateway単体だとインターネットにアクセスできません。
そのためインターネットゲートウェイを組み合わせて使うのですが、これだとプライベートサブネットではなく、パブリックサブネットになってしまいます。
あくまでプライベートサブネットを利用したインターネット通信を置きたいそんなときに使うゲートウェイです。
外から出た通信が戻ってくるときには使われるのですが、それ以外の通信は遮断するためセキュリティー的に安全なのですね。
EC2インスタンスの中にあるIPアドレスのことをEIPと呼びます。
EIPは、自動的に割り振りされるIPアドレスのように動的に変動するわけではなく同じIPアドレスとして固定されるので、EC2インスタンスのストップ、スタートを繰り返してもIPアドレスが変更されないという特徴があります。
先ほど説明したドメインにIPアドレスがDNSで紐付けている場合、IPアドレスが変わってしまうとドメインにアクセスすることができなくなってしまうため、固定の方が良いのです。
EC2は、無料利用枠で体験することもできます。
AWS LAMBDA
クラウドを前提したシステムのことをクラウドネイティブと言います。
また、サーバーレスという概念があります。
通常、プログラミング言語を実行するとき、サーバーを立て、環境構築をしてPythonなどのサーバー言語をインストールしないといけません。
しかし、その作業を省いてプログラミング言語を実行することができ、サーバーに対して考慮せず使用できる、これがサーバーレスの考えです。
AWS LAMBDA はサーバーレスでありクラウドネイティブです。
LAMBDAはランタイム(複数のプログラミング言語+バージョン)でサポートされています。
LAMBDAは一回の起動で15分までの制限を設けられています。
15分以上をかかると、タイムアウトエラーとなってしまい使えなくなります。
こうした制限を設けていることをクウォータと言います。
先ほどの例だとLAMBDAのクウォータは15分であると言います。
これは時間制限だけでなく、容量が制限されていたりしても使われる、要は限界値のことを指します。
クウォータがないと、ユーザーに無限に課金されてしまう恐れがあるためこういった処置がなされているということですね。
まとめ
AWSには200種類以上のサービスがあり、災害時も安心のリージョンが
が複数設置されており、責任共有モデルがあり複雑な料金体系があることがわかりました。
いかがだったでしょうか?
AWSの基礎知識としてお役立ていただけましたら幸いです。
宣伝
RareTECHに興味のある方は、こちらのHPをご覧ください。無料体験授業も行っていますので、ぜひご参加くださいね。 RareTECH