SlideShare a Scribd company logo
AWSを使った
サーバーレスアプリケーションの構築
株式会社UNITE
セミナー概要
1. 講師、会社紹介
2. ゴール
3. アジェンダ
講師、会社紹介
• 名前
– 堀苑 芳弘
• 所属
– 株式会社UNITE
• インサイドエンジニア
• 好きなAWSサービス
– DynamoDB
– S3
– API Gateway
講師、会社紹介
• 会社名
– 株式会社UNITE
• 設立
– 2015年3月2日
• 開発事例
– Webサイト構築・運用
– Webクローラ開発
– オンプレからクラウドへの移行支援
– BI導入・分析用ダッシュボード開発
– VDI(仮想デスクトップ)構築
..etc
本セミナーのゴール
下記構成のサーバレスアプリケーションを構
築できるようになる
本セミナーのゴール
自社社員にフィードバックできる知識と
技術を身につけましょう!
アジェンダ
1. Amazon Web Service概要
2. サーバレスコンピューティング概要
3. AWSハンズオン
4. 実務におけるサーバレスアプリケーション
アジェンダ
1. Amazon Web Service概要
2. サーバレスコンピューティング概要
3. AWSハンズオン
4. 実務におけるサーバレスアプリケーション
1.Amazon Web Service概要
• Amazon.comの子会社であるAmazon Web
Servicesによって提供されているクラウ
ドコンピューティングサービス。
Amazon Web Serviceとは
1.Amazon Web Service概要
Amazon Web Serviceとは
• 世界規模のグローバルインフラストラクチャ
1.Amazon Web Service概要
Amazon Web Serviceとは
1.Amazon Web Service概要
クラウドサービスとは
• オンプレミス
1.Amazon Web Service概要
クラウドサービスとは
• クラウド
1.Amazon Web Service概要
クラウドサービスとは
SaaS
PaaS
IaaS
1.Amazon Web Service概要
クラウドサービスとは
• インターネット経由でアプリケーションを提供する
SaaS
• インターネット経由で開発環境を利用する
PaaS
• インターネット経由でサーバーやネットワークなどを
利用する
IaaS
1.Amazon Web Service概要
クラウドサービスとは
1.Amazon Web Service概要
クラウドサービスとは
https://www.srgresearch.com/articles/cloud-growth-rate-increases-
amazon-microsoft-google-all-gain-market-share
1.Amazon Web Service概要
• 導入コスト・運用コスト減
• グローバルにサービスを利用可能
• 最新のソリューション・セキュリ
ティ
クラウドのメリット
アジェンダ
1. Amazon Web Service概要
2. サーバレスコンピューティング概要
3. AWSハンズオン
4. 実務におけるサーバレスアプリケーション
2.サーバレスコンピューティング概要
サーバレスコンピューティングとは
• サーバの管理や運用を意識する必要がない
• サーバのソフトウェアおよびハードウェア管理の必要
性を排したデザインパターン
2.サーバレスコンピューティング概要
サーバレスコンピューティングとは
サーバやネットワーク機器を購入(リース契約など)して、自社の建
物やDCに設置運用
オンプレミス
クラウド
物理的な調達と運用をアウトソース
調達したリソース(仮想マシン)を自分たちで管理・運用
サーバレス
アプリケーションのみを自分たちで運用・管理
リソース自体の調達・運用をアウトソース
2.サーバレスコンピューティング概要
サーバレスコンピューティングのメリット
• サーバの管理が不要
• 柔軟性のあるスケーリング
• 高可用性の自動化
• 低コスト
2.サーバレスコンピューティング概要
導入事例
https://aws.amazon.com/jp/lambda/resources/#Customer_Case_Studies
アジェンダ
1. Amazon Web Service概要
2. サーバレスコンピューティング概要
3. AWSハンズオン
4. 実務におけるサーバレスアプリケーション
3. AWSハンズオン
• ハンズオンで使用するソース
https://github.com/h0r1z0n1994/serv
erless-handson-example
• 不明点など何かあれば、すぐにお声
掛けください
ハンズオンの前に
3. AWSハンズオン
S3を用いたWebサイトホスティング
今からココをつくろう!
3. AWSハンズオン
S3を用いたWebサイトホスティング
• Amazon Simple Storage
Service(S3)はストレージサービス
• ユーザはデータを安全に、どこから
でも、容量制限なく保存可能
• 静的なコンテンツを公開するWEB
サーバとしても使用できる
3. AWSハンズオン
S3を用いたWebサイトホスティング
• 容量無制限
• 1ファイル最大5TBまで
• 高い堅牢性
• 99.999999999%
• 安価なストレージ
3. AWSハンズオン
• 構成図
S3を用いたWebサイトホスティング
3. AWSハンズオン
• バケットを作成する
S3を用いたWebサイトホスティング
3. AWSハンズオン
• DNS準拠のバケット名を入力する
S3を用いたWebサイトホスティング
3. AWSハンズオン
• 作成したバケットを選択
S3を用いたWebサイトホスティング
3. AWSハンズオン
• “プロパティタブ”を選択
S3を用いたWebサイトホスティング
3. AWSハンズオン
• Static website
hostingを有効化
• “このバケットを使用
して…”を選択
• インデックスドキュメ
ントに”index.html”
と入力
• “保存”を選択
S3を用いたWebサイトホスティング
3. AWSハンズオン
• エンドポイントをクリックしてアクセスしてみます
• ブラウザの表示はindex.htmlがないので、上記のよ
うになります
S3を用いたWebサイトホスティング
3. AWSハンズオン
• ファイルをアップロードしてみましょう
– Chapter1/index.html, js/, css/, fonts/
S3を用いたWebサイトホスティング
3. AWSハンズオン
• もう一度エンドポイントにアクセスしてみます。
• これは正しい挙動です。
S3を用いたWebサイトホスティング
3. AWSハンズオン
• アクセス権限の設定をしましょう
S3を用いたWebサイトホスティング
3. AWSハンズオン
• バケットに対するパブリックアクセス権限が付与で
きると下記の表示となります。
• もう一度エンドポイントにアクセスしてみましょう
S3を用いたWebサイトホスティング
みれましたか?
3. AWSハンズオン
今からココをつくろう!
S3 & Lambdaでサムネイル画像を作成する
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• Lambdaとは、サーバレスコンピューティン
グのサービス。
– 実行基盤はAWSが管理
– サーバをユーザ側で用意せずにコードを実行できる
サービス
– コード実行時間に対しての課金でありコスト効率が非
常に高い
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• 構成図
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• フォルダを作成
– (bucket-name)/img/
– (bucket-name)/thumbnail/img/
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• Lambdaコンソールにアクセス
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• Lambda関数を作成
• “一から作成”を選択
• “名前”を入力
• “既存のロール”に
”lambda_basic_execute”を設定
※ lambda_basic_executeロールは事前に適切
な権限で作成済みです。
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• トリガーの追加
– S3を選択
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3トリガーを設定し、保存
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• 関数の編集
• Designerから自身の作成した関数を選択
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• 最初は下記のようにコードが記述されています
• 次のページからコードを編集していきます
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• FsとAWS-SDKとnode-imagemagickを読み込みます
• Async構文でかかれているため修正しましょう。
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3バケットに関する定義を記述します
• S3からオブジェクトを取得します
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• ImageMagickでリサイズ
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• リサイズ後にS3にオブジェクトをPUT
• 関数を保存します
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3のコンソールから
– (bucket-name)/imgを開く
• JPEGファイルをアップロードしてみましょう
3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3のコンソールから
– (bucket-name)/thumbnail/imgを開く
サムネイルが
作成されていますね!
3. AWSハンズオン
APIGatewayで画像投稿機能を作成する
今からココをつくろう!
3. AWSハンズオン
• API GatewayとはAPIの作成と管理が簡単に
できるサービス
– Lambdaで実行しているコードを
簡単にAPIから呼び出せる
– インフラの保守に煩わされない
– APIに対するリクエスト数とレスポンス
のデータに対してのみ課金
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• 構成図
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• 投稿ページをS3にホスティングしましょう
– contribution.html
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• (S3Endpoint)/contribution.htmlにアクセス
します
– 投稿用のページが表示されましたか?
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• 画像のプレビュー用のスクリプトを追加しましょう
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• S3にHTMLを再度アップロードするとプレビューが表
示されるようになってますね
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• このまま投稿ボタンを押してもS3には保存できませ
ん。
• APIGatewayで投稿用のAPIを作成してみましょう。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• マネジメントコンソールからAPI Gatewayを選択しま
す
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• “APIの作成”を選択します
• “API名”を入力し、”APIの作成”を選択します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• “アクション”から“リソースの作成”を選択しま
す
• “リソース名”に”messages”と入力します
• “API Gateway CORSを有効にする”にチェック
• “リソースの作成”を選択します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• “messages”にメソッドを追加します
• “POST”を選択し、チェックマークを選択します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• メソッドが追加できると下記の画面に移行します
• APIの詳細設定をする前に、APIGatewayから連携する
Lambda関数を作成しましょう
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• Lambda関数を作成します。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• S3を操作するためにAWS-SDKを読み込みます
• レスポンスはJSONで返却するために、responseに
headersを追記します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• フォームから送信される画像データはBase64でエン
コードされている想定
• POSTリクエストのBodyからエンコードされたデータ
を取得します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• S3にアップロードするために、パラメータを下記の
ように設定します
※Bucketは自身のバケット名を指定してください。
※Lambda関数実行時に割り振られるrequestIdを画像名
に設定しています。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• S3にオブジェクトをPUTします。
• Lambda関数を保存します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• API Gatewayのマネジメントコンソールを開きます
• 先程作成したPOSTメソッドとLambda関数を紐づけて
いきます。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• Lambdaプロキシ統合の使用にチェックを入れます。
• Lambda関数に先程作成したLambda関数名を入力し、
保存します。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• Lambda関数に権限を追加するモーダルがでるため、
”OK”を選択します。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• 下記のような画面が表示されればAPIの作成は完了で
す
• 次に、APIを実際に使用できるようにデプロイします
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• アクションからAPIのデプロイを選択します。
• デプロイするステージを設定し、”デプロイ”を選
択
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• APIのエンドポイントが表示されるため、書き留めて
おいてください
• 最後にHTML側にボタンクリック時にAPIを呼び出すコ
ードを追記します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• Fetchの第一引数には、(APIエンドポイントURL)/messages
を記述します。
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• S3にcontribution.htmlをアップロードし、S3エンド
ポイントにアクセスしてみましょう
• 投稿を試して、alertが表示されることを確認します
APIGatewayで画像投稿機能を作成する
3. AWSハンズオン
• S3のimgフォルダに画像がアップロードされています
• アップロード後にサムネイル作成のLambda関数が実
行されるため、thumbnailフォルダにも画像が作成さ
れます。
APIGatewayで画像投稿機能を作成する
投稿できましたか?
3. AWSハンズオン
DynamoDBを使ってコメント機能を作成する
今からココをつくろう!
3. AWSハンズオン
DymamoDBとはサーバレスアプリケーションとの
相性が良い非リレーショナルデータベース
• 完全マネージド型のNoSQLデータベースサービス
• 高可用性
• ストレージの容量制限がない
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• 構成図
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• 画像投稿ページにテキストボックスを追加し
ましょう
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• contribution.htmlに下記のコードを追記し
ます
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• 投稿ボタンクリック時にテキストボックスの
値を取得し、APIに渡せるようにします
• S3に編集後のcontribution.htmlをアップロ
ードし、表示を確認してください。
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• 続いて、コメントを保存するためのDynamoDB
のテーブルを作成します。
• マネジメントコンソールからDynamoDBを選択
します
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• “テーブルの作成”を選択
• “テーブル名”を入力
• “プライマリキー”は”requestId”で”文
字列”とします
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• “テーブル設定”の”デフォルト設定の使用
”のチェックを外します
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• Auto Scalingの”読み込みキャパシティー”
と”書き込みキャパシティ”のチェックを外
します。
※今回はRead Capacity,Write Capacityに5は
多すぎるため、1に設定をします。
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• プロビジョニングされたキャパシティを下記
の通り設定し、”作成”を選択
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• プロビジョニングされたキャパシティを下記
の通り設定し、”作成”を選択
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• Lambda関数にDynamoDBへの書き込み処理を追
加していきます。
• AWS-SDKからDynamoDBのDocumentClientを用
意します
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• DynamoDBへPUTするItemを準備します
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• DynamoDBへのリクエスト用パラメータを記述
• DynamoDBへのPUTを記述
• 関数を保存します
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• 投稿ページから投稿してみましょう!
DynamoDBを使ってコメント機能を作成する
3. AWSハンズオン
• DynamoDBのコンソールを確認すると書き込み
されていることが確認できます
DynamoDBを使ってコメント機能を作成する
投稿できましたか??
3. AWSハンズオン
画像表示機能を作成する
今からココをつくろう!
3. AWSハンズオン
• 構成図
画像表示機能を作成する
3. AWSハンズオン
• データを取得するAPIを作成します
• マネジメントコンソールからAPI Gatewayを
選択
画像表示機能を作成する
3. AWSハンズオン
• 自身の作成したAPIにGETメソッドを追加しま
す
• GETメソッドから連携するLambda関数を作成
します
画像表示機能を作成する
3. AWSハンズオン
• Lambda関数を作成します
画像表示機能を作成する
3. AWSハンズオン
• DynamoDBのDocumentClientを記述
• レスポンスはJSONで返却するために、
responseにheadersを追記します
画像表示機能を作成する
3. AWSハンズオン
• DynamoDBへのリクエストパラメータを追記
• DynamoDBのScan(全件取得)処理を追記
• Scan結果をレスポンスのBodyに埋め込みます
• 関数を保存します
画像表示機能を作成する
3. AWSハンズオン
• API Gatewayのマネジメントコンソールを開
きます
• 先程作成したGETメソッドとLambda関数を紐
づけていきます。
画像表示機能を作成する
3. AWSハンズオン
• API Gatewayのマネジメントコンソールを開
きます
• 先程作成したGETメソッドとLambda関数を紐
づけていきます。
画像表示機能を作成する
3. AWSハンズオン
• Lambda関数に先程作成したLambda関数名を入
力し、保存します。
画像表示機能を作成する
3. AWSハンズオン
• Lambda関数に権限を追加するモーダルがでる
ため、”OK”を選択します。
画像表示機能を作成する
3. AWSハンズオン
• 下記のような画面が表示されればAPIの作成
は完了です
• 次に、APIを実際に使用できるようにデプロ
イします
画像表示機能を作成する
3. AWSハンズオン
• 下記のような画面が表示されればAPIの作成
は完了です
• 次に、CORSの設定を入れます
画像表示機能を作成する
3. AWSハンズオン
• アクションからCORSの有効化を選択
画像表示機能を作成する
3. AWSハンズオン
• アクションからCORSの有効化を選択
• “CORSを有効にして既存のCORSヘッダーを置
換”を選択
• “はい、既存の値を置き換えます”を選択
画像表示機能を作成する
3. AWSハンズオン
• アクションからAPIのデプロイを選択します
• デプロイするステージを設定し、”デプロイ
”を選択
画像表示機能を作成する
3. AWSハンズオン
• APIのエンドポイントが表示されるため、書
き留めておいてください
• 最後にHTML側にindex.htmlを読み込み時に
APIを呼び出すコード、APIの結果からページ
のコンテンツを追加するコードを追記します
画像表示機能を作成する
3. AWSハンズオン
• Index.htmlに下記を追記します
画像表示機能を作成する
3. AWSハンズオン
• S3にindex.htmlをアップロードし、S3のエン
ドポイントにアクセスします
画像表示機能を作成する
表示されましたか?
余力のある人は検索と
削除機能を追加してみま
しょう
アジェンダ
1. Amazon Web Service概要
2. サーバレスコンピューティング概要
3. AWSハンズオン
4. 実務におけるサーバレスアプリケーション
4. 実務におけるサーバレスアプリケーション
代表的な構成例
https://www.slideshare.net/AmazonWebServices/serverless-architecture-and-best-practices
4. 実務におけるサーバレスアプリケーション
AWS Serverless Application Model(SAM)
https://www.slideshare.net/AmazonWebServices/serverless-architecture-and-best-practices
• サーバレスアプリケーションの管理フレームワーク
• CloudFormationテンプレートで管理
4. 実務におけるサーバレスアプリケーション
AWS Serverless Application Model(SAM)
質疑応答
本セミナーのアンケートをお願いします
受付でお配りしたアンケートに本セミナーの
満足度やご感想等をご記入ください。

More Related Content

PPTX
Rootlessコンテナ
PDF
[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
PPTX
OpenStackで始めるクラウド環境構築入門
PDF
プロセスとコンテキストスイッチ
PDF
Attestation Mechanisms for Trusted Execution Environments Demystified - Prese...
PDF
ゆるバグ
PDF
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
PPTX
プロトスフィア提案書
Rootlessコンテナ
[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
OpenStackで始めるクラウド環境構築入門
プロセスとコンテキストスイッチ
Attestation Mechanisms for Trusted Execution Environments Demystified - Prese...
ゆるバグ
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
プロトスフィア提案書

What's hot (20)

PDF
Open vSwitchソースコードの全体像
PDF
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
PDF
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
PPT
PDF
OpenStackで始めるクラウド環境構築入門
PPTX
開發人員不可不知的 Windows Container 容器技術預覽
PPTX
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
PDF
Plan 9のお話
PPTX
快速上手 Windows Containers 容器技術 (Docker Taipei)
PDF
20190222_インベントリ収集のオープンソースOpenAudITの機能紹介とIT資産管理で必要なこと
PPTX
DevOpsって何?
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
PDF
Issueの書き方と伝え方
PDF
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
PDF
Quarkus Technical Deep Dive - Japanese
PDF
ZFSでストレージ
PDF
第 1 回 Jetson ユーザー勉強会
PDF
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
PDF
私とOSSの25年
Open vSwitchソースコードの全体像
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
OpenStackで始めるクラウド環境構築入門
開發人員不可不知的 Windows Container 容器技術預覽
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
Plan 9のお話
快速上手 Windows Containers 容器技術 (Docker Taipei)
20190222_インベントリ収集のオープンソースOpenAudITの機能紹介とIT資産管理で必要なこと
DevOpsって何?
単なるキャッシュじゃないよ!?infinispanの紹介
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
Issueの書き方と伝え方
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
Quarkus Technical Deep Dive - Japanese
ZFSでストレージ
第 1 回 Jetson ユーザー勉強会
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
私とOSSの25年
Ad

Similar to サーバレスアプリケーション構築入門 (20)

PDF
浸透するサーバーレス 実際に見るユースケースと実装パターン
PDF
Serverless Application Security on AWS
PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
PDF
[20171116 三木会] AWSを利用したサーバーレス開発の実践 by アイレット株式会社 cloudpack事業部 高橋 直樹 氏
PPTX
AWSで始めるサーバレスな RESTful API システム
PDF
AWS Black Belt Online Seminar AWS Amplify
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
PDF
LambdaとMobileの美味しいかもしれない関係
PDF
Serverless services on_aws_dmm_meetup_20170801
PDF
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
PDF
AWS Introduction for Startups
PDF
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
PDF
AWS Black Belt Online Seminar 2017 AWS re:Invent 2017速報
PDF
20120319 aws meister-reloaded-s3
PDF
20120319 aws meister-reloaded-s3
PDF
クラウドを積極活用した サービスの開発のために
PDF
Going Serverless, Building Applications with No Servers
PDF
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
浸透するサーバーレス 実際に見るユースケースと実装パターン
Serverless Application Security on AWS
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
[20171116 三木会] AWSを利用したサーバーレス開発の実践 by アイレット株式会社 cloudpack事業部 高橋 直樹 氏
AWSで始めるサーバレスな RESTful API システム
AWS Black Belt Online Seminar AWS Amplify
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
LambdaとMobileの美味しいかもしれない関係
Serverless services on_aws_dmm_meetup_20170801
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Introduction for Startups
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
AWS Black Belt Online Seminar - Amazon Lightsail
AWS Black Belt Online Seminar 2017 AWS re:Invent 2017速報
20120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s3
クラウドを積極活用した サービスの開発のために
Going Serverless, Building Applications with No Servers
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
Ad

サーバレスアプリケーション構築入門

Editor's Notes

  • #2: こんにちは、みなさん。本日はお忙しいところ、お集まりいただきましてありがとうございます 本日のテーマは、サーバレスアプリケーションについてです。 サーバレスアーキテクチャという単語は近年バズワード化していますが、耳にしたことはありますか? 本日は、AWSを利用した簡単なウェブアプリケーションの開発を通じて、サーバレスアプリケーション の考え方を知っていただき、Webアプリケーションとして作成して行く際にどのような構成をとればよいのか? 実際のコードを交えながらハンズオン形式で解説していきます また、終盤ではサーバレスアプリケーションにおけるフレームワークなどについても触れていきたいと思います。 よろしくお願いします。
  • #3: はじめに、本日のセミナーの大枠を説明させていただきます。
  • #4: 堀苑芳弘と申します。芳しいに弘とかいてよしひろです。 出身は九州の鹿児島県です。 普段は受託案件のインフラの構築やアプリケーションの開発を行っております。 AWS のテクノロジーを使用して安全で堅牢なアプリケーションを構築およびデプロイするための知識を有しているAWS 認定ソリューションアーキテクト – アソシエイトです。
  • #5: 私の所属する会社も紹介させていただきます。 株式会社UNITEです。
  • #6: AWS上にある各種サービスを、 サーバレスアーキテクチャを用いて連携させ、簡単なWEBアプリケーションが開発できるようになることを目的とします
  • #8: AWS概要 Amazon Web Serviceとは クラウドとは クラウドのメリット サーバレスコンピューティング概要 サーバレスコンピューティングとは サーバレスコンピューティングのメリット 導入事例 S3を用いたWebサイトホスティング S3&Lambdaでサムネイル画像を作成する 画像投稿機能を作成する コメント機能を作成する 画像表示機能を作成する
  • #10: インターネット小売大手のAmazonが提供するクラウドコンピューティングがAWSです。 AWSはネットショッピングで有名なAmazonが、 自社の大量商品の在庫管理やデータ分析を行うため、 ITを駆使して構築したインフラやアプリケーションを一般ユーザーにも公開したのが始まりです。
  • #11: AWSは世界中の(18 個の)地理的リージョンと(1 つのローカルリージョンにある 55 個) とアベイラビリティーゾーン(DC) AWSのグローバルなバックボーンは、「リージョン」と呼ばれる地理的に離れた領域がそれぞれ接続されることで構成されています。 各「リージョン」ではAWSのサービスがそれぞれ独立して提供されています。 言い方を変えると「リージョン」はお互いに完全に分離されるよう設計されたAWSのネットワークとサービスの「集合」となります。 たとえば、日本には東京リージョンがあり、米国にはバージニア北部リージョン、オレゴンリージョンなどがあります。 また、政府の業務に関わる米国連邦政府、州、各地方自治体、契約業者にお使いいただけるGovCloud(米国)リージョンなんていうものもあります。 「リージョン」が完全に分離されていることによって、AWS全体としては最大限の耐障害性と安定性が実現されています。 AWSにおけるリージョンは2つ以上の「アベイラビリティーゾーン」から成り立っており、「アベイラビリティーゾーン」は1つ以上の独立したデータセンターで構成されています
  • #12: AWSはクラウドコンピューティングの概念の上に成り立っているサービスですので、まずはクラウドコンピューティングについて理解しておく必要があります。 言葉としてはメジャーになってきましたが、「クラウド」、そして対をなす「オンプレミス」についておさらいしていきたいと思います。
  • #13: オンプレミス オンプレミスサーバーとは、クラウド対して自社でサーバー、データセンターを保有します。 クラウドサービスの登場以前はこのオンプレミスが主流でした。
  • #14: クラウドサービス 皆様で例えるならば水道や、電気です。 利用の仕方や、日常生活に必要不可欠という意味で非常に似ています。 家の蛇口をひねると必要な量の水が出てきますが、 イメージはそれに近いです。 具体的には、インターネットを経由して、サーバーやデータベース、アプリケーションを 必要な時に必要な分だけ利用することが可能となっております。 料金体系も光熱費と同様、使った分だけ支払う従量課金制が取られております。
  • #15: システムはユーザーが利用するフロントから、それを裏で支えるバックエンドまで、階層になっています。 クラウドに関しても、どの範囲までを包含してくれているかでクラウドコンピューティングのタイプは分類されております。
  • #16: 下から IaaS (イアース) Infrastructure as a Serviceの略で、インフラだけを担ってくれるサービスです。 いわゆる「サーバを借りる」のイメージがこれです。 サーバー、ネットワークなどインフラ部分を提供してくれるので、 その上に必要なOSやミドルウェア、アプリケーションをインストールして利用します。  自由がききますので御社独自のシステムを動かしたいという場合、 ほとんどがこちらのタイプを選択することになります。 さくらレンタルサーバ、AWSの仮想マシンもこれに当たります。 PaaS (パース) Pratform as a Serviceの略で、サーバーなどのインフラ設備に加え、OSやミドルウェア(MySQL, Oracleなど)まで提供してくれます。 データベース環境やアプリケーション実行環境などを形成することができるため、スムーズにソフトウェア開発やアプリケーション開発を行うことができます。 これは主に開発を進めるユーザー向けです。 「アプリさえ乗せればすぐ使えるサーバ」というとわかりやすいでしょうか。 Google App EngineやHerokuがこれに当たります。 SaaS (サース) Software as a Serviceの略で、アプリケーションそのものが提供されます。 利用者は開発が一切必要なく、そのまま利用することができます。 Google AppsやSalesforceがこれに当たります。
  • #17: クラウドを提供する企業は数多ありますが、現状4社が世界の5割超のシェアを占めており、クラウド界のBig4と呼ばれております。
  • #18: その中でもAWSはダントツでトップを走っており、世界クラウド市場の3割のシェアを占めていると言われています。 なぜAWSのシェアが高いか? 先行者としてクラウド市場に参入していた(2006年〜)という事実はありますが、 より重要なことはMicrosoftやIBMがクラウド市場がそこまで成長するとは思っていなかったということが大きいようです。 AWSのCEOであるAndy Jassyは次のように話しております。 「当初、MSやIBMがクラウドについて言っていたことは、まず、誰もクラウドを使わない。 次に使う人がいても、それはスタートアップぐらいだし、しかも本番環境には使わない。もちろん、企業は使わない。 しかし、今彼らはそのクラウドで何かをやろうとしている。その動きはAWSから6,7年遅れている。」 この遅れの間に、AWSがノウハウを蓄積し、名実ともにトップとしての地位を固めたという背景があるといわれています。
  • #19: ・ハードウェアやソフトウェアの購入が必要ないため、初期のコストがかかりません。 ・オンプレミスのようにサーバー選定や、HDD容量の検討など煩わしいことはありません。 ・従来必要だった人的リソースをより有効利用することができます。 クラウドサーバーは世界中のデータセンターでネットワークを介して稼働しています。 常に最新世代ハードウェア・ソフトウェアへと定期的にアップグレードされています。そのため、質は常に高く保たれております。 クラウドを考えた時にセキュリティを懸念される方は多いですが、 昨今のトレンドとしては、むしろオンプレミスサーバーより、 クラウドサーバーの方が安全という意見もあります。 実際、オンプレミスサーバーを常に最新のセキュリティ状態を保つのは難しい。 ここまでである程度AWSとクラウドについてご理解いただけたのではないかと思います。
  • #20: 続いて、本日のテーマの主題であるサーバレスについてです。
  • #21: 開発者がサーバーのソフトウェアおよびハードウェア管理の必要性を排したソフトウェアのデザインパターンです。 また、サーバレスとはイベントドリブンなアーキテクチャです。 イベントドリブンとは? 通常のサーバでないアーキテクチャであれば、サーバは常に目を覚まして、イベントまっている状態にあると言えます。 サーバレスに関しては、イベントが発生した際にサーバを確保、起動して、処理を実行するようなアーキテクチャです。
  • #22: アプリケーションは通常、何らかのサーバーインフラの管理が伴います。 一般的には、アプリケーションには管理を要する物理的なサーバー、オペレーティングシステム、およびWebサーバーの構築プロセスが必須です。 IaaS(Infrastructure as a Service)型サービスでクラウドの仮想サーバーを使用すると、物理的なハードウェアについて気にしなくてもよくなりますが、 依然としてオペレーティングシステムやサーバーのソフトウェアの管理がいくぶんか必要です。 つまり、サーバの管理から完全に逃れることはできません。 IaaS型サービスで仮想サーバを使用しても、問題の発生する箇所がオンプレからクラウド上に移行しただけです。 そこで、サーバの管理もせず、アプリケーションのみを自分たちで運用・管理する考え方がでてきました。 それがサーバレスコンピューティングの概念です。
  • #23: 柔軟性のあるスケーリングとは ・実行時に自動的に必要なリソースが割り当てられるため、性能の見積もりも設定も不要 高可用性の自動化 ・可用性と耐障害性のための機能が組み込まれている ・サービスがデフォルトで提供するため、設計する必要がない ・実際に使用したリソース量に基づいて従量的に課金されるため無駄がない ・特にリクエストに波があるシステムでは大幅なコスト削減が期待できる
  • #29: データ容量に依存しない性能 (ユーザが、サーバ台数、媒体本数、RAID、RAIDコントローラを考える必要がない)
  • #31: オブジェクトの保存場所
  • #42: WEBで大きい画像は重たい だからサムネイルをつくっておいた方がいいよね? そこをやります
  • #127: CloudFront ・AWSが提供するCDN(Content Delivery Network)サービスです。 そのコンテンツをリクエストしたユーザーに低レイテンシーで配信する仕組み コンテンツをキャッシュしてユーザーへ高速に届ける キャッシュの活用によりアプリサーバーへのトラフィックを軽減できる(約7分の1に減少した事例あり) カスタムエラーページ(4xx,5xxの場合にsorryページ等)を定義できる Cognito ・ウェブアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理をサポート フルマネージドな数億ユーザまでスケールするセキュアなユーザー管理サービス ユーザー名・パスワード認証以外にも外部認証(Facebook/Twitter/SAML...etc)をサポート ユーザーの複数デバイス間でデータの同期をサポート
  • #128: サーバレスアプリケーションの管理フレームワーク CloudFormationテンプレートで管理
  • #129: テンプレート例
  • #130: テンプレート例