Open11

AWS学習

なかじなかじ

クラウド (クラウドサービス) とは?|AWS

クラウドとは何か?

  • クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称
  • 支払いは使用料に応じた従量課金制が基本

クラウドのメリット

  • 固定の償却コストが変動コストに
  • スケールによる大きなコストメリット=規模の経済によってお安く
  • キャパシティ予測が不要に=自由にスケールアップできるため
  • 新しいITリソースをすぐに使える
  • データセンターの保守運用が不要
  • わずか数分で世界にデプロイ

クラウドのデプロイモデル

  • クラウド:クラウドのみ
  • ハイブリッド:クラウドとクラウド上にはない既存のリソースを使用
  • オンプレミス:「プライベートクラウド」を呼ばれる。クラウドの良さはあまり享受できない

実際の活用例

  • Amazon Redshift:データウェアハウス専用のデータベースサービス
  • AWS Lambda:FaaSと呼ばれるもの(インターネットを通じてサーバーを利用してアプリケーション開発を行うサービス)
  • AWS Application Migration Service:クラウドに移行するためのサービス
なかじなかじ

ソリューションビジネスとサーバーの置き場

ソリューションの形態

オンプレミス

  • 自社の敷地内に自社のサーバを置くこと
  • メリット:機密性の高さ
  • デメリット:全て自社調達・管理になるので多くの費用がかかる

ハウジングサービス

ホスティングサービス

クラウドコンピューティング

  • 他社の敷地に置かれた他社のサーバーを使用する
  • ホスティングサービスとの違いはサーバーの所在が不明確なところ

クラウドコンピューティングの種類

Iaas(アイアース)

  • ハードウェアなどの基盤(インフラストラクチャ)をインターネット上で提供するサービス
  • ネットワーク構成やサーバの追加もインターネット経由で簡単に変更できる
  • 例:AWS/CGP

PaaS(パース)

  • プラットフォーム(アプリケーションソフトを動かすのに必要な土台)をインターネット上で提供するサービス
  • IaaSにOSを加えたサービスとも言える(?)
  • 例:heroku/render/Fly.io

SaaS(サース)

  • ソフトウェアをインターネット上で提供するサービス

参考

なかじなかじ

Cloud for Beginners (Japanese)

  • モジュール1:Webサービス
  • モジュール2:AWSクラウドの紹介
  • モジュール3:コンピューティング
  • モジュール4:データベース
  • モジュール5:ネットワーク
  • モジュール6:セキュリティ
なかじなかじ

モジュール1:Webサービス

モジュールの目標

  • AWSクラウドを理解する上で必要なワードを理解する

ウェブサービスとは?

  • ネットワークを介して利用できるサービス
  • 利用の際:ネットワーク(インターネットを通じて利用)
  • サービス内:サーバ(ログイン・商品閲覧)やDB(ユーザー情報)、ストレージ(ストレージ)などがネットワークを介して使用できるようになっている
  • 機器の組み合わせは「アーキテクチャ」と言う
  • AWSはアーキテクチャの部品を提供している

サーバとは?

  • ソフトウェアはハードウェアの上に載っている
  • ソフトウェアの性能を高めるためにはハードウェアをパワーアップする
  • ソフトウェア
    • アプリケーション
    • ミドルウェア
    • OS
  • ハードウェア:CPU/メモリ

ハードウェアのリソース

  • CPU:命令を実行する装置(人間の頭脳、性能が良ければ素早く処理可能)
  • メモリ:命令やデータを記憶する装置(机の広さ、いちいちしまわなくていいのでたくさんの命令を準備した上で処理の実行が可能)
  • 処理の性質によってCPUが必要かメモリが必要かが異なる
  • 処理内容に応じたリソースの用意が必要。自分のサービスに必要なリソースを把握

仮想サーバ

  • 仮想サーバ①
    • アプリケーション
    • ミドルウェア
    • OS
  • 仮想サーバ②
    • アプリケーション
    • ミドルウェア
    • OS
  • 物理ホスト
  • ハイパーバイザー
  • ハードウェア(CPU/メモリ)

行っていること

  • 物理サーバー(ホスト)上で複数台の仮想サーバを動作させる技術
  • 仮想サーバの使用するリソースはハイパーバイザーが割り当てる

メリット

  • 物理リソースの有効活用:余力がある分使える
  • 迅速なプロビジョニンング:仮想サーバの準備や起動
  • 維持管理コストの低減:仮想サーバーを10個あっても物理サーバ1台ならコスパ良し

Webサービスが持つべき性質①

  • 可用性:サービスが継続して稼働できること
    • 障害を発生させないことはもちろん、発生してもすぐに復旧させるようにしておく
  • 冗長性:障害の備えて機材や回線を複数用意して備えること=可用性の向上にもつながる
  • 耐久性:障害が起こってもデータが失われないこと

Webサービスの公開

  • データセンタ(インフラストラクチャ)
    • 空調やひたすら監視している
  • プロビジョニングした仮想サーバに対して、自分たちのアプリを適切に配置して利用可能にすることをデプロイと呼ぶ
  • ユーザからアクセスしてもらって使用開始

Webサービスが持つべき性質②(公開後)

  • 拡張性:必要な時にすぐにリソース量を拡張/縮小できること
  • 弾力性:拡張/縮小を自在にできること

Webサービスの運用管理

監視サーバを置いてアプリケーションの状況をチェックする

  • 監視サーバからのアクセスすることによりヘルスチェック
  • サーバやDBからリソース情報を収集してモニタリングする
    • メトリクス(CPU使用率/メモリの空き容量/レイテンシ/アクセス数)
    • メモリが減ったりCPUの使用率が上がったら対策しよう
    • スパイク:一時的にある値が急上昇する=これにも耐えうるのか確認する

日々のメンテナンス(この時間は使用できません)

  • 新しいバージョンの導入
  • DBのバックアップ

Webサービスの安定稼働のために

キャパシティプランニング

  • アクセス数が増加して負荷が高まるとWebサービスの処理能力(キャパシティプランニング)を超える可能性
  • サーバーの性能や台数を調整してリソースを確保し、キャパシティを超えないような計画が必要
  • ユーザー数の見積もりやアクセス数を見積もるのは難しいので余裕を持って計画する必要がある

スケーリング

  • 要求量に応じてキャパシティを増減させること
  • スケールアップ/ダウン(垂直スケーリング):性能を上げる/下げる
    • 1つの重い処理(動画の処理など)
    • アーキテクチャの変更はない
    • 物理的な限界:性能が高くなれば値段も高い
  • スケールアウト/イン(水平スケーリング):台数を増やす/減らす
    • 小さい処理の同時の処理(複数のアクセスを捌く)
    • 動画の処理など重い処理には向かない
    • アーキテクチャの変化

負荷分散(ロードバランサー)

  • 冗長構成にしたサーバに通信を振り分ける
  • 可用性を高め、スケールアウト/インに対応する
なかじなかじ

モジュール2:AWSクラウドの紹介🐧

モジュールの目標

  • AWSクラウドの利点を説明できる

オンプレミスとは?

  • クラウドを使用せずデータセンターなどでインフラを自社管理する

従来のインフラ

  • データセンター・ラック・ネットワーク機器を調達
  • 高額な初期費用
  • 導入の決定から納品、実際の使用開始までたくさん時間がかかる&手続きが必要

クラウドとは?

  • インテーネット経由でさまざまなITリソースをオンデマンド(=好きな時に自由に使える)で利用することができるサービス
  • 必要な時に必要なだけ利用できる

AWSを使用する方法

  • AWSがハードウェアを所有および保守をする
  • 利用者は必要なものをプロビジョニングして使用する
  • マネジメントコンソール:管理画面のようなもの、DBやサーバ、インターネットを使用できる

クラウドの利点

1.データセンターの維持管理費用が不要になる

  • オンプレミス:インフラに多くの時間とコストを投入
  • クラウド:インフラの管理はAWSが行う

2.スピードと俊敏性が上がる

  • オンプレミス:リソースを希望してから入手するまで数週間
  • クラウド:ボタンひとつでリソースを追加できるので数分
  • 常に最新のアーキテクチャを採用可能<=>物理マシンだと同じものを使用しなければならない

3.キャパシティの予測が不要になる

  • オンプレミス:使用していないリソースに高額なコストが発生
  • クラウド:必要に応じたキャパシティの調整を数分で実行。使い切りそうになったら追加すれば良い

4.資本支出を変動支出に切り替える

  • 事前にデータセンタやサーバに多額の投資
  • 各リソースを使用した分のみ支払い
  • イニシャルコストを抑えることができる
  • 従量課金制:実際にサービスを利用した量に対する料金のみ
  • 予約や前払いなどで割引が適用
  • 一部のサービスは使用するほど割引が適用(ボリュームディスカウント)

5.圧倒的なスケールメリット

  • 規模の経済(産規模の拡大に伴い,収益性が向上すること)
  • 継続的な値下げをしている

6.数分で世界中にデプロイできる

  • わずか数回のクリックで世界中にアプリケーションをデプロイできる

AWSと総保有コスト(TCO)

  • AWSではデータセンタや電源・空調などの費用も込み込み
  • 設備費用や運用費用などを合わせたコストとして考える

マネージドサービス

  • AWSが利用者に変わってインフラを運用するサービス
  • 適切に採用することでTCOの削減が期待できる

Amazon RDS(下記も込み込み)

  • 自動でバックアップ
  • ソフトウェアのアプデ
  • 障害の検出・復旧

AWSのセキュリティ

  • AWSの最優先事項
  • データを安全に保つ
  • コストの削減
  • コンプライアンス要件への準拠
  • 迅速な拡張
  • AWSが実施するものに加え、AWS上で実行するアプリケーションもセキュリティを高めておく必要あり
  • セキュリティが色々用意してあるよ

責任共有モデル

  • AWSとお客でそれぞれセキュリティの責任を分担
  • AWSのセキュリティは第三者の監査レポートが提供されている
  • 暗号化、アクセスできる人間は誰か、ネットワークの設定をどうするかがお客さんが対応する
  • 責任共有モデル | AWS
なかじなかじ

モジュール3:コンピューティング

モジュールの目標

  • Amazon EC2について説明できる
  • Amazon CloudWatchについて説明できる
  • Amazon EC2 Auto Scalingについて説明できる
  • Elastic Load Balancingについて説明できる
  • 上記のサービスを用いた可用性の高めかたについて理解できる

コンピューティングの選択肢

  • Amazon EC2はコンピューティングサービス
  • コンピューティングはコンピュータを使った計算や処理
  • 下記はいずれもAWSのコンピューティングサービス
    • Amazon EC2:インスタンス
    • ECS:コンテナ
    • AWS Lambda:サーバーレス

Amazon EC2

  • 安全でサイズ変更が可能なコンピューティング性能をクラウド内で提供するウェブサービス
  • EC2インスタンス
    • AWSが用意:電源や配線/ネットワーク/OSの導入
    • お客さんが用意:OSのバッチ/ミドルウェアの管理/アプリケーションの管理
  • オンプレミス
  • お客さんが用意:電源や配線/ネットワーク/OSの導入/OSのバッチ/ミドルウェアの管理/アプリケーションの管理
  • 用途はアプリケーションサーバからデータベースサーバーまで様々

インスタンスタイプ

インスタンスのCPUやメモリなどを定義する仕様

  • 汎用:M5/M4/T3
  • コンピューティング最適化(CPUの容量が大きい):C5/C4
  • メモリ最適化(メモリが大きい):R5/R4
  • ストレージ最適化(読み書き高速):H1/I3
  • 高速コンピューティング(GPUを搭載し機械学習に特化):P3/G3/F1
    オンプレミスでここまで種類を揃えるのは難しい

Amazon CloudWatch

  • 夜間は起動しているインスタンスの量を減らしたいな〜
  • さまざまなメトリクス(CPU使用率/メモリの空き容量/レイテンシ/アクセス数)を監視及び管理をして、それらに基づいてアラームアクションを設定できるWebサービス
  • インスタンスの追加は行わない

モニタリング

  • AWSリソース
  • 実行中のアプリケーション

アラーム

  • 通知を送信する(CPU使用率が100%に近づいたらメール)
  • 定義したルールに基づき自動的に変更を行う

Amazon EC2 Auto Scaling

  • 需要の変動に対応してコンピューティング性能(EC2のインスタンスの台数)を増減するウェブサービス
  • Auto Scaling Group(インスタンスの集合体)とAmazon CloudWatchを紐づけ
  • Amazon CloudWatchがアクセス数の増加を検知するとAuto Scalingが台数を増やす(システムが落ちる可能性が減る)
  • Amazon CloudWatchがアクセス数の減少を検知するとAuto Scalingが台数を減らす(コストの削減も可能)

Elastic Load Balancing

  • アプリケーションへのトラフィックを複数うのターゲットに自動で分散し可用性(サービスを継続して利用できる性質)を高めるWebサービス
  • ユーザーはELBに最初アクセスし、インスタンスに割り振ってくれる
  • ELBは自身の背後にあるインスタンスをヘルスチェックしている
  • ELBは異常の検知はできるが、インスタンスの増加はできない
  • CloudWatchに監視させて、Auto Scalingで新しいインスタンスを追加できる
なかじなかじ

モジュール4:データベース

モジュールの目標

  • データベースについて説明できる
  • データモデルについて説明できる
  • AWSのデータベースについて列挙できる

データベースとは?

  • システムで用いられるあらゆる種類のデータを格納、管理、更新、分析するために使用されるシステム
  • サーバからクエリ(SQL)でデータベース内のデータを問い合わせる
  • データベースを操作するものをデータベースエンジンという(My SQL/ポスグレなど)

データモデル

格納するデータの構造。適切に定義することで効率よくデータ管理や分析ができる

  • リレーショナル型:データを表形式として表現(SQL)
  • キーバリュー型:データをキーと値のペアとして表現 #データベースの性能が高めやすくなっている(NoSQL)
  • グラフ型:データをグラフ形式として表現(NoSQL)

データモデルの例

  • リレーショナル型:明確に定義できるデータモデル。分析処理が得意
  • キーバリュー型:キーと値で格納。シンプルなデータモデルで高い性能を発揮。

オンプレミスからマネージドサービス

  • Amazon EC2:サーバーの導入になるのでOSのバッチまでAWSが提供
  • Amazon RDS:アプリからの利用のみお客さんが管理。その他はAWSがやってくれる

Amazon RDS

  • クラウドでリレーションなるデータベースを簡単にセットアップ、運用、スケーリングすることができるデータベースサービス
  • 利点:管理が簡単/高いスケーラビリティ/可用性と耐久性/高速/セキュア/安価
  • データベースエンジン:さまざま(オンプレからの移行候補として上がる)

Amazon DynamoDB

  • フルマネージド型のNoSQLデータベース
  • 自動的なスケールアップ/ダウン
  • クエリのレイテンシーが低い
  • きめ細やかなアクセスコントロール
  • リージョン別のグローバルオプション
なかじなかじ

モジュール5:ネットワーク

モジュールの目標

  • IPアドレスについて説明できる
  • CIDRについて説明できる
  • DNSについて説明できる
  • Amazon VPCの概要を知る
  • Amazon Route 53の概要を知る

コンピュータネットワーク

  • 世界中に張り巡らされたネットワークによっていろいろアクセスできる(=ネットワーク)
  • 世界中の人と連絡を取り合うためルールを決めておく必要がある
  • プロトコル:コンピュータ同士が相互にデータをやり取りするための手段
  • ユーザー(ソース側)ーインターネットプロトコル(IP)パケット送る→サーバー(ターゲット側)
  • 場所をIPアドレスという

IPアドレスとポート番号

  • 0と1の組み合わせて判断する
  • 4つのブロックを組み合わせて10進数で表す
  • ユーザー(1.1.1.1)→サーバー(2.2.2.2)
  • サーバでポート番号でアプリを管理(HTTP:80 HTTPS:443)
  • わざわざポート番号の数を意識しなくて良い

Classless Inter-Domain Routing(CIDR)

  • あるコンピュータのグループについて共通の値から始めることがある(東京都みたいな)
  • 前半:ネットワークアドレス部(16桁)
  • 後半:ホストアドレス部
  • 172.16.0.0/16→172.16は共通している

ネットワークインフラストラクチャ

  • 大枠の中のグループをサブネットという
  • どこかがインターネットと繋がっていれば繋がる
  • 172.16.0.0/16
    • 172.16.1.0/24(サブネット)
    • 172.16.2.0/24(サブネット)
  • 組織内のIPアドレスはプライベートIPアドレスなので外向けのIPアドレス=グローバルIPアドレスに変換される

Amazon VPC

  • AWS Cloud上に専用の論理仮想ネットワークを構築できるWebサービス
  • VPCのサブネット
  • パブリックサブネット(EC2インスタンス)
  • プライベートサブネット(DBインスタンス):セキュリティ

DNS(Domain Name System)

  • IPアドレスはわかりにくいのでドメイン名
  • ドメイン名もインターネット上の住所
  • ドメイン名ーDNSが変換(名前解決)→IPアドレス
  • ユーザーがDNSにwww.example.comは?と問い合わせる
  • DNSは2.2.2.2ですと返す
  • ユーザーは2.2.2.2のサーバーを探す

Amazon Route 53

  • 可用性と拡張性に優れたDNSを提供するWebサーバ
  • Route 53を使って名前解決をしてELBにアクセス
なかじなかじ

モジュール6:セキュリティ

モジュールの目標

  • 認証と認可について説明できる
  • AWS IAMの概要について知る
  • 通信の暗号化の概要について知る
  • ファイアウォールについて説明できる

安全な利用のために

  • 認証と認可
    • 認証:正当性の検証(ユーザーの検証等)
    • 認可:操作の許可
  • 通信の暗号化
    • 通信路での盗聴からデータを守る
    • SSL/TLS/IPSec/...
  • 保管データの暗号化
    • 保管されたデータが意図しない第三者から読み出されるのを防ぐ
    • ファイルを暗号化/データベースの暗号化/ブロックデバイス暗号化/...

IAM

  • AWSのサービスやリソースへのアクセスを安全に制御するWebサービス
  • ユーザー名&パスワードで認証
  • IAMポリシー:認可(=設定変更ができるようになる)

暗号化

SSL/TLS

  • セキュリティの高い通信を実現するプロトコル
  • 鍵交換・認証(=>主に公開鍵暗号)・暗号化・改ざん検出(=>主に共通鍵暗号)を行う
  • HTTPS通信:SSL/TLSを用いたHTTP
  • サーバー側でキーペアとサーバー証明書(その公開鍵がそのサイト(ドメイン名)のものであることを証明するもの)を発行
  • これを実現するためには予めサーバー側での用意が必要になる

ELBを用いたSSL通信

  • AWS Certificate Manager:サーバー証明書や鍵の作成ができる。そしてボタンひとつでELBに配置できる⭕️
  • AWSのマネージドサービスの良さ

ファイアウォール

  • ネットワーク上の通信を制御し、外部<=>内部の通信を制限できるセキュリティシステム
  • ユーザー(インバウンド)からサーバー(アウトバウンド)からのアクセスを見張ることでセキュリティアップ
  • ステートフル:戻りの通信を自動で許可
  • ステートレス:戻りの通信も個別で判定

セキュリティグループ

  • インスタンスレベルで制御が可能な仮想ファイアウォール
  • 許可ルールのみを指定でき、ステートフルで評価される
  • EC2のインスタンス(サーバ)に関しては全世界のアクセスを許可するというルール
  • RDS用のインスタンス:EC2のインスタンスから送られてくるDB用のアクセスのみ許可するというルール