SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
サーバーレスWebアプリをつくろう
~AWSとくらべながら~
第20回 Tokyo Jazug Night
2019/7/18
平林 拓将(ひらりん)
すみません。代打の代打です。
自己紹介
Name
• 平林 拓将(ひらりん)
Work
• テクニカルトレーナー/アーキテクト
• 研修の講師などをしつつ社内開発をしています
Like
• C# & Microsoft Azure(Logic Apps/Functions/Cosmos DB)
• LINE関連API、VUI(スマートスピーカー)など
Social
• Twitter:@himarin269
• GitHub:himanago
• Blog:http://himanago.hatenablog.com/ 3
もともとの登壇予定…
ちょまどさん
⇒「Functions + スマートスピーカー(仮)」
かずきさん
⇒「サーバーレスで遊ぼう」
(知名度も実力も違いすぎる…何を話せば…)
4
たぶんこれがきっかけ
5
Qiitaに上げてたハンズオン資料
(本体はGitHub)
なので、今回はそのハンズオンの話をします
サーバーレスWebアプリケーションを作るハンズオン
• Functions+Blob Storage+Cosmos DB
• デモを交えつつ、各サービスの連携での注意点など
ハンズオンを作ったのは社内勉強会で講師をしたとき
• AWSでほぼ同じハンズオンを社内で別の講師がやったものを
Azureでトレースしてみたものがこれ
せっかくなのでAWSで使うサービスもご紹介
• AWSで同じものを作るとしたら…?という比較
• AWSはど素人なので違っていたらマサカリください
6
つくるもの
簡易TODOアプリ
• CRUDといえばこれ
• Vue.jsをつかってみたけど
あんまりVueっぽくない
• 認証機能等はなし
7
サーバーレスとは?
サーバーがないのではなく、サーバーを意識しなくていいもの
よく挙げられる特徴
8
サーバーの管理が不要 オートスケーリング
イベントドリブン
&
ステートレス
実行した分だけの課金
Azureにおける代表的なサーバーレス
Azure Functions
• イベント駆動型のコード実行環境(Function as a Service)
9
FaaS(Function as a Service)のメリット
10
関数
アプリ
ランタイム
ミドルウェア
OS
サーバー機
ネットワーク
ストレージ
関数
アプリ
ランタイム
ミドルウェア
OS
サーバー機
ネットワーク
ストレージ
関数
アプリ
ランタイム
ミドルウェア
OS
サーバー機
ネットワーク
ストレージ
アプリ
ランタイム
ミドルウェア
OS
サーバー機
ネットワーク
ストレージ
オンプレミス IaaS PaaS FaaS
自
分
で
管
理
自
分
で
管
理
自
分
で
管
理
管
理
不
要
管
理
不
要
管
理
不
要
関数
こ
れ
だ
け
!
Functions=サーバーレスというわけではない
App Serviceプランがある
• 常時稼働するサーバー上で関数を動かす
Durable Functionsがある
• 関数コードでステートフルな処理を実現
• キューやストレージなどを意識せずそれらを使ったステート管理が可能
• サーバーレスはステートレスであるべきという主張
• シンプルなイベントドリブンな関数ではなくなる
• 意識しない部分が増えるという意味では「さらなるサーバーレス」と言える気も
11
アーキテクチャ
12
サーバーレス!
Webサーバー不要
AWSの場合
13
https://github.com/aws-samples/lambda-refarch-webapp
認証の仕組みをつける場合(Azure)
Azure AD B2Cを使う
14参考:Azure API Management を使って Azure Functions に認証つけてみた
https://blog.okazuki.jp/entry/2019/07/14/202125
認証の仕組みをつける場合(AWS)
Amazon Cognitoを使う
• 認証まで含めたチュートリアルが公開されている
15
https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/
Azure vs AWS
Azure 役割 AWS
Azure Blob Storage
静的Webサイト
ホスティング Amazon S3
Azure
API
Management
RESTful APIの公開 API Gateway
Functions
CRUD処理 AWS Lambda
Azure Cosmos DB NoSQLデータベース Amazon DynamoDB
Azure AD B2C 認証機能 Amazon Cognito
16
Demo:
サーバーレスWebアプリ作成
ハンズオンをやってみます
17
ハンズオンの構成
STEP1:Azure Cosmos DBアカウント・コンテナー作成
STEP2:Azure FunctionsでのAPI作成
STEP3:Azure Blob Storageでの静的Webサイトホスティング
18
ハンズオンのQiita記事はこちら(本体はGitHub)
https://qiita.com/himarin269/items/d4b1001e088c23ff40f3
Demo:STEP1
19
Azure Cosmos DB
アカウント・コンテナー作成
AWSの場合:Amazon DynamoDB
20
https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-3/
Demo:STEP2
21
Azure FunctionsでのAPI作成
AWSの場合:Lambda+API Gateway
22
https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-3/
LambdaではDynamoDBに
書き込むための権限を
IAMロールで与えてあげる
必要がある
AWSの場合:Lambda+API Gateway
Lambdaは直接HTTPリクエストを受けない
23
あくまでも「イベント発生時にコードを実行」という役割
⇒ API GatewayがHTTPリクエストを受け付け、
そこで発生するイベントをきっかけにLambdaが動く
Demo:STEP3
24
Azure Blob Storageでの
静的Webサイトホスティング
AWSの場合:Amazon S3
25
https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-1/
アクセス許可設定のほか、
Webサイトホスティングの
有効化の操作が必要
まとめ
比較しての感想など
26
比較してみての感想
Azureいいなとおもったところ
• 静的Webサイトの公開やサービス間連携はAzureのほうが楽
• 操作数が圧倒的に少ない印象
• Functionsのトリガー / 入出力バインディングが便利
• サービス間の連携がポータル上で簡単にできる、かつわかりやすい
• AWSは複数の種類のサービスを一覧できない
• サブスクリプション・リソースグループのありがたみ
• AWSはこれができない ↓
27
比較してみての感想
AWSいいなとおもったところ
• AWSは無料枠が多くて個人でも
使いやすい印象
• DynamoDBに無料枠があるのが
正直うらやましい…
• Cosmos DBも安価に使えたら…
• 安くなったとはいえ、最低月3,000円
近くかかってしまうので個人で使う
のはけっこうつらい
28
https://aws.amazon.com/jp/free/
まとめ
Azureやっぱりいい
• AWSもさわってみてAzureの良さを再認識
AWSもいい
• チュートリアルや無料枠が充実していてユーザー数が多いのも納得
• 豊富なチュートリアルをAzureで真似してみるのも◎
サーバーレス、クラウドネイティブ、そしてマルチクラウド
• マルチクラウドでいいとこどりのサービス構築もできるように
29
その他
かずきさん にまとめていただきました
30
Azure の機能を使った野良ハンズオン資料の紹介
https://blog.okazuki.jp/entry/2019/07/13/114542

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
ChatGPT の現状理解と 2023年7月版 LLM情報アップデートChatGPT の現状理解と 2023年7月版 LLM情報アップデート
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
 
グラフ構造のデータモデルをPower BIで可視化してみた
グラフ構造のデータモデルをPower BIで可視化してみたグラフ構造のデータモデルをPower BIで可視化してみた
グラフ構造のデータモデルをPower BIで可視化してみた
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
BigQueryの課金、節約しませんか
BigQueryの課金、節約しませんかBigQueryの課金、節約しませんか
BigQueryの課金、節約しませんか
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
DeNAゲーム事業におけるデータエンジニアの貢献 [DeNA TechCon 2019]
DeNAゲーム事業におけるデータエンジニアの貢献 [DeNA TechCon 2019]DeNAゲーム事業におけるデータエンジニアの貢献 [DeNA TechCon 2019]
DeNAゲーム事業におけるデータエンジニアの貢献 [DeNA TechCon 2019]
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 

Similar a サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~

Similar a サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~ (20)

GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
 
【第7回梅キャンIoT勉強会】らずぱいのブラウザ上でIoTプロトタイピングできちゃう話 ~CHIRIMEN for Raspberry Pi 3のご紹介~
【第7回梅キャンIoT勉強会】らずぱいのブラウザ上でIoTプロトタイピングできちゃう話 ~CHIRIMEN for Raspberry Pi 3のご紹介~【第7回梅キャンIoT勉強会】らずぱいのブラウザ上でIoTプロトタイピングできちゃう話 ~CHIRIMEN for Raspberry Pi 3のご紹介~
【第7回梅キャンIoT勉強会】らずぱいのブラウザ上でIoTプロトタイピングできちゃう話 ~CHIRIMEN for Raspberry Pi 3のご紹介~
 
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
 
LINE Bot 開発のための Azure Logic Apps 入門
LINE Bot 開発のための Azure Logic Apps 入門LINE Bot 開発のための Azure Logic Apps 入門
LINE Bot 開発のための Azure Logic Apps 入門
 
Approach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOSApproach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOS
 
SIerIoTLT201805-usshiv2
SIerIoTLT201805-usshiv2SIerIoTLT201805-usshiv2
SIerIoTLT201805-usshiv2
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみるiOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
 
msgraph-sshpubkey
msgraph-sshpubkeymsgraph-sshpubkey
msgraph-sshpubkey
 
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞくレイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
 
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話
 
Xamarin.Forms with VUI(JXUG 2019/8/31)
Xamarin.Forms with VUI(JXUG 2019/8/31)Xamarin.Forms with VUI(JXUG 2019/8/31)
Xamarin.Forms with VUI(JXUG 2019/8/31)
 
サイボウズライブでもHubotがしたい!
サイボウズライブでもHubotがしたい!サイボウズライブでもHubotがしたい!
サイボウズライブでもHubotがしたい!
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
 

Más de 拓将 平林

Más de 拓将 平林 (17)

意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
意外な相性!?Azure Cosmos DB × LINE で作る安心のメッセージ配信システム
 
Azure × LINE でクラウドを楽しもう
Azure × LINE でクラウドを楽しもうAzure × LINE でクラウドを楽しもう
Azure × LINE でクラウドを楽しもう
 
LINE API 紹介&LINE API Use Case(Azure編)
LINE API 紹介&LINE API Use Case(Azure編)LINE API 紹介&LINE API Use Case(Azure編)
LINE API 紹介&LINE API Use Case(Azure編)
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
15分でわかる!Azure Static Web Apps
15分でわかる!Azure Static Web Apps15分でわかる!Azure Static Web Apps
15分でわかる!Azure Static Web Apps
 
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
[Ignite The Tour Osaka] OPS20:インシデントに対応する (Respomding to incidents)
 
JAZUG に参加してMicrosoft MVP になった話
JAZUG に参加してMicrosoft MVP になった話JAZUG に参加してMicrosoft MVP になった話
JAZUG に参加してMicrosoft MVP になった話
 
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張するAzure Application GatewayでオンプレDMZをクラウドへ拡張する
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
 
Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」Clova「おしゃべり禁止モード」
Clova「おしゃべり禁止モード」
 
Micronaut on Azure 試してみた
Micronaut on Azure 試してみたMicronaut on Azure 試してみた
Micronaut on Azure 試してみた
 
【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
Bot Serviceだけじゃない!Azureで加速させるLINE開発~Clova腹話術スキルの紹介~
 
Clova腹話術スキルの紹介
Clova腹話術スキルの紹介Clova腹話術スキルの紹介
Clova腹話術スキルの紹介
 
Azure&C#によるClovaスキル+LINE Bot短期開発
Azure&C#によるClovaスキル+LINE Bot短期開発Azure&C#によるClovaスキル+LINE Bot短期開発
Azure&C#によるClovaスキル+LINE Bot短期開発
 
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
[JAZUG 7周年総会]社内でIoT&AIな農業系チャットボット開発講座をやってみて
 
最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話最近Azure上でXamarinを触り始めた話
最近Azure上でXamarinを触り始めた話
 

サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~