演習の概要
- 実際にAWS上にアプリケーションを構築してみる
 - 構築にあたっては 3層アーキテクチャ というものを使い、Webアプリケーションを3種類の構造に分ける
 - 加えて、 適切なネットワーク設定 と 冗長化 を行なった上で、自前の WordPressのサーバとDB を立てる
 
利用するAWSリソースの説明
Amazon VPC
- AWS上に、仮想のプライベートネットワークを構築することができるサービス
 - VPCを作成した上で、複数のプライベート/パブリックサブネットに分割することができる
 
インターネットゲートウェイ
- VPCとインターネットとの間の通信を可能にするためのもの
 - 
        
  
    
      
        
          
            これがあれば、パブリックサブネット内のリソースからインターネットへ、インターネット上のリソースからサブネット内のリソースへの接続できるようになる
          
        
      
    
  
        
- 例:ローカルコンピュータを使用してEC2インスタンスに接続できる
 - リソースには、パブリック IPv4 アドレスまたは IPv6 アドレスを設定する必要がある
 
 
ELB(Elastic Load Balancing)
- 従量課金で使うことのできるロードバランサ
 - ロードバランサとは、外部からの通信(トラフィック)を複数のサーバに振り分け、負荷を分散するもの
 - 
        
  
    
      
        
          
            異なる3種類のロードバランサがある
          
        
      
    
  
        
- 
        
  
    
      
        
          
            ☆Application Load Balancer
          
        
      
    
  
  
    
      
        
          
             (ALB)
          
        
      
    
  
        
- 今回使うのはこれ
 - OSI 参照モデルにおけるレイヤ7(アプリケーション層)に対応
 
 - 
        
  
    
      
        
          
            Network Load Balancer (NLB)
          
        
      
    
  
        
- レイヤ4(トランスポート層)に対応
 
 - 
        
  
    
      
        
          
            Gateway Load Balancer (GWLB)
          
        
      
    
  
        
- サードパーティのセキュリティ製品をうまいこと使えるようにするためのVPCを接続することが目的のロードバランサ
 
 
 - 
        
  
    
      
        
          
            ☆Application Load Balancer
          
        
      
    
  
  
    
      
        
          
             (ALB)
          
        
      
    
  
        
 
EC2
- 台数やスペックを柔軟に変更可能な仮想サーバ
 - 必要な時に必要な台数を、時間課金で利用可能
 
RDS
- RDBMSのマネージドサービス
 - 
        
  
    
      
        
          
            今回はその中でもAmazon Auroraを利用
          
        
      
    
  
        
- MySQLとPostgreSQLに互換性のあるクラウド向けのRDB
 - WordPressにはMySQLが必要なので、今回はMySQL互換のAuroraを使用
 
 
AWS CloudShell
- AWSコンソールから使えるシェル
 - Bash、PowerShell、Z shellが利用可能
 - aws cliはデフォルトで利用可能
 - 
        
  
    
      
        
          
            コンソールでログインしたユーザと同じ権限を引き継ぐ
          
        
      
    
  
        
- IAMユーザやプロファイルの管理が不要
 - 今回はaws cliを簡単に利用するために使います
 
 - リソースの後片付けに、CloudShellからaws cliを使って一気に消すようにする
 
AWS以外の説明
- 
        
  
    
      
        
          
            WordPress
          
        
      
    
  
        
- 
        
  
    
      
        
          
            世界的にシェアが高いオープンソースのCMS
          
        
      
    
  
        
- CMSとは、Contents Management Systemの略で、専門的な知識がなくとも簡単にwebサイトを制作できるシステムのこと
 
 - 一番シンプルな使い方だと、ブログとか作れる
 
 - 
        
  
    
      
        
          
            世界的にシェアが高いオープンソースのCMS
          
        
      
    
  
        
 
構成の説明
- 
        
  
    
      
        
          
            リソースは全て作成するVPC内に配置
          
        
      
    
  
        
- アベイラビリティゾーンは1aと1cを利用
 - 
        
  
    
      
        
          
            アベイラビリティゾーンごとにパブリックサブネットとプライベートサブネットを作成
          
        
      
    
  
        
1cのプライベートサブネットは、今回は作成するけど利用しない
- 元々の演習だと、1cのプライベートサブネットにもRDSを配置して、DBをマルチAZ構成にして冗長化していた
 - が、残念ながら今回は時間の関係上カット…
 
 
 - 
        
  
    
      
        
          
            ユーザはインターネットゲートウェイ経由でELBにアクセスし、パブリックサブネットに配置されたEC2のどちらかにアクセスする
          
        
      
    
  
        
- ユーザはプライベートサブネットに配置されたRDSに直接アクセスすることはできない
 - ELBがEC2の状態を監視しているので、仮に片方のEC2が落ちていても、ユーザのアクセスは正常なEC2に振り分けられる
 
 - EC2はアクセスがあると、プライベートサブネットにあるRDSから情報を取得しユーザに返す
 
ポイント
- 
        
  
    
      
        
          
            適切なネットワーク設定
          
        
      
    
  
        
- ユーザはパブリックサブネットに配置されたEC2にしかアクセスできない
 - プライベートサブネットに配置されたRDSへ、直接外部からアクセスすることはできない
 
 - 
        
  
    
      
        
          
            冗長化
          
        
      
    
  
        
- 一部に障害が発生しても全体の機能を維持し続けられる仕組みにすること
 - EC2は2台あり、ELBを通すことで冗長化している