Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
サーバーレスの概要と応用 - プログラミング生放送勉強会 第55回@福岡
Search
sinofseven
November 03, 2018
Technology
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバーレスの概要と応用 - プログラミング生放送勉強会 第55回@福岡
プログラミング生放送勉強会 第55回@福岡
sinofseven
November 03, 2018
More Decks by sinofseven
See All by sinofseven
コンピュートリソースと トリガーから考える サーバーレスアーキテクチャ in DevelopersIO 2023 福岡
sinofseven_
0
1.1k
サーバーレス開発の勘所
sinofseven_
0
1.8k
CircleCI_のJobを_並列で実行してみる
sinofseven_
1
1.6k
Other Decks in Technology
See All in Technology
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
100
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
210
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
620
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
20260915deck.gl-raster を使ってみた
rena1208
0
170
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
480
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
1
120
GitHub Agentic Workflows を触ってみる
htkym
2
880
DORA_Metrics.pdf
wagnerfusca
1
140
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
120
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
200
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
WCS-LA-2024
lcolladotor
0
840
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Crafting Experiences
bethany
1
360
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
GraphQLとの向き合い方2022年版
quramy
50
15k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
Unsuck your backbone
ammeep
672
58k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Prompt Engineering for Job Search
mfonobong
0
460
It's Worth the Effort
3n
188
29k
Transcript
サーバーレスの 概要と応用 夏目祐樹 クラスメソッド株式会社 1
自己紹介 - 夏目祐樹 (ナツメユウタ) - クラスメソッド株式会社 - サーバーレス開発部 - 福岡オフィス
- Twitter, GitHub: @sinofeven - 趣味: 物語鑑賞, 勉強会巡り - コミュニティ - JAWS-UG 福岡 2
3
4
5
6
サーバーレス開発部 - 2017年10月に発足 - サーバーレス(アーキテクチャ)の開発を行う - 案件としてはIoTに関するものが多く、 管理画面等でSPAも使っている - 各地のオフィスにメンバーがいる
- 東京, 大阪, 福岡 のオフィス - ふるさと勤務で、岡山とフィリピン 7
8
サーバーレスって? 9
サーバーがないの? 10
サーバーレス = 自分で管理するサーバーがない 11
サーバーレスの特徴 - サーバーの管理が必要がない - リソース確保が必要ない - 可用性が高い & スケーリングが容易 -
イベント駆動 12
サーバーの管理が必要ない - サーバーを立ち上げて、 ミドルウェアやランタイムのインストールなども必要ない - セキュリティパッチの適用なども必要ない - コンピュートリソースにもよるが、 書くのはロジックとなるコードと少しの設定 13
リソースの確保が不要 - 物理/仮想 サーバーのように予め立てておく必要もない - IaaS, PaaSのように使っていない時間に費用がかからない - 費用がかかるのは、コードを実行している間だけ 14
可用性が高い & スケーリングが容易 - 障害やアクセス急増のための冗長化なども クラウド側が勝手にやってくれる - 自前でやろうとすると専用のアプリケーション入れたり、 予備のサーバー容易したり、 ちゃんと切り替えできるように訓練したりとやることは多い
15
イベント駆動 - サーバーレス最大の特徴 (だと個人的には思ってる) - クラウドに対するいろいろなイベントをトリガーとしてコードが走る - 例 - cronのようにコードを定時実行する
- HTTPリクエストが来たらコードが走る - オブジェクトストレージにファイルを置いたら、コードを走らせる - NoSQLにデータを置いたら、コードを走らせる - これだけは、自前でやるのが難しい - ファイルが置かれたら自動実行するとか作れなくもないけど、 その仕組みから作ることになるから大変 16
結局なにが嬉しいの? - クラウドのマネージド・サービスに 全力で乗っかる - 管理とかの面倒なことをクラウド事業者に 押し付けることができる - コードのロジックに集中できる 17
どこでサーバーレスできる? - AWS - サーバーレス代表に近い - 周辺サービスとの連携が強力 - Azure -
Azure FunctionsとApplication Insight、Visual Studioで追い上げてるイメージ - Durable Functionの関数オーケストレーションが超強力 - GCP - ようやっとCloud FunctionsがGAされた - PuppeteerでヘッドレスChromeが動くのでWebのUIテストとかスクレイピングできそう - 他にもある 18
サーバーレスは何でもできる ? - そうでもない - いろいろ課題もある 19
チューニングの制限が大きい - コードの実行環境などクラウドにまかせているため、 自由にできることは非常に少ない - できるのはせいぜい処理するメモリ量をある程度 “選択” できる程度 - コードを動かすことのできる時間の上限も決まってる
- 常時リソースを確保しているわけでもないから、 最初の起動は時間がかかる - コールドスタート 20
全体像がつかみにくい 21 引用元: ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視 (https://www.slideshare.net/takanorig/serverlessconf-tokyo2018)
他にもいろいろ - クラウドのサービスを使う関係上 テストが難しくなる - 覚えることも多いし、更新も頻繁 - 実際この資料作ってて気づいたこと多数 22
よく考えて 使いましょう 23
If Amazon.com were starting today, it would go serverless. 24
AWSでサーバーレスしてみる 25
よく使うサービス - Lambda: コードを実行する。サーバーレスの要。 - API Gateway: REST APIを作る。 -
DynamoDB: NoSQL。データを保存。 - S3: オブジェクトストレージ。データを保存 - CloudFormation: AWSリソースをテキストで管理。 26
開発方法(1) Web Consoleから 27
開発方法(2) ツールを使って - コンソールからだとコードの管理とか難しい - だからデプロイツールを使う - Serverless Framework -
Node製, デプロイツールとしては老舗 - 実はAWS 以外の環境にも使用可能 - SAM (Serverless Application Model) - AWS 公式のツール - 実質的には、CloudFormationの拡張 28
Serverless Framework 29
Serverless Application Model 30
CloudFormationからは 逃げられない 31
Lambdaのイベントソース - API Gateway - S3 - SNS - CognitoUserPools
- CloudWatch Event - CloudFront - Kinesis Data Stream - SQS - StepFunction - AWS IoT - etc... 32
イベントソースを種類分け 33 同期 - API Gateway - CognitoUserPools - CloudFront
非同期 - S3 - SNS - CloudWatch Event - AWS IoT ストリーム - DynamoDB - Kinesis DataStream - SQS
種類がLambdaのリトライを決める - 同期処理 - 基本リトライしない - 非同期処理 - 最大2回 -
Lambdaにデッドレターキューを設定していれば そちらに通知が飛ぶ - ストリーム - 問題ないデータだけ再度処理されたり、同じデータを何度もやってたり - 意図しない動作もあるから、ドキュメントで確認がしないとだめ - 再試行動作について - AWS Lambda - https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/retries-on-errors.html 34
サーバーレスで便利なサービス - DynamoDB - X-Ray - StepFunctions - AWS IoT
Core - CloudWatch - SNS - Kinesis, DynamoDB Stream, SQS - etc….. 35
DynamoDB - サーバーレスだと基本になるデータストア - RCU/WCUなど覚えることも多いし、安くはない - ちゃんと使うと、結構レスポンスも早いから便利 - データモデリングのベストプラクティスも出てるし、 いろいろ情報も出てるから、怖くないよ
- DynamoDB のベストプラクティス - Amazon DynamoDB (https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/best-practi ces.html) - マイクロサービスを成功させるためのサーバーレスアーキテクチャ設計と NoSQLデータモデリング / Serverless Architecting and NoSQL Data Modeling for Successful Microservices - Speaker Deck (https://speakerdeck.com/marcyterui/serverless-architecting-and-nosql-data-modeling-fo r-successful-microservices) 36
CloudWatch - 大きくわけると3つのサービスがあり、 監視の基本と便利なトリガーになる - CloudWatch Metrics - CloudWatch Logs
- CloudWatch Events 37
CloudWatch Metrics - AWS リソースの使用状況とかのメトリクスを取得できる - Alartの設定もできるし、ダッシュボードも作れる - サーバーレスでよく見るのは -
Lambdaのスロットリング - DynamoDBのRCU, WCUの使用状況 - サーバーレスに限らずAWSにおける監視の基本になる 38
CloudWatch Logs - AWSにおけるLogの基盤 - LogGroupという大きなまとまりと、その下のLogStreamがある - Lambdaで考えると - LogGroupが一つのLambda関数
- LogStreamがLambdaが実行されるコンテナ - LogStreamの中にログがある - CloudWatch LogsとLambda(やときどきKinesis)を ゴニョゴニョしたりすると、ログからのSlack通知とか作れる 39
CloudWatch Events - AWSリソースの状態変化をEventとして取得し、 何かを動かすことができる - Lambdaのトリガーとしても使用することができる - Eventが豊富でここを使いこなすだけでも非常に便利なものを作れる -
例 - Lambda関数が作成されたことを検知して、 CloudWatch Logsを作成してKinesisにつなぎ、 アラートが飛ぶようにする 40
X-Ray - Lambdaのパフォーマンス監視で非常に役に立つツール - 有効化するだけで、Lambdaの実行時間とかを見れる - Lambdaのコードで少し追記すると、 AWS リソースへのリクエストにどれだけ時間がかかってるとかも見れる 41
SNS (Simple Notification Service) - 受け取ったイベントをいろんなところに飛ばすサービス - Lambdaのトリガーにしたり、 HTTPリクエストを飛ばしたり、 メールを飛ばしたりできる
- 一つのSNS Topicから複数飛ばすこともできるから間に挟んでおくと、 後から別の処理もさせたいといったときに簡単に追加できるようになる 42
StepFunctions - ワークフローを作ることができるサービス - Lambda -> Lambda -> Lambda とかを簡単に管理できる
- 条件分岐だったり、Waitだったりもできる - Waitは固定値や、Lambdaの実行結果で変更できたりする - Lambdaでは難しい、動的な指定日時実行とか使える 43
DynamoDBStream, KinesisDataStream, SQS (Simple Queue Service) - 直列的にLambdaを実行することができるイベントソース - 同時実行数を低くしておけば、RDS(RDBMS)への書き込みとかできる
- DynamoDB Stream (pull型) - DynamoDBへのData追加/変更/削除などのデータをストリームで渡せる - Kinesis Data Stream (pull型) - 大量のデータをさばくためのストリームサービス - SQS (polling型) - 分散キュー, 残念ながらLambdaトリガーではFIFOキューは使えない - データを入れてから一定時間は取り出せないようにする、 遅延キューがあり時間差のある処理でも使える 44
AWS IoT Core - IoTデバイスからの通信をトリガーにして Lambdaを動かしたり、Kinesisにデータを流したりできる - MQTTを使う - Pub/Subもできるので、
サーバーレスでリアルタイムチャットを作ることもできる - 実はIoT関係なくても使うことができる 45
AWS外でも便利なものがある - 監視 - AWSリソース全体 - Datadog - Mackerel -
Lambdaの監視 - Thundra - IOpipe - サーバーレスアプリケーションの監視 - Epsagon 46 - 統合認証プラットフォーム - Auth0
まとめ - サーバーレス(アーキテクチャ)という便利なものがあるよ - サーバーの管理はしないでロジックに集中できるよ - 万能じゃないくて、特有の課題とかあるよ - AWSは周辺サービスが非常に豊富で便利だよ -
そのかわり覚えることは多いよ - とって食べたりしないから、とりあえず何か気軽に作ってみると いいんじゃないかな 47
クラスメソッドでは エンジニアを募集しています https://classmethod.jp/recruit/ 48