SlideShare a Scribd company logo
サーバーレスを可能にする
AWSサービスの概要
2
当ドキュメントのスコープ
✓ AWSのサービスから、Webアプリケーションの構築に使えるサービスの紹介
✓ サービスをシステムアーキテクチャーの要素別に区分して機能の簡単な紹介と共にメ
リットとデメリットを提示し、比較できるようにする
※ただし、IoT、AIに関するAWSサービスは対象外(今後別文書として提示)
✓ 実際のWebサービスを作るために、AWSのサービスを組み合わせたアーキテクチャー例
を提示
✓ AWSのサービスから、Webアプリケーションの構築に
使えるサービスの紹介
✓ サービスをシステムアーキテクチャーの要素別に区分して
機能の簡単な紹介と共にメリットとデメリットを提示し、
比較できるようにする
※ただし、IoT、AIに関するAWSサービスは対象外(今後別文書として提示)
✓ 実際のWebサービスを作るために、AWSのサービスを組み
合わせたアーキテクチャー例を提示
目次
1. AWSサービス紹介
● ネットワーキング
● コンピューティング
● データベース
● ストレージ
● アプリケーション統合
● セキュリティ
● 開発者ツール・DevOps
● その他
2. サービス構成例
3. AWSにおける開発・デプロイ
4
1. AWSサービス紹介
5
ネットワーキング
サービス 区分・概要 メリット デメリット
VPC 仮想プライベート
クラウド
● 仮想ネットワークを簡単に構築可能
● 細かいセキュリティ設定が可能
● サブネット、ルートテーブルなど最低限のネットワーク
の知識が必要
VPN 仮想プライベート
ネットワーク
● オンプレミスネットワークとVPC間でセキュアな
接続が可能
● 専用線接続サービス(DirectConnect)も用意され
ている
● オンプレを外部ネットワークと接続する事になるのでセ
キュリティ設定を密に行う必要がある
Route 53 DNS ● DNSサーバ構築、管理が不要
● 可用性、拡張性に優れている
● AWSの他サービスとの連携が容易
● 利用料金が掛かる(ただし非常に安価)
CloudFront CDN(コンテンツ
デリバリーネット
ワーク)
● 世界中へ高速にコンテンツを配信可能
● エッジロケーションにより負荷が分散される
● キャッシュにより、オリジンサーバへの負荷を低
減する
● CloudFrontとは別にS3やEC2等、コンテンツを格納す
るサーバ・サービスが必要
6
ネットワーキング
サービス 区分・概要 メリット デメリット
Elastic Load
Balancing
ロードバランサー ● アプリのトラフィックを複数のターゲット(EC2、
ECS、Lambda等)に自動的に分散可能
● ELBをSSL終端とする事でサーバ(EC2等)のSSL対
応が不要となる
● Network Load Balancerを使用すれば固定IPでの
運用が可能
● (あえて書くなら)ELBの利用料金が掛かる
API Gateway サーバレスで
APIを公開
● RESTfulAPI、WebSocketAPIをサーバレスで公開
可能
● Lambdaと組み合わせて完全サーバレスのAPIを公
開できる
● スロットリング設定によりバックエンド側の負荷
を制御可能
● データ量等の制約を意識する必要がある
● Lambdaと組み合わせる場合、Lambda側の制限と合わ
せて設計する必要がある
7
コンピューティング
サービス 区分・概要 メリット デメリット
EC2 仮想サーバ ● オンプレミスからの移行が容易
● 既存資産を活かし易い
● スケーリングが容易
● サーバの管理を自前で行う必要がある
Lambda サーバレスで
コードを実行
● サーバ構築、管理が不要
● AWSの様々なサービスから呼び出せる
● APIGatewayやAppSyncと連携しサーバレスな
WebAPIを提供可能
● ステートレスなので、コネクションプールを使用できず
RDS(RDB)との相性が悪い。コネクションの枯渇が発生
しやすい。→ Aurora ServerlessであればOK。
● 既存資産を活かしにくい
ECS コンテナ ● 1サーバで複数のコンテナを起動できるのでマイク
ロサービスの提供が容易
● コンテナを動かす為のサーバ(EC2)が必要
● Docker等のコンテナを構築する知識が必要
Fargate コンテナ ● コンテナを動かすサーバの管理が不要
● マイクロサービスの提供が容易
● スケーリングが容易
● Docker等のコンテナを構築する知識が必要
● EC2の同一スペックに比べてコストが若干割高。ただし
FargateはAWSの重要サービスである為、値下げされる
事が多い。
AWS Batch バッチ処理 ● サーバの管理が不要(自動起動、停止)
● 必要な時に必要なリソースを利用可能
● JP1のようなサードパーティ製のようなリッチなジョブ
スケジューラ機能が無い
8
データベース
サービス 区分・概要 メリット デメリット
RDS RDB ● サーバ構築、管理が不要
● 様々なRDBMSから選択が可能
● Auroraに比べてフェイルオーバーに時間が掛かる
Aurora MySQL、
PostgreSQL互換
● パフォーマンス、可用性、信頼性に優れる
● MySQL、PostgreSQLと互換性がある
● コストが若干高い
● MySQL、PostgreSQLしか対応していない
Aurora
Serverless
Auroraの
サーバレス版
● インスタンス管理が不要で自動的にスケーリング
する
● 常時起動でも通常のAuroraに比べて料金が安い
● DataAPIを使う事でLambdaとの相性問題も改善さ
れる
● キャパシティが0の状態でアクセスすると30秒〜1分程
度の待ちが発生する(コールドスタート)
DynamoDB NoSQL ● サーバ構築、管理が不要
● スケーリングが容易
● Lambdaとの相性が良い
● RDBからの移行は設計からの見直しが必要
● 複雑なクエリが使えないので業務要件に合わせた採用検
討が必要
DocumentDB MongoDB互換 ● サーバ構築、管理が不要
● スケーリングが容易
● Lambdaとの相性が良い
● MongoDBと互換がある
● RDBからの移行は設計からの見直しが必要
● DynamoDBに比べる柔軟なクエリが使えるが、業務要件
に合わせた採用検討が必要
9
データベース
サービス 区分・概要 メリット デメリット
RedShift DWH
(データウェアハウス)
● 大量データの分析、集計を高速に行える
● S3上のデータを集計する事も可能
(RedShift Spectrum)
● RDBと比べ
● SQLの並列実行に弱い
● 頻繁に更新するデータには向かない
ElastiCache インメモリ
キャッシング
● サーバ構築、管理が不要
● 超高速アクセス
● 頻繁に更新されるセッション情報などに有用
(DynamoDBだと都度課金が発生する為)
● データの永続化ができない為、他のサービスとの併用な
ど検討が必要
10
ストレージ
サービス 区分・概要 メリット デメリット
S3 オブジェクト
ストレージ
● 99.999999999%の耐久性
● データ容量の制限なく保存が可能
● 静的Webホスティングが可能
● 非常に安価
● サーバサイド処理を含むサイト構築は不可
EBS EC2用ブロック
ストレージ
● 4つのボリュームタイプから用途に合わせて選択が
可能
● ボリュームサイズの増加が容易なので、最初から
最大サイズを確保する必要がない
● インスタンス間の共有ができない
● EBS内でデータを永続化すると、単一障害点となってし
まう
EFS ファイル
ストレージ
● EC2、ECS、Fargate間で共有が可能
● 自動で伸縮する為、容量を決める必要が無い
● EBSに比べてコストが高い
S3 Glacier アーカイブ用
オブジェクト
ストレージ
● アーカイブや長期バックアップを目的としている
為、S3より更に安価
● データ取得に数分〜数時間を要するので常時アクセスす
る用途では使用できない
● 3ヶ月未満のデータを削除すると早期削除料金が発生す
る
11
セキュリティ
サービス 区分・概要 メリット デメリット
IAM AWSの
アクセス管理
● AWSの各リソース(サービス)に対するアクセス管
理を行う事が可能
● ユーザー単位で細かい権限管理が可能
● アクセスエラーが発生した時に原因の究明が難しい(慣
れが必要)
Cognito アプリの
アクセス管理
● アプリのサインアップ、サインインを簡単に実現
できる
● Google、Facebook等のIDプロバイダと連携が可
能
● Oauth2.0、OpenIDConnect等のアクセス管理を
サポートしている
● バックエンドリソースのアクセス管理が可能
● (あえて書くなら)Cognitoに関する専門知識の習得が
必要
WAF Webアプリケー
ションファイア
ウォール
● SQLインジェクション、クロスサイトスクリプ
ティングなど一般的な攻撃をブロック可能
● 特定のトラックパターンを除外可能
● 事前設定済みのマネージドルールを利用可能
● マネージドルールはブラックボックス化されている為、
誤認識された時に対処が難しい。
ACM SSL証明書の
発行・管理
● ELB、CloudFrontで使用できるSSL証明書を無料
で発行できる
● SSL証明書が自動更新される
● 外部発行のSSL証明書を可能
● EC2では利用できない。(前段のELBで利用する事でセ
キュリティは担保可能)
12
開発者ツール・DevOps
サービス 区分・概要 メリット デメリット
CloudFormation コードによる
AWSリソース
の構築・管理
● コード(JSON/YAML)でAWSリソースを自動構築、
管理する事ができる
● コードをインフラの設計書とみなす事ができる
● 環境の複製が簡単に短時間で行える
● CloudFormation独自の記述方法にラーニングコストが
掛かる
CloudWatch リソース、ア
プリのモニタ
リング
● サーバ、コンテナのログをCloudWatchに出力可
能。ローカル保存しない事で、サーバ、コンテナ
のスケーリングが容易になる。(ログの消失を防
ぐ)
● ルールを使って各種処理の定期実行が可能
● 各リソースのメトリクスをグラフィカルに確認可
能
● アラームを設定し、メトリクスのしきい値を超え
た時にアクションを起こす事ができる(Lambdaを
使ってSlackに通知する等)
● 短時間に大量のログを出力(APIをCall)すると、スロッ
トリングが発生し、ログの抜けが発生する
● 大量のログを出力すると意外に料金が高い。
13
開発者ツール・DevOps
サービス 区分・概要 メリット デメリット
CodeCommit プライベート
Gitリポジトリ
● サーバ構築、管理が不要
● AWSならではのセキュリティ、高可用性を持つGit
リポジトリが使用できる
● ソースコード管理までAWSに依存してしまう。Lambda
のようにAWS有りきのプロジェクトであれば良いか。
CodePipeline 継続的デリバリー ● サーバ構築、管理が不要
● Gitリポジトリの更新をトリガーとして、ビルド、
テスト、デプロイまで自動化する事が可能
● 手動の承認を入れる事が可能なので、誤って本番
環境にリリースする事を防げる
● CodeBuild、CodeDeploy等、他のサービスと合わせて
知識が必要
CloudBuild ビルド、テストの
自動化
● サーバ構築、管理が不要
● ビルド、テストを自動で行う事が可能
● 並列ビルドが可能(自動スケール)
● CodeBuild、CodeDeploy等、他のサービスと合わせて
知識が必要
CodeDeploy 自動デプロイ ● サーバ構築、管理が不要
● EC2、Fargate、Lambda、オンプレミスサーバへ
アプリを自動デプロイ可能
● Blue/Greenデプロイが選択可能
● CodeBuild、CodeDeploy等、他のサービスと合わせて
知識が必要
14
開発者ツール・DevOps
サービス 区分・概要 メリット デメリット
Cloud9 ブラウザで
使用できるIDE
● サーバ構築、管理が不要
● コードエディタ、デバッガー、ターミナルをブラ
ウザ上で使用できる
● コードエディタを共有しペアプログラミングやリ
アルタイムレビューが可能
● Lambda関数のローカルテスト、デバッグが可能
● ローカル端末の性能に影響を受けない開発が可能
● 利用中はEC2の利用料金が掛かる
15
その他
サービス 区分・概要 メリット デメリット
SNS pub/sub
メッセージング
● サーバ構築、管理が不要
● HTTP、Email、SQS、Lambdaと簡単に連携が可能
● モバイル端末へのプッシュ通知が行える
● SQSとの連携で疎結合かつ、並列処理が簡単に行
える
● (あえて書くなら)クラウドネイティブな設計思想が必
要
SQS メッセージキュー ● サーバ構築、管理が不要
● 複雑な処理を分割しやすい(疎結合・マイクロ
サービス化)
● 大量データ処理のスケーリングが容易
● 標準キューでは順序保証が無く、複数回同じメッセージ
が配信される事がある。(要件に合わせてFIFOキュー
を検討すれば良い)
Kinesis データストリーム ● 複数のコンシューマ(読み込む側の処理)
● 大量のログ、イベントデータの収集、リアルタイ
ム解析等に向いている
● SQSと比べて読み書きの実装がやや煩雑
● スケーリングを自前で行う必要がある(ライブラリは公
開されている)
SES メールサービス ● サーバ構築、管理が不要
● SMTPインタフェースを使う事で既存のメール送信
ロジックを流用可能
● バウンス(配信障害)を放置するとSESの利用停止措置を
取られる事がある(適切な処理は必要)
● 送信済みメールを一覧表示するような機能が無い為、必
要であれば自前でアプリを構築する必要がある
16
その他
サービス 区分・概要 メリット デメリット
AppSync GraphQL ● サーバ構築、管理が不要
● アプリのオフライン対策を自前で行う必要がない
(オフライン時に発生した更新のみ自動同期す
る)
● DynamoDB、ElasticSearch、Lambda、外部
WebAPIといった複数データソースからのデータ取
得が可能
● GraphQL及びAppSyncの知識が必要
17
2. サービス構成例
18
オンプレからの移行が容易な構成 ※サーバレスではない
Public Subnet - A
VPC
Private Subnet - A
EC2
ALB
RDS(Master)
Client
✓ オンプレミスで稼働中のレガシーシステムの移行が容易
✓ 冗長化する事で可用性を高める(単一障害点を無くす)
✓ EC2は負荷に応じてオートスケーリングする
Public Subnet - C
EC2
Private Subnet - C
RDS(Slave)
Auto Scaling group
EC2をオートスケーリングに対応させるには
● EC2にアプリ情報を永続化させない
● EC2上にログを保持しない
● EC2上にセッション情報等を持たない
EC2を使い捨てできる状態にする事が重要!
障害発生時は自動的に
Masterに昇格
19
コンテナによるマイクロサービス化 ※サーバレスではない
Public Subnet - A
VPC
Private Subnet - A
Fargate
ALB
RDS(Master)
Client
✓ Fargate(コンテナ)でマイクロサービス化
✓ Fargateは負荷に応じてオートスケーリング可能(設定が容易)
Fargate
Public Subnet - C Private Subnet - C
Fargate
RDS(Slave)
Fargate
ALB
障害発生時は自動的に
Masterに昇格
20
レガシー構成から段階的にサーバレス化
VPC
Client
✓ APIのエンドポイントをAPI Gatewayに集約する事で、バックエンドに
異なるアーキテクチャを採用可能。フロントはバックエンドの構成を意
識する必要が無い
API Gateway
EC2
Fargate
Lambda
RDS
DynamoDB
Fargate
レガシー
SQS Lambda
※サブネットの
表記は割愛
機能単位で
段階的に移行が可能
コンテナ化
サーバレス
21
画像アップロード時にサーバレスでサムネイル自動作成
Client S3 Lambda
✓ S3に画像がアップロードされると、S3のトリガーで
Lambdaが起動される。
✓ Lambdaで、アップロードされた画像のサムネイル画像
を作成し、S3に保存する。
22
オンプレミス資産との連携
VPCOn-premise
Private Subnet
EC2
Public Subnet - C
EC2 Internet
Gateway
VPN
GatewayRouter
VPN
Connection
Internet
Server
RDS
✓ オンプレミス資産とAWSをVPNで繋げる
✓ 外部(インターネット)との接続を別サブネットにする事で
セキュリティを担保
23
AppSyncによる完全サーバレス化
Client
DynamoDB
AppSync
Aurora
Serverless
S3Cloud
Front
Cognito
✓ AppSync(GraphQL)を使用する事で単純なCRUDはLambda無しで可能
✓ 複雑な処理はLambdaで対応
Lambda Document
DB
フロントエンド
ユーザー管理認証
24
3. AWSにおける開発・デプロイ
25
DevOps
✓ コードがGithubにプッシュされると、自動的にビルド、デプロイが
実行される。 ※上図にはテストを含んでいない。
CodePipeline
CodeBuild
CodeDeploy
S3
ECR
Source Code Github
Fargate
Source Artifact
Build
Register
Deploy
(Pull)
Blue/Green
Deploy
26
Cloud9を使ったリモート開発
Cloud9 EC2
Lambda
Build
Client
Client Cloud9 EC2
Client
Build
ペアプログラミング
ペアプログラミング
✓ クライアントからブラウザ経由でコードエディタ等のIDEが使用可能
✓ 共同編集、ペアプログラミングが可能
✓ Cloud9からLambdaのローカルテストやデプロイが可能
サーバレスを可能にするAWSサービスの概要

More Related Content

PPTX
Azure Active Directory 1枚資料 20151125版
PPTX
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
PPTX
GoAzure 2015 Azure AD for Developers
PPTX
リソーステンプレート入門
PDF
Infrastructure as code for azure
PDF
Azure ADとIdentity管理
PPTX
Microsoft Azure のセキュリティ
PDF
ハイブリッド時代のID基盤構成の基礎
Azure Active Directory 1枚資料 20151125版
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
GoAzure 2015 Azure AD for Developers
リソーステンプレート入門
Infrastructure as code for azure
Azure ADとIdentity管理
Microsoft Azure のセキュリティ
ハイブリッド時代のID基盤構成の基礎

What's hot (20)

PPTX
Scim and or graph
PDF
プロトコルから見るID連携
PPTX
アイデンティティ管理の基礎~Fim adfsアーキテクチャ
PDF
Share point における id管理と認証・認可
PDF
Azure AD x LINE x Auth0
PDF
クラウドにおける Windows Azure Active Directory の役割
PDF
AWS WAF を活用しよう
PDF
Office365のIdentity管理
PPTX
Aws security part1
PDF
jawsug_20210319_csc_ichikawa
PDF
VPN・証明書はもう不要? Azure ADによるデバイス認証 at Tech Summit 2018
PPTX
2014-08-30_aspnet-identity
PDF
IDaaS を正しく活用するための認証基盤設計
PDF
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
PPTX
Cloud で Active Directory を活用するには
PDF
ADFS クレームルール言語 Deep Dive
PDF
ID Managementワークショップ Azure AD SaaS 連携 Tips & Tricks_第2回全体ミーティング
PPTX
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
PDF
Windows Azure Active Directory for your cloud applications
PPTX
20111203
Scim and or graph
プロトコルから見るID連携
アイデンティティ管理の基礎~Fim adfsアーキテクチャ
Share point における id管理と認証・認可
Azure AD x LINE x Auth0
クラウドにおける Windows Azure Active Directory の役割
AWS WAF を活用しよう
Office365のIdentity管理
Aws security part1
jawsug_20210319_csc_ichikawa
VPN・証明書はもう不要? Azure ADによるデバイス認証 at Tech Summit 2018
2014-08-30_aspnet-identity
IDaaS を正しく活用するための認証基盤設計
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
Cloud で Active Directory を活用するには
ADFS クレームルール言語 Deep Dive
ID Managementワークショップ Azure AD SaaS 連携 Tips & Tricks_第2回全体ミーティング
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Windows Azure Active Directory for your cloud applications
20111203
Ad

Similar to サーバレスを可能にするAWSサービスの概要 (20)

PDF
AWS Introduction for Startups
PDF
20160429 JAWS-UG沖縄 Cloud on the BEACH 2016 AWS全サービス紹介
PDF
Aws seminar-tokyo dan-jp-final-publish
PDF
Aws dan jp-final-publish
PDF
Amazon Web Services(AWS)とcloudpack について
PDF
AWS Solution Architect Associate試験勉強メモ
PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
2011-04-21 クラウド勉強会
PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
PPTX
re:invent2018 総ざらえ
PDF
クラウドとAWSの説明
PDF
Aws meister-cloud formation-summit2012
PDF
20120303 jaws summit-meister-04_cloud_formation
PDF
OpenStackプロジェクトの全体像~詳細編~
PDF
cloudpack導入資料(2010/12/24版)
PDF
Serverless Application Security on AWS
PDF
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
PDF
AWSについて @ JAWS-UG 沖縄 CMS祭り!
PDF
クラウド開発に役立つ OSS あれこれ
PDF
Amazon Web Servicesで未来へススメ!
AWS Introduction for Startups
20160429 JAWS-UG沖縄 Cloud on the BEACH 2016 AWS全サービス紹介
Aws seminar-tokyo dan-jp-final-publish
Aws dan jp-final-publish
Amazon Web Services(AWS)とcloudpack について
AWS Solution Architect Associate試験勉強メモ
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
2011-04-21 クラウド勉強会
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
re:invent2018 総ざらえ
クラウドとAWSの説明
Aws meister-cloud formation-summit2012
20120303 jaws summit-meister-04_cloud_formation
OpenStackプロジェクトの全体像~詳細編~
cloudpack導入資料(2010/12/24版)
Serverless Application Security on AWS
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
AWSについて @ JAWS-UG 沖縄 CMS祭り!
クラウド開発に役立つ OSS あれこれ
Amazon Web Servicesで未来へススメ!
Ad

More from Fixel Inc. (7)

PDF
元ITコンサルタントの目から見た「ITにおける今までのデザインとこれからのデザイン」
PDF
業務システムにおけるインタラクションとアニメーション
PDF
新サービス活用おけるUXの活用事例
PDF
HT Itoi_sama UX
PDF
ITにおけるデザイン活用の課題と対応策ーデザインシステムでできること
PDF
明日から使える業務向けデザインシステムのご紹介
PDF
AWSを利用したアプリ開発
元ITコンサルタントの目から見た「ITにおける今までのデザインとこれからのデザイン」
業務システムにおけるインタラクションとアニメーション
新サービス活用おけるUXの活用事例
HT Itoi_sama UX
ITにおけるデザイン活用の課題と対応策ーデザインシステムでできること
明日から使える業務向けデザインシステムのご紹介
AWSを利用したアプリ開発

サーバレスを可能にするAWSサービスの概要

  • 2. 2 当ドキュメントのスコープ ✓ AWSのサービスから、Webアプリケーションの構築に使えるサービスの紹介 ✓ サービスをシステムアーキテクチャーの要素別に区分して機能の簡単な紹介と共にメ リットとデメリットを提示し、比較できるようにする ※ただし、IoT、AIに関するAWSサービスは対象外(今後別文書として提示) ✓ 実際のWebサービスを作るために、AWSのサービスを組み合わせたアーキテクチャー例 を提示 ✓ AWSのサービスから、Webアプリケーションの構築に 使えるサービスの紹介 ✓ サービスをシステムアーキテクチャーの要素別に区分して 機能の簡単な紹介と共にメリットとデメリットを提示し、 比較できるようにする ※ただし、IoT、AIに関するAWSサービスは対象外(今後別文書として提示) ✓ 実際のWebサービスを作るために、AWSのサービスを組み 合わせたアーキテクチャー例を提示
  • 3. 目次 1. AWSサービス紹介 ● ネットワーキング ● コンピューティング ● データベース ● ストレージ ● アプリケーション統合 ● セキュリティ ● 開発者ツール・DevOps ● その他 2. サービス構成例 3. AWSにおける開発・デプロイ
  • 5. 5 ネットワーキング サービス 区分・概要 メリット デメリット VPC 仮想プライベート クラウド ● 仮想ネットワークを簡単に構築可能 ● 細かいセキュリティ設定が可能 ● サブネット、ルートテーブルなど最低限のネットワーク の知識が必要 VPN 仮想プライベート ネットワーク ● オンプレミスネットワークとVPC間でセキュアな 接続が可能 ● 専用線接続サービス(DirectConnect)も用意され ている ● オンプレを外部ネットワークと接続する事になるのでセ キュリティ設定を密に行う必要がある Route 53 DNS ● DNSサーバ構築、管理が不要 ● 可用性、拡張性に優れている ● AWSの他サービスとの連携が容易 ● 利用料金が掛かる(ただし非常に安価) CloudFront CDN(コンテンツ デリバリーネット ワーク) ● 世界中へ高速にコンテンツを配信可能 ● エッジロケーションにより負荷が分散される ● キャッシュにより、オリジンサーバへの負荷を低 減する ● CloudFrontとは別にS3やEC2等、コンテンツを格納す るサーバ・サービスが必要
  • 6. 6 ネットワーキング サービス 区分・概要 メリット デメリット Elastic Load Balancing ロードバランサー ● アプリのトラフィックを複数のターゲット(EC2、 ECS、Lambda等)に自動的に分散可能 ● ELBをSSL終端とする事でサーバ(EC2等)のSSL対 応が不要となる ● Network Load Balancerを使用すれば固定IPでの 運用が可能 ● (あえて書くなら)ELBの利用料金が掛かる API Gateway サーバレスで APIを公開 ● RESTfulAPI、WebSocketAPIをサーバレスで公開 可能 ● Lambdaと組み合わせて完全サーバレスのAPIを公 開できる ● スロットリング設定によりバックエンド側の負荷 を制御可能 ● データ量等の制約を意識する必要がある ● Lambdaと組み合わせる場合、Lambda側の制限と合わ せて設計する必要がある
  • 7. 7 コンピューティング サービス 区分・概要 メリット デメリット EC2 仮想サーバ ● オンプレミスからの移行が容易 ● 既存資産を活かし易い ● スケーリングが容易 ● サーバの管理を自前で行う必要がある Lambda サーバレスで コードを実行 ● サーバ構築、管理が不要 ● AWSの様々なサービスから呼び出せる ● APIGatewayやAppSyncと連携しサーバレスな WebAPIを提供可能 ● ステートレスなので、コネクションプールを使用できず RDS(RDB)との相性が悪い。コネクションの枯渇が発生 しやすい。→ Aurora ServerlessであればOK。 ● 既存資産を活かしにくい ECS コンテナ ● 1サーバで複数のコンテナを起動できるのでマイク ロサービスの提供が容易 ● コンテナを動かす為のサーバ(EC2)が必要 ● Docker等のコンテナを構築する知識が必要 Fargate コンテナ ● コンテナを動かすサーバの管理が不要 ● マイクロサービスの提供が容易 ● スケーリングが容易 ● Docker等のコンテナを構築する知識が必要 ● EC2の同一スペックに比べてコストが若干割高。ただし FargateはAWSの重要サービスである為、値下げされる 事が多い。 AWS Batch バッチ処理 ● サーバの管理が不要(自動起動、停止) ● 必要な時に必要なリソースを利用可能 ● JP1のようなサードパーティ製のようなリッチなジョブ スケジューラ機能が無い
  • 8. 8 データベース サービス 区分・概要 メリット デメリット RDS RDB ● サーバ構築、管理が不要 ● 様々なRDBMSから選択が可能 ● Auroraに比べてフェイルオーバーに時間が掛かる Aurora MySQL、 PostgreSQL互換 ● パフォーマンス、可用性、信頼性に優れる ● MySQL、PostgreSQLと互換性がある ● コストが若干高い ● MySQL、PostgreSQLしか対応していない Aurora Serverless Auroraの サーバレス版 ● インスタンス管理が不要で自動的にスケーリング する ● 常時起動でも通常のAuroraに比べて料金が安い ● DataAPIを使う事でLambdaとの相性問題も改善さ れる ● キャパシティが0の状態でアクセスすると30秒〜1分程 度の待ちが発生する(コールドスタート) DynamoDB NoSQL ● サーバ構築、管理が不要 ● スケーリングが容易 ● Lambdaとの相性が良い ● RDBからの移行は設計からの見直しが必要 ● 複雑なクエリが使えないので業務要件に合わせた採用検 討が必要 DocumentDB MongoDB互換 ● サーバ構築、管理が不要 ● スケーリングが容易 ● Lambdaとの相性が良い ● MongoDBと互換がある ● RDBからの移行は設計からの見直しが必要 ● DynamoDBに比べる柔軟なクエリが使えるが、業務要件 に合わせた採用検討が必要
  • 9. 9 データベース サービス 区分・概要 メリット デメリット RedShift DWH (データウェアハウス) ● 大量データの分析、集計を高速に行える ● S3上のデータを集計する事も可能 (RedShift Spectrum) ● RDBと比べ ● SQLの並列実行に弱い ● 頻繁に更新するデータには向かない ElastiCache インメモリ キャッシング ● サーバ構築、管理が不要 ● 超高速アクセス ● 頻繁に更新されるセッション情報などに有用 (DynamoDBだと都度課金が発生する為) ● データの永続化ができない為、他のサービスとの併用な ど検討が必要
  • 10. 10 ストレージ サービス 区分・概要 メリット デメリット S3 オブジェクト ストレージ ● 99.999999999%の耐久性 ● データ容量の制限なく保存が可能 ● 静的Webホスティングが可能 ● 非常に安価 ● サーバサイド処理を含むサイト構築は不可 EBS EC2用ブロック ストレージ ● 4つのボリュームタイプから用途に合わせて選択が 可能 ● ボリュームサイズの増加が容易なので、最初から 最大サイズを確保する必要がない ● インスタンス間の共有ができない ● EBS内でデータを永続化すると、単一障害点となってし まう EFS ファイル ストレージ ● EC2、ECS、Fargate間で共有が可能 ● 自動で伸縮する為、容量を決める必要が無い ● EBSに比べてコストが高い S3 Glacier アーカイブ用 オブジェクト ストレージ ● アーカイブや長期バックアップを目的としている 為、S3より更に安価 ● データ取得に数分〜数時間を要するので常時アクセスす る用途では使用できない ● 3ヶ月未満のデータを削除すると早期削除料金が発生す る
  • 11. 11 セキュリティ サービス 区分・概要 メリット デメリット IAM AWSの アクセス管理 ● AWSの各リソース(サービス)に対するアクセス管 理を行う事が可能 ● ユーザー単位で細かい権限管理が可能 ● アクセスエラーが発生した時に原因の究明が難しい(慣 れが必要) Cognito アプリの アクセス管理 ● アプリのサインアップ、サインインを簡単に実現 できる ● Google、Facebook等のIDプロバイダと連携が可 能 ● Oauth2.0、OpenIDConnect等のアクセス管理を サポートしている ● バックエンドリソースのアクセス管理が可能 ● (あえて書くなら)Cognitoに関する専門知識の習得が 必要 WAF Webアプリケー ションファイア ウォール ● SQLインジェクション、クロスサイトスクリプ ティングなど一般的な攻撃をブロック可能 ● 特定のトラックパターンを除外可能 ● 事前設定済みのマネージドルールを利用可能 ● マネージドルールはブラックボックス化されている為、 誤認識された時に対処が難しい。 ACM SSL証明書の 発行・管理 ● ELB、CloudFrontで使用できるSSL証明書を無料 で発行できる ● SSL証明書が自動更新される ● 外部発行のSSL証明書を可能 ● EC2では利用できない。(前段のELBで利用する事でセ キュリティは担保可能)
  • 12. 12 開発者ツール・DevOps サービス 区分・概要 メリット デメリット CloudFormation コードによる AWSリソース の構築・管理 ● コード(JSON/YAML)でAWSリソースを自動構築、 管理する事ができる ● コードをインフラの設計書とみなす事ができる ● 環境の複製が簡単に短時間で行える ● CloudFormation独自の記述方法にラーニングコストが 掛かる CloudWatch リソース、ア プリのモニタ リング ● サーバ、コンテナのログをCloudWatchに出力可 能。ローカル保存しない事で、サーバ、コンテナ のスケーリングが容易になる。(ログの消失を防 ぐ) ● ルールを使って各種処理の定期実行が可能 ● 各リソースのメトリクスをグラフィカルに確認可 能 ● アラームを設定し、メトリクスのしきい値を超え た時にアクションを起こす事ができる(Lambdaを 使ってSlackに通知する等) ● 短時間に大量のログを出力(APIをCall)すると、スロッ トリングが発生し、ログの抜けが発生する ● 大量のログを出力すると意外に料金が高い。
  • 13. 13 開発者ツール・DevOps サービス 区分・概要 メリット デメリット CodeCommit プライベート Gitリポジトリ ● サーバ構築、管理が不要 ● AWSならではのセキュリティ、高可用性を持つGit リポジトリが使用できる ● ソースコード管理までAWSに依存してしまう。Lambda のようにAWS有りきのプロジェクトであれば良いか。 CodePipeline 継続的デリバリー ● サーバ構築、管理が不要 ● Gitリポジトリの更新をトリガーとして、ビルド、 テスト、デプロイまで自動化する事が可能 ● 手動の承認を入れる事が可能なので、誤って本番 環境にリリースする事を防げる ● CodeBuild、CodeDeploy等、他のサービスと合わせて 知識が必要 CloudBuild ビルド、テストの 自動化 ● サーバ構築、管理が不要 ● ビルド、テストを自動で行う事が可能 ● 並列ビルドが可能(自動スケール) ● CodeBuild、CodeDeploy等、他のサービスと合わせて 知識が必要 CodeDeploy 自動デプロイ ● サーバ構築、管理が不要 ● EC2、Fargate、Lambda、オンプレミスサーバへ アプリを自動デプロイ可能 ● Blue/Greenデプロイが選択可能 ● CodeBuild、CodeDeploy等、他のサービスと合わせて 知識が必要
  • 14. 14 開発者ツール・DevOps サービス 区分・概要 メリット デメリット Cloud9 ブラウザで 使用できるIDE ● サーバ構築、管理が不要 ● コードエディタ、デバッガー、ターミナルをブラ ウザ上で使用できる ● コードエディタを共有しペアプログラミングやリ アルタイムレビューが可能 ● Lambda関数のローカルテスト、デバッグが可能 ● ローカル端末の性能に影響を受けない開発が可能 ● 利用中はEC2の利用料金が掛かる
  • 15. 15 その他 サービス 区分・概要 メリット デメリット SNS pub/sub メッセージング ● サーバ構築、管理が不要 ● HTTP、Email、SQS、Lambdaと簡単に連携が可能 ● モバイル端末へのプッシュ通知が行える ● SQSとの連携で疎結合かつ、並列処理が簡単に行 える ● (あえて書くなら)クラウドネイティブな設計思想が必 要 SQS メッセージキュー ● サーバ構築、管理が不要 ● 複雑な処理を分割しやすい(疎結合・マイクロ サービス化) ● 大量データ処理のスケーリングが容易 ● 標準キューでは順序保証が無く、複数回同じメッセージ が配信される事がある。(要件に合わせてFIFOキュー を検討すれば良い) Kinesis データストリーム ● 複数のコンシューマ(読み込む側の処理) ● 大量のログ、イベントデータの収集、リアルタイ ム解析等に向いている ● SQSと比べて読み書きの実装がやや煩雑 ● スケーリングを自前で行う必要がある(ライブラリは公 開されている) SES メールサービス ● サーバ構築、管理が不要 ● SMTPインタフェースを使う事で既存のメール送信 ロジックを流用可能 ● バウンス(配信障害)を放置するとSESの利用停止措置を 取られる事がある(適切な処理は必要) ● 送信済みメールを一覧表示するような機能が無い為、必 要であれば自前でアプリを構築する必要がある
  • 16. 16 その他 サービス 区分・概要 メリット デメリット AppSync GraphQL ● サーバ構築、管理が不要 ● アプリのオフライン対策を自前で行う必要がない (オフライン時に発生した更新のみ自動同期す る) ● DynamoDB、ElasticSearch、Lambda、外部 WebAPIといった複数データソースからのデータ取 得が可能 ● GraphQL及びAppSyncの知識が必要
  • 18. 18 オンプレからの移行が容易な構成 ※サーバレスではない Public Subnet - A VPC Private Subnet - A EC2 ALB RDS(Master) Client ✓ オンプレミスで稼働中のレガシーシステムの移行が容易 ✓ 冗長化する事で可用性を高める(単一障害点を無くす) ✓ EC2は負荷に応じてオートスケーリングする Public Subnet - C EC2 Private Subnet - C RDS(Slave) Auto Scaling group EC2をオートスケーリングに対応させるには ● EC2にアプリ情報を永続化させない ● EC2上にログを保持しない ● EC2上にセッション情報等を持たない EC2を使い捨てできる状態にする事が重要! 障害発生時は自動的に Masterに昇格
  • 19. 19 コンテナによるマイクロサービス化 ※サーバレスではない Public Subnet - A VPC Private Subnet - A Fargate ALB RDS(Master) Client ✓ Fargate(コンテナ)でマイクロサービス化 ✓ Fargateは負荷に応じてオートスケーリング可能(設定が容易) Fargate Public Subnet - C Private Subnet - C Fargate RDS(Slave) Fargate ALB 障害発生時は自動的に Masterに昇格
  • 21. 21 画像アップロード時にサーバレスでサムネイル自動作成 Client S3 Lambda ✓ S3に画像がアップロードされると、S3のトリガーで Lambdaが起動される。 ✓ Lambdaで、アップロードされた画像のサムネイル画像 を作成し、S3に保存する。
  • 22. 22 オンプレミス資産との連携 VPCOn-premise Private Subnet EC2 Public Subnet - C EC2 Internet Gateway VPN GatewayRouter VPN Connection Internet Server RDS ✓ オンプレミス資産とAWSをVPNで繋げる ✓ 外部(インターネット)との接続を別サブネットにする事で セキュリティを担保
  • 26. 26 Cloud9を使ったリモート開発 Cloud9 EC2 Lambda Build Client Client Cloud9 EC2 Client Build ペアプログラミング ペアプログラミング ✓ クライアントからブラウザ経由でコードエディタ等のIDEが使用可能 ✓ 共同編集、ペアプログラミングが可能 ✓ Cloud9からLambdaのローカルテストやデプロイが可能