AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得【セクション3】
【VPC】ネットワークを構築する
AWSのネットワークの概念を学ぼう
リージョンとは、AWSの各サービスが提供されている地域のこと 最新機能はアメリカのリージョンで使用可能。徐々に広がっていく
アベイラビリティゾーン 独立したデータセンター群のこと
VPCは、AWS上に仮想ネットワークを作成できるサービス VPCの中にサブネットを作成し、ネットワークを区切る(今回だとパブリックとプライベートで区切る)
サブネットを複数のアベイラビリティゾーンに作成することで、冗長性を高めることがベストプラクティスとされている。
ネットワークのIPアドレスを決めよう
東京には3つのアベイラビリティゾーンがある(ap-northeast-1a,1c,1d)
パブリックIPアドレス ・インターネットに接続する際に使用するIPアドレス ・重複するの正しく通信できなくなるため、ICANNという団体が管理している ・プロバイダーやサーバー業者から貸し出される(AWS上でも)
プライベートIPアドレス ・インターネットで使用されないIPアドレス ・下記範囲内のアドレスを自由に使用できる 10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0~192.168.255.255 ・社内LANの構築やネットワークの実験時はプライベートIPアドレスを使用する
ネットワーク部とホスト部で区分けできる。 CIDR表記かサブネットマスク表記で区分けをみる。
VPCを作成しよう
サブネットを作成しよう
ルートテーブルは「宛先IPアドレス」と「次のルーター(AWSではターゲット)という書式で設定する
インターネットゲートウェイ・・・VPCとインターネットをつなぐ、仮想のルーター
ネットワーク設計で考慮すべきポイント
VPCの設計のポイント プライベートIPアドレス範囲から指定しよう 作成後は変更できないので、大きめに設定しよう 大きさは/28 ~ /16。/16が推奨 オンプレミスや他VPCのレンジと重複しないように気を付ける
VPCを分割するか?アカウントを分けるべきか? 異なるシステムの場合はアカウントを分けよう
同一システム(社内、ステージングなど)の各環境はVPCとアカウントのどちらを分けるか? VPCを分けると、IAMの設定が一度でよい。反面、各環境のリソースが見えてしまい、事故のもとになる。 アカウントを分けると、他の環境のリソースが見えず、作業しやす。反面、環境毎にIAMの設定が必要。 著者的には、同一アカウントで、VPCとリージョンを分けるのがおすすめ。
サブネットの設計のポイント 将来的に必要なIPアドレス数を見積もって設定しよう /24が標準的 サブネットの分割は、ルーティングとアベイラビリティゾーンを基準に行う サブネットに割り当てられるルートテーブルは1つ インターネットアクセスの有無、拠点アクセスの有無などのルーティングポリシーに応じて分割する 高可用性のために、2つ以上のアベイラビリティゾーンを使用する
AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得【セクション2】
初期設定
AWSのアカウント作成
CloudWatchで料金アラートを設定する
請求ダッシュボードで請求アラートを受け取るように設定する CloudWatchで料金アラートを設定する
IAMで作業用ユーザーを作成する
AWSアカウントを作成するとルートユーザーが作成される。 ベストプラクティスとしては、作業用のIAMユーザを使用する。 誤操作防止や、ログ管理のため。
ルートユーザー ・AWSリソース全てに完全なアクセス権を持つ特権ユーザー ・アカウントの変更、解約、サポートプランの変更等の時のみ使用する ・極力利用しない
作業用ユーザー ・認証情報とアクセス許可の権限を個別に変更できる ・作業者事に個別に作成する ・通常作業はIAMユーザーで行う
CloudTrailで操作ログを記録する
いつ誰が何をしたのかを記録しておくことで、不正アクセスや不正操作をチェックできる
■設定方法 CloudTrailで証跡を作成する→S3にログが保存される
デフォルトで有効になっているが、保存期間は90日のみ S3に保存することで、ずっと保存できる CloudTrail自体は無料。S3は有料
AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得【セクション1】
コースの内容
AWSを実際に触ることで、インフラが苦手でも理解できるようになる
手を動かし、ゼロからAWSでインフラを構築する
使われることの多いAWSサービスをピックアップ。設計パターンを習得
作りながらインフラの基礎知識も身に付く
目標:設計、運用、構築ができるようになること 基礎編(構築編)、発展編(運用編)に別れる
インフラができるようになるメリット
自分でサービスを作れたり、課題に対してシステム全体で対応できるようになる 開発時のテスト環境くらいは自分で構築できるようになると、システム全体を把握できる
インフラを構築する時は、ネットワークやサーバーを、次の手順で設計する ①サーバーの構成 どのようなサーバーが必要か サーバーの設置 サーバーのOSをインストールし、各種設定を行う ソフトウェアのインストール ②構築したサーバをネットワークに接続する IPアドレスの範囲を決める サーバーにIPアドレスを割り当てる ドメイン名とIPアドレスの対応を割り当てる
AWSとは?
サーバーやネットワークを構築するクラウドサービス AWSの特徴 ・サービスが豊富 ・リソースを、必要な時に必要な分だけ調達できる ・従量課金制 ・不必要な時は使う必要がなく、費用対効果に優れている
インフラとは?
サーバーやネットワークのこと Infrastructure:基盤
サーバーとは?
クライアントに対してサービスを提供するコンピューター 実態はただのコンピューターだが、呼び方が異なる (WebサーバーやDBサーバーなど)
ネットワークとは?
複数のコンピューターをつないで、データを送受信できるようにするもの
クラウドとは?
ネットワークを利用してコンピューターリソースを利用する形態のこと
オンプレミス ①自前で用意し、自社で所有・管理すること ②欠点は、調達期間が必要で、サーバーの増減がしにくいこと
クラウド ①インフラをネットワーク経由で使用・管理すること ②すぐに始められ、サーバーの増減が自由にできる ③欠点は、費用の予測が付きにくいこと。クラウド全体で障害が起こると対応のしようがないこと
ルーティングの設定
ルーティング用ライブラリ 1. react-router v4以降 Reactのルーティング用ライブラリ 2. connected-react-router ReduxのStoreでルーティングを管理 react-router v4&v5と互換性あり
Fluxフローとは
なぜReduxを使うのか?
- stateの見通しをよくするため
- どこからでもstateを参照/変更可能にするため
- モジュール(機能のまとまり)を疎結合にするため
もしReactのみでstateを管理した場合
ひ孫でイベントが発生
孫→子→親へ伝達
親→子→孫へ伝達
Propsのバケツリレーが発生する
Reduxでstateを管理した場合
ひ孫でイベントが発生
ひ孫→Storeへ伝達
Store→孫へ伝達
Fluxフローとは?
- データフロー設計の1つ
- データが常に1方向に流れる
- イベントによってデータが変化(イベント駆動)
Flux思想をReactの状態管理に適用したライブラリがRedux