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
サーバーレスで豊島区の緊急設備トラブルを解決するアプリを作った話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kobaken
March 02, 2024
1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバーレスで豊島区の緊急設備トラブルを解決するアプリを作った話
kobaken
March 02, 2024
More Decks by kobaken
See All by kobaken
何者かになる必要はあるのか?
kkb1016
0
270
大量に出て困る!?AWSログのコスト削減
kkb1016
0
48
AWS BuilderCards V2セキュリティ拡張パックを体験してきた
kkb1016
0
54
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
It's Worth the Effort
3n
188
29k
Test your architecture with Archunit
thirion
2
2.4k
We Have a Design System, Now What?
morganepeng
55
8.4k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Documentation Writing (for coders)
carmenintech
77
5.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The Language of Interfaces
destraynor
162
27k
Product Roadmaps are Hard
iamctodd
55
13k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
Transcript
JAWS DAYS 2024 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a JAWS DAYS 2024 小林
賢司 サーバーレスで豊島区の緊急設備トラブルを解決する アプリを作った話
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 自己紹介 名前:小林 賢司 所属:株式会社KURUM(くるむ)、その他 お仕事:AWSの設計、運用、技術支援、PM、農作業 好きなAWSサービス:Step Functions、CloudWatch
Logs 資格: 趣味:ポケカ、Cotomo、お酒全般、春のパン祭り 生息地:カントー地方 2
豊島区の人口ご存知ですか? 3
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 291,556人 ≒ 29万人 豊島区の人口? 4
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 1. サーバーレスとは? 2. サーバーレスでどんなアプリを作ったのか? 3. サーバーレスにしてどうだった? 4.
リリースしてどうだった? 5. 導入できなかったサービス 6. まとめ お話すること 5
1.サーバレスとは? 6
ちょっと待って、 その前にマネージドサービスを おさらい。 7
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • AWS社がサービス提供及び運用まで面倒を見てくれるサービス。 マネージドサービスとは? 8 https://aws.amazon.com/jp/blogs/news/applying-the-aws-shared-responsibility-model-to-your-gxp-solution/
この前提が大切! 9
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • サーバー管理が不要となり(サーバーは存在します)システムの運用を低減することが できる。 • アプリケーションの実行環境を素早く準備できるので、注力したいアプリケーション開発 に集中することができる。 •
オートスケーリング、高可用性、使用量に応じた課金モデルなどの特徴があり、俊敏性 の向上とコストの最適化を実現できる。 サーバーレスとは? 10 AWSがサーバー管理、運用をしてくれる!!安心!! 使った分だけ使用料が発生するので安心!!(一部例外もあり)
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • コンピューティング ◦ AWS Lambda、AWS Fargate •
アプリケーション統合 ◦ Amazon EventBridge、AWS Step Functions、Amazon SQS、Amazon SNS、Amazon API Gateway、AWS AppSync • データストア ◦ Amazon S3、Amazon EFS、Amazon DynamoDB、Amazon RDS Proxy、Amazon Aurora Serverless、Amazon Redshift Serverless、Amazon Neptune Serverless、 Amazon OpenSearch Serverless、Amazon ElastiCache Serverless ※ただし、サーバーレスの定義として、どのサービスを含めるかは若干異なるケースもございます。 AWSのサーバーレスサービスの紹介 11 https://aws.amazon.com/jp/serverless/
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • 提供されている機能を活用することで開発スピードを向上できる。 • 豊富なサーバーレスアーキテクチャが参考にできる。 • 新規サービス開発のため、売上の見込めない段階があり、初期コストを削減したい。 従量課金モデルが相性がよい。
• アプリの運用を実施するお客様に、IT人材が不足しているため、定期的に発生する運 用業務を減らしたい。 • 拡張性、可用性が高く、柔軟であるため。 なぜ、サーバーレスを利用したのか? 12
2.サーバーレスでどんなアプリを 作ったのか? 13
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a ビル・店舗での緊急トラブル時に近くの作業員を探して、駆けつ可能な業者や作業員と マッチングできるアプリです。利用者は、トラブルを迅速に解決することができます。 ※一般の方も利用できます。 アプリの概要 14 トラブル 解決!!
近くの作業員 とマッチング
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a アプリの概要 15
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a アプリケーション構成図 16
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 開発したシステムは大きく分けて、モバイルアプリ、管理システム、サービスWebサイトに なります。 アプリケーション構成図 17 この3つです!
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a この中で利用したサーバーレス/マネージドサービスはこんな感じです! アプリケーション構成図 18
ほぼ、サーバーレスとマネージド サービスです。 19
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a サーバーレスじゃないのも。。。 アプリケーション構成図 20
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a アプリケーション構成図 21 サーバーレスだけが 全てではない
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 昨年のre:Inventでコストの話がWarner Bros.氏からありましたが、 ”LAW II.Systems that Last Align
Cost to Business.”(コストをビジネスに合わせて継続的に調整するシステ ム。)で書かれている通り、 システムの耐久性は、コストがビジネスモデルにどの程度適合しているかによって決まります。 システムを設計および構築するときは、収益源と利益の手段を考慮する必要があります。 収益を上げられる次元を見つけて、アーキテクチャが収益に沿っていることを確認することが重要です。 たとえば、電子商取引では、その次元は注文数である可能性があります。 注文が増えると、インフラストラクチャと運用コストが増加します。システムが適切に設計されていれば、スケールメ リットを活用できるので、それは問題ありません。 重要なのは、インフラストラクチャのコストがビジネスに目に見える影響を与えるということです。 建築業者として、私たちは収益について考え、その知識を選択の参考にする必要があります。 なぜなら、どんな犠牲を払ってでも成長することは、破滅の道につながるからです。 サーバーレスが全てではない。 22 https://thefrugalarchitect.com/laws/systems-that-last-align-cost-to-business.html
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a ビジネスの成長度合いによって、システムアーキテクチャの特徴を理解したのであれば、 コスト効率化を図るために、NATインスタンスを選択するのもありです。 ただし、システムアーキテクチャの特徴、例えば可用性が低下、定期的なメンテナンスの 発生など、デメリットを理解されているかどうかが重要である。 サーバーレスが全てではない。 23
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • モバイルアプリ(Flutter) ◦ 開発工数削減のため、iOS、Androidのデバイス対応のためFlutterで実装 ◦ デプロイ効率化のため、CI/CDにCodeMagicで自動リリースの仕組みを構築 ◦
バックエンド:API Gateway + Lambdaのサーバーレス構成 どんなの作ったの? 24
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • 管理画面(React/Typescript/SPA) ◦ 開発工数削減のため、デザインはCMSフレームワークを利用 ◦ フロント:CloudFront +
S3のサーバーレス構成 ◦ バックエンド:API Gateway + Lambdaのサーバーレス構成 どんなの作ったの? 25
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • サービスサイト(HTML/CSS) ◦ フロント:CloudFront + S3のサーバーレス構成 どんなの作ったの?
26
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • バックエンドAPI(golang) ◦ Swaggerを利用してAPIを定義 ◦ Github Actionでテスト実行、Lambdaへ自動デプロイ
◦ AppSyncで機密性の高いメッセージ機能を2日間で実装 どんなの作ったの? 27
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • コールセンター(Amazon Connect) ◦ 電話で受付できる仕組みを1日で作成 ◦ フリーダイヤル取得が1週間ぐらいかかった(電話番号選べなくなっていた)
◦ アプリからではなく、フリーダイヤル経由で依頼を受付 ◦ 自動音声案内から担当者へコール、電話履歴をメールに通知 どんなの作ったの? 28
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • ステータス管理(Amazon EventBridge) ◦ EventBridgeのスケジュール機能で、 ▪ お知らせのPush通知
• ユーザーに行動を促すための通知(見積もり承認や入金など) ▪ 案件ステータスの自動更新 • 期限内にユーザーがアクション(見積もり承認や入金など)を実行しなかっ た場合に強制的にステータスを変更 ▪ 各種マスタデータの洗い替え • 祝日マスタなど どんなの作ったの? 29
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • 当初、銀行振込については、システム化しない事を考えていたが、マネーロンダリング対策 のため、お金の流れをStripe内で完結させる必要があった。 ◦ Stripeを利用することで、簡単にクレジット決済から銀行振込を実装できた。 どんなの作ったの? 30
3.サーバーレスにして どうだった? 31
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • よかったこと ◦ サーバーレスアーキテクチャなどを参考にすることで、開発スピードを早めることがで きた。 ◦ サービススタート時の初期費用を抑えることができた。(ランニングコスト)
◦ お客様の要望を迅速反映できた。 ◦ ITエンジニアが不在のため、システム運用管理業務の簡素化が行えた。 ◦ サーバーレス・マネージドサービスを活用することで、今まで考える必要があった実 装方法、運用方法などの検討が減り、開発に集中できた。 サーバーレスにしてどうだっだ? 32
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • ちょっと不満だったところ ◦ 無償版のLocalStackだとDyanmoDBのデータが永続化できないため、 コンテナを落とすとデータが消える。 ◦ LocalStackでSQSからのLambda起動する環境を作るのが手間だった。
◦ 使ってるサービスがサーバーレス/マネージドサービスであるがために、 上記の事柄が発生した。 結論:AWSサービスをローカルで実現するのが面倒だった。 サーバーレスにしてどうだっだ? 33
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • アプリケーションがLambdaに依存した処理になる ◦ 解決策:いつでもLambdaを切り離せるように作っておくとよい(ロジックは切り離し てテストしやすいようにする。) ◦ 解決策:ECS
or EKSなどへの乗せ替えをしやすいようにしておく。 • Lambdaは、急激な負荷に耐えづらい ◦ 解決策:Provisioned ConcurrencyやApplication Auto Scalingの設定、 ECSへの移行 • サーバーレスは金額が高くなりがち ◦ 解決策:EC2、RDS、ECS on EC2の方が安くなる。 サーバーレスの課題 34
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • Lambdaは定期的にランタイム更新が必要 ◦ 解決策:なし • サーバーレスの場合、ローカル開発がしづらい ◦
解決策:Localstackやサービスのモック用コンテナの導入を検討 ◦ 解決策:無償版は制限があるので、有償版のLocalstackを利用する。 • Lambdaのタイムアウトの原因調査が難しい。 ◦ 解決策:Lambda側でのエラーハンドリング、X-Rayの利用 • Lambdaは、15分を超える処理には利用できない。 ◦ 解決策:ECS Farage、AWS Batch等を利用する。 サーバーレスの課題 35
4.リリースしてどうだった? 36
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a コストのお話 37
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a ユーザー数とダウンロードの推移 38
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a ユーザー数とダウンロードの推移 39 ベータ版ですが、豊島区で 29万ダウンロード目指してま す。
5.導入できなかったサービス 40
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • AWS Pinpoint ◦ Amplify SDKがうまくいかなかったのと、Flutterで実装、技術調査が難航 ◦
Firebase Cloud Messaging(FCM)の方がナレッジが豊富だった。 ◦ このあたり詳しい人教えて下さい。 • Amazon Location Service ◦ ごめんなさい、Google Maps APIの方が知見があったため。 • TiDB(AWSのサービスじゃないけどw) ◦ Aurora Serverless v3待ってます! 今回見送りしたAWSサービス 41
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a どんな体制? 42 プロジェクトリーダ/ AWSアーキテクト/テスター/その他 プロジェクトマネージャー / テックリード/バックエンドエンジニア
デザイナー/Web制作 Flutterエンジニア バックエンドエンジニア フロントエンドエンジニア 開発メンバーはフルリモートで開発!!
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a どんな体制? 43 お客様との打ち合わせ風景!? ワキアイアイとやってました! 心的安全性爆上がり中 毎月の定例での進捗報告
6.まとめ 44
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • サーバーレスは、マネージドサービスに似ている部分がたくさん。 • 新規アプリなどには、構築、運用負荷を低減し、初期コストをおさえることができるの で、サーバーレスが向いている。 • 残念ながら従量課金ではないサーバーレスサービスがあるので、ビジネスの状態によ
り、コストを優先すべきなのか、システムの可用性を優先すべきなのかを判断する。 まとめ 45
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a サーバーレスで考えること減らして、 開発をサクサク、保守をラクラクにしてビジネスにコミット! まとめ 46 Have a great
serverless development!
ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 本日はご参加いただきありがとうございました。アンケートのご記入をお願いします。 アンケートご記入のお願い 47