Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
フル・サーバーレスでサービスを作る話 / Make the full-stack-serverless service
Takanori Suzuki
December 16, 2020
Technology
1
190
フル・サーバーレスでサービスを作る話 / Make the full-stack-serverless service
Serverless Meetup Japan Virtual #16
#serverlessjp
フル・サーバーレスでサービスを作る話
Takanori Suzuki
December 16, 2020
Tweet
Share
More Decks by Takanori Suzuki
See All by Takanori Suzuki
AIカメラで社内販売の品切れを検知して残念な結果になるのを回避した話 / Detecting out of stock items with using AI Camera
takanorig
0
1.6k
IoTサービスのエッジからクラウドまでServerlessFrameworkで構築する / Deploying-IoT-Service-from-Edge-to-Cloud-with-ServerlessFramework
takanorig
0
220
[SORACOMUG]S+Cameraを利用して在庫チェックをやってみた / InventoryManagement-with-SORACOM-SCAMERA
takanorig
0
22
Karateによる UI Test Automation 革命 / UITests-Automation-with-Karate
takanorig
0
28
スマート工場に向けたIoTデータ分析の実際のところ / SmartFactory-IoT-Data-Analytics
takanorig
0
34
人生がときめくAPIテスト自動化 with Karate / SparkingJoy-for-API-Testing-Automation-with-Karate
takanorig
0
220
マイクロサービスにおけるテスト自動化 with Karate / Microservices-Testing-Automation-with-Karate
takanorig
1
740
ServerlessConf Tokyo2018 サーバーレスなシステムのがんばらない運用監視 / ServerlessConfTokyo2018_ServerlessObservability
takanorig
0
29
IoT時代におけるストリームデータ処理と急成長の Apache Flink / StreamData_ApacheFlink
takanorig
0
36
Other Decks in Technology
See All in Technology
「一通りできるようになった」その先の話
hitomi___kt
0
150
立ち止まっても、寄り道しても / even if I stop, even if I take a detour
katoaz
0
1.2k
AI Builderについて
miyakemito
1
1k
re:Inventで発表があったIoT事例の紹介と考察
kizawa2020
0
200
Dockerに疲れた人のためのLXDではじめるシステムコンテナ入門
devops_vtj
0
140
UEでPLATEAU触ってみた
41h0_shiho
0
250
WebLogic Server for OCI 概要
oracle4engineer
PRO
3
910
NGINXENG JP#2 - 2-NGINXの動作の詳細
hiropo20
1
140
Multi-Cloud Gatewayでデータを統治せよ!/ Data Federation with MCG
tutsunom
1
360
USB PD で迎える AC アダプター大統一時代
puhitaku
2
2k
私見「UNIXの考え方」/20230124-kameda-unix-phylosophy
opelab
1
180
💰年度末予算消化祭💰 Large Memory Instance で 画像分類してみた
__allllllllez__
0
120
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
233
9.7k
What's new in Ruby 2.0
geeforr
336
30k
Ruby is Unlike a Banana
tanoku
93
9.6k
Building an army of robots
kneath
301
40k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
50k
Web development in the modern age
philhawksworth
197
9.6k
From Idea to $5000 a Month in 5 Months
shpigford
374
44k
Learning to Love Humans: Emotional Interface Design
aarron
263
38k
How GitHub (no longer) Works
holman
298
140k
Making the Leap to Tech Lead
cromwellryan
117
7.7k
Building Adaptive Systems
keathley
27
1.3k
It's Worth the Effort
3n
177
26k
Transcript
1 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
フル・サーバーレスで サービスを作る話 2020/12/16 Acroquest Technology Co., Ltd. 鈴木 貴典 Serverless Meetup Japan Virtual #13
本日の話のポイント Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2 サーバーレスで サービス全体を設計・開発した際に 意識したポイントを紹介します
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3
自己紹介 ◼ 所属 • Acroquest Technology Co., Ltd. ◼ 主な業務分野 • システムアーキテクト • IoTサービス開発 • ビッグデータ処理プラットフォーム • サーバーレス・アーキテクチャ ◼ バックグラウンド • エンタープライズ/ミッションクリティカル • SEPG/開発/マネジメント • Java/Python 鈴木 貴典 シニアテクニカルアーキテクト Acro = 先端を quest = 探究する 働きがいのある会社ランキング 1位
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
• Password付zipファイルを送ります • Passwordを送ります。 • 暗号化 • プロトコル クラウドストレージで共有? 顧客やユーザーとの ファイルのやり取りって どうしていますか? P P A P
ファイル転送/交換に求められる要件 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5 ①大きなサイズのファイル送付をしたい ②ファイルの送信だけでなく、相手からの受取もしたい ③ファイルは暗号化する ④フリーのサービスの利用はNG ⑤ファイルがクラウド上に残り続けるのはNG • 利用頻度は少ない(1日数回) • 運用コストはおさえたい しかしながら…
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6
そのニーズは満たせますよ そう、サーバーレスならね
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7
フル・サーバーレスなサービスとして開発
ファイル転送サービスのアーキテクチャ概要 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
8 API Gateway Lambda DynamoDB S3 SES 社員 ユーザー メール送付 Cognito Active Directory SAML フェデレーション 認証は SSO API Gateway Lambda ゲスト ユーザー ファイル一時保存
画面イメージ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
9
検討したポイント Copyright © Acroquest Technology Co., Ltd. All rights reserved.
10 ①認証 ②データ蓄積/アクセス ③大きいサイズのファイルアップロード ④ファイルの自動削除 ⑤バッチ集計 ⑥モニタリング
①認証(シングルサインオン構成) Copyright © Acroquest Technology Co., Ltd. All rights reserved.
11 ⚫ Cognitoで、SAMLフェデレーションを適用 • 今回のサービスではAzure AD と連携 • Auth0などでも連携可能 ⚫ このおかげで、SSO構成が実現できるため ユーザー登録/管理等の機能開発は 不要になった ⚫ エンタープライズ向けには有用 ⚫ API Gateway の Authorizer も対応可能 画面 Cognito AzureAD ②認証 ①アクセス ③リダイレクト OAuth2 SAML
②データ蓄積/アクセス Copyright © Acroquest Technology Co., Ltd. All rights reserved.
12 ⚫ キャパシティ戦略をどうするか? • アクセスがおおよそ一定 → プロビジョンド ‒ Auto Scaling を適用するかどうか? • アクセスが不規則で少ない → オンデマンド ‒ デフォルトでは 最大4,000WCU or 12,000RCUになる ‒ 逆にアクセスが増えたらコストも増えるので注意 ⚫ 更新系テーブルと参照系テーブルを 分けることも検討 • CQRS(コマンドクエリ責任分離)の構成を 取るかどうか ⚫ ポイントインタイムリカバリ(PITR)は 特に問題がなければデフォルトONで! • 自動でバックアップされ、過去35日間の任意の 時点にデータを復元できる • 障害や操作ミスなどでデータを削除してしまった 場合などに有効 DynamoDB Stream Commands (更新) Query (参照) Write Read
③大きいサイズのファイルアップロード Copyright © Acroquest Technology Co., Ltd. All rights reserved.
13 ①Pre-Signed URLの取得 ②ファイルアップロード API Gateway Lambda S3 ⚫ API Gatewayで送信できるコンテンツのサイズは 10MBの制限あり(上限緩和なし) ⚫ S3の ”Pre-Signed URL”(署名付きURL)の 機能を利用して、画面側からS3へファイルを アップロードする ⚫ ファイルアップロードが完了したら S3トリガーで処理を組み込むこともできる ⚫ ダウンロードの場合も、ほぼ同様にして実現可能 ※今回は転送対象のファイルであるが サイズの大きい画像ファイルなどを 扱うような場合も同様の方法で実現できる Lambda トリガー
④ファイルの自動削除 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
14 ⚫ セキュリティ性向上のため、一定期間で S3のファイルは削除したい ⚫ S3のライフサイクルルールを使うと 一定期間経過後に自動で削除できる • ロジックの実装などが不要 • ただし、時間単位ではなく、日単位で指定
⑤バッチ集計 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
15 ⚫ Dailyで、利用状況の集計を行っている ⚫ Step Functions で大抵のことは満たせる 状況になっている • LambdaやBatchなどとも連携できる ⚫ 動的並列処理ができるようになったのが便利! • 過去も並列処理はあったが、機能が並列であり、 同じ処理を複数処理する内容ではなかった • Mapステートを利用することで、現在は解決 • 不特定多数/データ数が増加していくような 場合でもこれで解決 • ひと昔前のMap-Reduce的な処理は実現 (データ件数次第ではあるが) ・・・ CloudWatch Event Step Functions Batch Lambda
⑥モニタリング Copyright © Acroquest Technology Co., Ltd. All rights reserved.
16 ⚫ ひとまずX-Rayは適用しておくと良い • 性能ボトルネックを早めに特定 • 本番運用で障害が発生した際の手がかりになる • ただし、全リクエストをモニタリングしている わけではない点に注意 ⚫ 今やLambdaだけでなくStep Functionsにも対応
⑥モニタリング(+α) Copyright © Acroquest Technology Co., Ltd. All rights reserved.
17 ⚫ 2020/12/03に 「Lambda Insights」がGA! ⚫ 自前でダッシュボードなどを 作らなくてもすぐにLambdaの 性能評価やモニタリングが可能
その後の 運用を通して
その後の運用を通して Copyright © Acroquest Technology Co., Ltd. All rights reserved.
19 ①障害はゼロ • 1年半ぐらい運用継続中。 • 問い合わせはあったけど「ファイル自体添付されていない」など。 • エラーのモニタリングもしているが、エラー自体発生しない。 ②メンテナンス自体もほぼ無い • 認証をSAML連携したおかげで、ユーザーの追加/削除の 対応なども発生しない。 ③コストは? • 想定以上でした(!?)
構築してみた結果 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
20 想定以上に いろいろな機能を活用できたことで 開発メンバも良い経験ができた (開発してくれたメンバはほぼサーバーレス初心者だった) 社内の他のメンバからも 好評であった
まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
21 1. クラウド自体や関連SaaSの機能を活かして できるだけ自前で開発する部分を減らそう 2. 処理するデータのサイズやスループットを踏まえて アーキテクチャの検討をしよう 3. モニタリングやバックアップ等、運用の方針も 最初にちゃんと設計しよう
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
ご清聴ありがとうございました Evolve the Earth with Emotion of Technology