Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
フル・サーバーレスでサービスを作る話 / Make the full-stack-server...
Search
Takanori Suzuki
December 16, 2020
Technology
1
280
フル・サーバーレスでサービスを作る話 / 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
ChatGPTとKarateで実現するシン・BDD / Realizing New BDD through ChatGPT and Karate
takanorig
2
3.6k
KarateによるBDDベースのAPIテスト / BDD based API-Testing with Karate
takanorig
1
990
AIカメラで社内販売の品切れを検知して残念な結果になるのを回避した話 / Detecting out of stock items with using AI Camera
takanorig
0
2.2k
IoTサービスのエッジからクラウドまでServerlessFrameworkで構築する / Deploying-IoT-Service-from-Edge-to-Cloud-with-ServerlessFramework
takanorig
0
320
[SORACOMUG]S+Cameraを利用して在庫チェックをやってみた / InventoryManagement-with-SORACOM-SCAMERA
takanorig
0
73
Karateによる UI Test Automation 革命 / UITests-Automation-with-Karate
takanorig
0
350
スマート工場に向けたIoTデータ分析の実際のところ / SmartFactory-IoT-Data-Analytics
takanorig
0
160
人生がときめくAPIテスト自動化 with Karate / SparkingJoy-for-API-Testing-Automation-with-Karate
takanorig
0
710
マイクロサービスにおけるテスト自動化 with Karate / Microservices-Testing-Automation-with-Karate
takanorig
1
2.3k
Other Decks in Technology
See All in Technology
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
6
750
Apache Spark もくもく会
taka_aki
0
140
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
120
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
470
いま注目のAIエージェントを作ってみよう
supermarimobros
0
360
Unlocking the Power of AI Agents with LINE Bot MCP Server
linedevth
0
120
テストを軸にした生き残り術
kworkdev
PRO
0
220
Android Audio: Beyond Winning On It
atsushieno
0
3.4k
「その開発、認知負荷高すぎませんか?」Platform Engineeringで始める開発者体験カイゼン術
sansantech
PRO
2
820
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1.1k
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
590
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
184
22k
Done Done
chrislema
185
16k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Designing for Performance
lara
610
69k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Designing Experiences People Love
moore
142
24k
Writing Fast Ruby
sferik
628
62k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Building Applications with DynamoDB
mza
96
6.6k
Practical Orchestrator
shlominoach
190
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
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