SlideShare a Scribd company logo
1 of 25
Lambdaで
Hello, Worldしてみよう
ちきゅう株式会社
石川 光佑
自己紹介
✓ 石川光佑
✓ ちきゅう株式会社 エンジニア
✓ 今年でエンジニア13年目
✓ Javaで育ち、今はPHPとJS
✓ LambdaではPython
✓ 開発・運用・ユーザーサポー
トなど、いろいろやってます
。
一応、
どんな会社か説明しますと・・
・
ブラウザベースの
Webサービスを作ってます。
サーバレスアーキテクチャ
?
サーバレスアーキテクチャ
?
「時間」ではなく、「使用量」に応じて
課金されるインフラを基盤として
新しいサービスを構築する手法・・・
という感じ?
*いろんな異論もあるとは
思いますが。。。
✓ ステートレス。
✓ httpリクエストなどのトリガーを起点にして動く。
✓ コンテナの管理を(基本的に)自分で行わない。
✓ 使った分だけ課金。
サーバレスアーキテクチャ
?
例えばこんなの
✓Lambda(AWS) - 実行環境
✓Cloud Functions(Google) - 実行環境
✓Azure Functions(Microsoft) - 実行環境
✓DynamoDB(AWS) - NoSQL
✓Cloud Database(Google) - NoSQL
✓Azure Cosmos DB(Microsoft) - NoSQL
今までの構成
サーバレス化
並列の分岐が無くなるというのがポイント。
今回は特にLambdaについて説明します。
Lambdaのメリット
スケールアウトと冗長化がとても楽になる!
✓スケールアウトに対する反応速度が非常に速い
✓アクセスがない時間帯は課金が発生しない
✓サーバメンテナンスの手間がない
✓冗長化を考える手間がない
Lambdaのデメリット
処理のオーバーヘッドが高い
すごい簡単な処理でも、(API Gatewayまで含めて)
ブラウザへのレスポンスに200ms〜500msほどかか
ったりする。
リレーショナルデータベースとの相性が良くない
ステートレスであるため、コネクションプーリン
グなどの仕組みが使えず、コネクションが不足しが
ち。
Lambdaのデメリット
ワークフローの構築が大変
デプロイの手順が今までのフレームワークと全く
異なるため、今までと同じ手法が使えなかったり。
Serverless Frameworkなどを利用すると楽できる
部分もあるが、基本的に
「ローカルで同じ動作環境を作る」
「ローカルで動かしてデバッグする」
とかが、わりと面倒。
Lambdaのデメリット
制限事項が辛いと感じることがある
・実行時間は5分まで。
・デプロイパッケージは50MBまで。
・非同期で呼ぶときのペイロードは128Kまで。
・同時実行数は1000まで(*これは緩和可能)。
弊社では・・・
✓基本的にサーバ=PHP(7.1) / フロント=AngularJS
✓データベースはMongoDB & MySQL
✓Lambdaは昨年の8月から導入
✓段階的に、Lambdaで動かす範囲を増やしている
Lambdaの利用箇所
✓SlackやChatWorkへの通知処理
✓データ取り込み処理 / 出力処理
✓外部に公開しているHTTPベースのAPI
「日常的に使われるわけではないが
呼ばれると重い処理」に利用。
うまく使うには
• Lambda関数内でスレッドを作らない。
並列実行が必要なら、関数自体を別に。
• Lambda関数内で複数のコネクションを張らない。
• 用途によっては、EC2上で動かした方が楽なケース
も。処理待ちが必要な場合など。
まとめると
✓一部だけLambdaを入れるのでも、効果は出ます。
✓RDBと併用するときは、コネクション管理に気をつけて。
✓各関数は小さく。並列実行が必要なら関数を分けて。
LambdaでHello, World
✓AWS Consoleにログイン。
✓Lambdaに関数を新規作成。
✓トリガーについての説明。
✓API Gatewayの設定。
✓実際の開発で利用するためのTips
デモ
✓Lambda関数用のIAM Roleを作成
✓新規にLambda関数を作成
✓API Gatewayを設定
✓ブラウザからHello, World!
実運用だと、けっこう大変
✓ 利用するライブラリを全コピーしてからアーカイブ
しないといけない。
✓ 環境が複数あると、トリガー(API Gatewayなど)も
含め、全て設定しないといけない。
✓ 普通のWebアプリケーションとしては動かないので
、場合によってはデバッグが大変。
サーバレス向けの開発ツー
ル
• Gulp(Lambdaのデプロイ, 実行)
• Swagger(API Gatewayのデプロイ)
• Apex(Lambdaのデプロイ, 実行)
• Serverless Application Model(統合ツール)
• Serverless Framework(統合ツール)
• Serverless microframework(統合ツール)
Serverless Framework
✓yaml形式の定義ファイルを元に、API Gateway,
Lambda, IAMロールなど、必要なリソースを自動生
成。
✓ローカルでのシュミレート実行。
✓基本的にはnodeJSが優遇されているが、Python関
連でも良いプラグインが揃っている。
✓requirements.txtを元にライブラリをコピー
✓API Gatewayのシュミレート(Docker)
✓wsgiアプリケーションをデプロイ
サンプルは、こちらのレポジトリでご確認ください
https://github.com/iskou9821/serverless-python-sample
以上となります。
ありがとうございました
。

More Related Content

What's hot

別の角度からAWSを眺めてみた話
別の角度からAWSを眺めてみた話別の角度からAWSを眺めてみた話
別の角度からAWSを眺めてみた話Junichi Tanabe
 
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作Maboroshi.inc
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜Masaya Kogawa
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 
JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowlerTakuro Sasaki
 
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみようMori Shingo
 
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解するこれで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解するHajime Ogushi
 
Devops4cloudlbuilder ja
Devops4cloudlbuilder jaDevops4cloudlbuilder ja
Devops4cloudlbuilder jaGo Chiba
 
a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」Seiko Kuchida
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングTakuro Sasaki
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺Yusuke Wada
 
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成Kazuki Akiyama
 
PHPerでもわかる!実践Webアクセシビリティ
PHPerでもわかる!実践WebアクセシビリティPHPerでもわかる!実践Webアクセシビリティ
PHPerでもわかる!実践Webアクセシビリティshiori koga
 
WordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 KomoriWordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 Komorimasaaki komori
 
Word camptokyo2012セッション資料
Word camptokyo2012セッション資料Word camptokyo2012セッション資料
Word camptokyo2012セッション資料horike37
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようYuusuke Takeuchi
 
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリオープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリRyuji Egashira
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6masaaki komori
 

What's hot (20)

別の角度からAWSを眺めてみた話
別の角度からAWSを眺めてみた話別の角度からAWSを眺めてみた話
別の角度からAWSを眺めてみた話
 
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作
 
20150523
 20150523 20150523
20150523
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowler
 
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
 
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解するこれで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
これで大丈夫。Web制作で使うコマンドラインツールの名前と役割をざっくり理解する
 
Devops4cloudlbuilder ja
Devops4cloudlbuilder jaDevops4cloudlbuilder ja
Devops4cloudlbuilder ja
 
a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピング
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
 
Learning jQuery
Learning jQueryLearning jQuery
Learning jQuery
 
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
 
PHPerでもわかる!実践Webアクセシビリティ
PHPerでもわかる!実践WebアクセシビリティPHPerでもわかる!実践Webアクセシビリティ
PHPerでもわかる!実践Webアクセシビリティ
 
WordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 KomoriWordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 Komori
 
Word camptokyo2012セッション資料
Word camptokyo2012セッション資料Word camptokyo2012セッション資料
Word camptokyo2012セッション資料
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
 
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリオープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6
 

Similar to LambdaでHello, World(2017/07/21 サーバレスアーキテクチャ勉強会)

関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみるNoriaki Sakata
 
最近つくったWebサイト作成ツールをおひろめ
最近つくったWebサイト作成ツールをおひろめ最近つくったWebサイト作成ツールをおひろめ
最近つくったWebサイト作成ツールをおひろめMasaki Yamamoto
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Masakazu Muraoka
 
HTML5 アプリ開発
HTML5 アプリ開発HTML5 アプリ開発
HTML5 アプリ開発tomo_masakura
 
ゆるべん Webアプリ開発概要 20130127
ゆるべん Webアプリ開発概要 20130127ゆるべん Webアプリ開発概要 20130127
ゆるべん Webアプリ開発概要 20130127Y
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知zaru sakuraba
 
コスト削減から考えるAWSの効果的な利用方法
コスト削減から考えるAWSの効果的な利用方法コスト削減から考えるAWSの効果的な利用方法
コスト削減から考えるAWSの効果的な利用方法Aya Komuro
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Terui Masashi
 
スタートアップが AWS Lambda を導入した理由
スタートアップが AWS Lambda を導入した理由スタートアップが AWS Lambda を導入した理由
スタートアップが AWS Lambda を導入した理由Kiminari Homma
 
クラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャクラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャKeisuke Nishitani
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてSato Shun
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows AzureKeiichi Hashimoto
 
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編Masayuki KaToH
 
[chillSAP]LT_20200213_cap
[chillSAP]LT_20200213_cap[chillSAP]LT_20200213_cap
[chillSAP]LT_20200213_capShumpeiOshima
 
Deploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in FargateDeploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in Fargatebitbank, Inc. Tokyo, Japan
 
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)Tomotsune Murata
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいKazumi IWANAGA
 
AWSを会社で使ってみた
AWSを会社で使ってみたAWSを会社で使ってみた
AWSを会社で使ってみたSatoshi Ishikawa
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaTakeshi Akutsu
 

Similar to LambdaでHello, World(2017/07/21 サーバレスアーキテクチャ勉強会) (20)

関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
 
最近つくったWebサイト作成ツールをおひろめ
最近つくったWebサイト作成ツールをおひろめ最近つくったWebサイト作成ツールをおひろめ
最近つくったWebサイト作成ツールをおひろめ
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
 
HTML5 アプリ開発
HTML5 アプリ開発HTML5 アプリ開発
HTML5 アプリ開発
 
ゆるべん Webアプリ開発概要 20130127
ゆるべん Webアプリ開発概要 20130127ゆるべん Webアプリ開発概要 20130127
ゆるべん Webアプリ開発概要 20130127
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知
 
コスト削減から考えるAWSの効果的な利用方法
コスト削減から考えるAWSの効果的な利用方法コスト削減から考えるAWSの効果的な利用方法
コスト削減から考えるAWSの効果的な利用方法
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
 
スタートアップが AWS Lambda を導入した理由
スタートアップが AWS Lambda を導入した理由スタートアップが AWS Lambda を導入した理由
スタートアップが AWS Lambda を導入した理由
 
クラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャクラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャ
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
 
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編
 
Jawsug福岡 201606 up
Jawsug福岡 201606 upJawsug福岡 201606 up
Jawsug福岡 201606 up
 
[chillSAP]LT_20200213_cap
[chillSAP]LT_20200213_cap[chillSAP]LT_20200213_cap
[chillSAP]LT_20200213_cap
 
Deploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in FargateDeploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in Fargate
 
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
スタートアップだからこそ使うAWS(第5回JAWS-UG Nagoya)
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
 
AWSを会社で使ってみた
AWSを会社で使ってみたAWSを会社で使ってみた
AWSを会社で使ってみた
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashita
 

LambdaでHello, World(2017/07/21 サーバレスアーキテクチャ勉強会)