ざっくりAWS
目次
- 止まらないサービスを作るために
- AWS・概要
- AWS・基本のサービス 10選
- AWS・応用のサービス 10選
- サーバレスアーキテクチャ
止まらないサービスを作るために
落ちないサーバを作るための歴史
- 一台での運用
- コールドスタンバイ
- ホットスタンバイ
- DNSラウンドロビン
- ロードバランサー
- 役割ごとにサーバを構築
- AWS+マネージドサービス
一台での運用
- 1台のサーバにApacheやMySQLなどをインストール
- サーバが故障すると直ちにサービスが止まる
- 復旧には時間がかかる
コールドスタンバイ
- 電源を切った予備サーバを用意しておく
- サーバが故障したら、予備サーバに差し替える
- Webサーバの場合、データが頻繁に更新されるので切り替えが厄介
ホットスタンバイ
- 電源を入れた予備サーバを用意しておく
- 予備サーバにも常に同じ内容をアップロードしておく(もしくは自動で同期するなど)
- サーバが故障したら、予備サーバに差し替える
- ほとんど使われない予備サーバを稼働させ続けることになる
DNSラウンドロビン
- ドメインに複数のIPアドレスを割り当てる負荷分散技術
- ホットスタンバイのサーバを活用する
- 複数台のサーバのうち、いずれかのサーバが参照される
- サーバがダウンしても参照し続けるという問題はある
- ロードバランサーが高価だった時代には主流だった
ロードバランサー
- ロードバランサーがリクエストを受け付け、それを各サーバに割り振る
- サーバがダウンしたらロードバランサーから自動的に切り離されたり、復旧したらロードバランサーに自動的に追加されたりと高機能
- ロードバランサーにコンテンツを置くわけでは無いので、コールドスタンバイでロードバランサーの故障に備える
役割ごとにサーバを構築
- 「Webサーバ」「ファイルサーバ」「データベースサーバ」など役割を分ける
- 「データベースサーバはメモリを多く」「Webサーバの台数を増やす」など柔軟な対応ができる
- サーバが故障しても復旧や切り離しが容易(になるように構築する)=冗長化
※冗長化せずに複数台構成にするのは悪手とされる
AWS+マネージドサービス
- 「Webサーバ」「ファイルサーバ」「データベースサーバ」などにあたるサービスがそれぞれ提供されている
- Amazonが管理しているので、サーバがダウンした場合のことを(基本的には)考えずに利用できる
AWS・概要
概要
- Amazon Web Service の略
- Amazonが提供するクラウドサービス。Amazonが使用しているコンピュータを借りることができる
基本
- SLA
- Service Level Agreement の略
- 合意サービス水準、サービス品質保証などと訳される
- 可用性
- システムが継続して稼働できる能力のこと
- リージョン
- 地理的に離れた領域
- 「東京」「バージニア北部」「ロンドン」など
- アベイラビリティゾーン
- AZとも表記される
- 1つのリージョンに複数のそれぞれ独立したゾーンがある
- 同一リージョン内のアベイラビリティゾーンは、高速な回線で接続されている
- マルチAZ
- 複数のAZをまたいでサーバを配置する
- いずれかのAZが丸ごとダウンしても稼働できる
- 高い可用性を実現できる
- Elastic
- 「弾力のある」「伸縮自在の」といった意味の英語
- AWSのサービス名によく使われている
- 料金見積もりツール
- 課金はサーバの性能により、時間単位で課金され、通信料にも依存する
- 一般的なレンタルサーバのような感覚で金額を出すことはできないが、見積もるためのツールがある
- 規制と申請と緩和
- 特定サービスの利用やメールの送信などには、申請が必要
AWS・基本のサービス 10選
EC2
- Elastic Compute Cloud
- 仮想サーバ
- AWSの中核となるサービスの1つ
- ごく普通のサーバとして使えるので、これをDBサーバなどに使うこともできる
ただし後で紹介するRDSなど、AWSが管理するマネージドサービスを使う方が好ましいとされる
- AMI(Amazon Machine Images)を作成して複製できる
Route 53
- DNS(ドメイン管理)サービス
- 「53」というのは、DNSサーバが53番ポートを使うことに由来する
- 唯一、100%の可用性
SecurityGroup
- ファイヤーウォール
- グループごとに一括して設定を管理できる(1台ずつに設定してもいいが、管理が大変)
- ログを残せないのがデメリットとされている
ELB
- Elastic Load Balancing
- 負荷分散装置(ロードバランサー)
- 裏側では複数台のELBが動いているため、高い可用性を得られる
- 固定IPを持たない。基本的にRoute53と合わせて使う
EBS
- Elastic Block Store
- EC2から利用するストレージ。HDDやSSD
- スナップショットとしてバックアップを作成できる(S3に保存される)
S3
- Simple Storage Service
- マネージドサービスのオンラインストレージ
- 99.99%の可用性
- 容量は無制限
- AWSの中核となるサービスの1つ
- ダウンしないことが売りだが、ダウンしたことはある
VPC
- Virtual Private Cloud
- 論理的に分離したネットワークを作成する
RDS
- Relational Database Service
- データベース
- OS層の管理はAWSにより自動的に行われる(RDSに限らずマネージドサービス全般で言える)
- マルチAZ配置を使えば高い可用性を得られる
CloudWatch
- リソースやアプリケーションのモニタリング
- RDSなど、OSに直接アクセスできないサービスの監視もできる
- サーバのログをCloudWatchに転送し、集中管理もできる(CloudWatch Logs)
AWS・応用のサービス 10選
ACM
- AWS Certificate Manager
- SSL/TLS証明書の管理
- 無料で証明書を発行できる(AWSでのみ利用できる)
CLI
- Command Line Interface
- AWSの各サービスをコマンドラインで操作
Auto Scaling
- 決められた条件によってEC2を自動的に増減できる
- 「どんな負荷にも耐えられる」よりは「使わないEC2を自動停止して費用を抑える」ものと思ったほうがいい
- EC2が増えてもRDSが負荷に耐えられない…などはあり得る
CloudFront
- コンテンツ配信ネットワーク(CDN)
- 世界中にサーバが設置されており、最寄りのサーバからデータをダウンロードする
WAF
- ウェブアプリケーションファイヤーウォール
- 「攻撃と思われるアクセス」をあらかじめ定義しておき、該当するアクセスをブロックする
Lambda
- コンピュートエンジン
- あらかじめ登録したコードを実行できる
- コードはイベント(「S3にファイルが保存された」など)に応じて実行したり、他サービスから実行したりできる
API Gateway
- REST API(URLにアクセスすると処理結果を返すAPI)を作成する
- 処理内容はEC2やLambdaに割り振ることができる
SES
- メール配信サービス
- メールの受信もできる
- SMTPサーバの代替
SQS
- メッセージキューの管理
- キューに対して任意のメッセージを送り、ポーリング(プル)によって別のアプリケーションからそのキューのメッセージを取得する
- 非常に時間がかかる処理を、バックグラウンドで行わせることができる
Elastic Beanstalk
- アプリケーションのデプロイ環境を迅速に作成できる
- クラウド環境の構築を丸ごと面倒見てくれる
- 設定が非常に多くて難しい印象
サーバレスアーキテクチャ
概要
- サーバを自前で用意せず、マネージドサービスを活用してシステムを構築すること
- 「サーバを使わない」ではなく「サーバ管理をしない」という意味
具定例
- CloudFrontで大量のアクセスをさばき、
- API Gateway で処理を割り振り、
- Lambda でプログラムを実行し、
- S3にデータを保存する
…など
まとめ
豊富なマネージドサービスを活用しましょう!Σd(╹◡╹ )