【AWS/Udacity】AWS クラウドアーキテクト ~First Submit~


Udacity の AWS アーキテクチャコースを受講しています。
今回はその内容のアウトプットをしていければと思います。

Resiliency

redundancy(冗長性)

  • サブネットグループがキーになる
  • 複数のインスタンス
  • 最初の構築はマルチAZで構築するのが良さげ、リージョンだと少し重い。

Business Objectibe(ビジネス目標)

Uptime

  • SLA
  • 全て冗長化すべき
  • 計算
    Allowed downtime = (30 days 24 hours 60 minutes) - (30 days 24 hours 60 minutes * SLA percentage)

99%の場合の計算は以下の通りです。

43200 - 42768 = 432
432 ÷ 60 = 7.2時間


High availability - Wikipedia より引用

Downtime(ダウンタイム)

Downtime is the opposite of uptime

  • Third party Downtime
  • ダウンタイムの例外
    • Scheduled Maintenance
    • Degraded Service(サービスの低下)
    • Force Majeure(不可抗力)

メンテナンスに優れている時間帯はどこか?
メンテナンスをするサイトのトラフィックのパターンを解析してから決定するのが良い
・最初の土曜日の 1am ~ 4am とか

自分たちのサービスとThird Partyを分ける

RTO(Recovery Time Objective)

ダウンタイムを許容できる時間のことをさします。
いまさら聞けないRPO(目標復旧時点)とRTO(目標復旧時間)の違い

2時間のRTOの場合は、下記などが必要になります。
・24時間体制のサポートチーム
・復旧手順書

RPO(Recovery Point Objective)

システムがデータを失う最大の時間をさします
RPOをできる限り減らす施策は下記が考えられます。

  • 冗長化
  • バージョニング
  • Point-in-time recovery

全体図


第1回 DBシステム可用性向上の基礎知識 より引用


Amazon RDS を使った災害復旧戦略の実装 | Amazon Web Services ブログ より引用

大事なこと

  • 復旧用のドキュメント作成
    • 誰でもこれをみて実行できるようにしておく
  • 練習を何回も行うこと
    • ここはカオスエンジニアリングとかも関わってきそう

何を準備しておくべきか

  • データベースバックアップ
  • サーバーイメージ
  • ソースコード
  • サーバーの設定詳細
  • ネットワークの設定
  • IPのホワイトリスト

復旧プランの種類

  • Cold Standby
  • Pilot light
  • Warm Standby
  • Hot Standby

参考記事

October 21 post-incident analysis - The GitHub Blog
How we run incident postmortems | Atlassian

5 Monitor, Reaact, Recovery

何が変わったのかを確認する

復習

データベース作成

【AWS】(番外編)初心者向けVPC内でEC2やRDSインスタンスを生成する際の備忘録 - SEワンタンの独学備忘録

リードレプリカ作成

RDSリードレプリカ環境を構築してみる – Web Pencil

インスタンス作成

sshコマンド
ssh -i primary-udacity.pem [email protected]

忘れた時は

どうやんだっけ?となった時は、「接続」ボタンをクリックして、コマンドを確認します。

権限が適切に設定されているか確認
chmod 600 primary.pem
【SSH】Permissions 0644 for 'XXX.pem' are too open. | 株式会社アイ・プライド

EC2からデータベースへの接続

mysql -h udacity.cqhvsheixadi.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p
AWSのEC2からRDSに接続してmySQLを操作。EC2踏み台サーバー構築メモ|おちゃカメラ。

データベース作成

create database udacity;
データベースを作成する(CREATE DATABASE文) | MySQLの使い方

テーブル作成

create table user (id int, name varchar(10));
データを追加する(INSERT文) | MySQLの使い方

データ挿入

insert into user values (1, 'Yamada');
データを追加する(INSERT文) | MySQLの使い方

データ読み取り

select * from user;

リードレプリカの作成、昇進

アクションからリードレプリカを作成したり、masterに昇進させることもできます。

構築した構成図