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
ビジネス要件から逆算するマイクロサービスアーキテクチャ選定の「思考プロセス」
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
akira345
March 27, 2026
Technology
74
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ビジネス要件から逆算するマイクロサービスアーキテクチャ選定の「思考プロセス」
おもにクラウドの話してます - 広島 #6 発表スライドです。
akira345
March 27, 2026
More Decks by akira345
See All by akira345
インシデント対応
akira345
0
480
えれくら!〜電気電子工作系制作・交流会〜#29
akira345
0
48
脱・同期処理!マイクロサービスにおける負荷分散の勘所
akira345
0
140
AWSデプロイツール紹介
akira345
0
86
40歳でやったこと
akira345
0
61
回路を読むために必要なこと
akira345
0
52
おれのAWSがこんなに辛い訳がない!!
akira345
0
56
Dockerを触ってみよう
akira345
0
120
アラフォー世代が基板を作ってみた(公開用)
akira345
0
170
Other Decks in Technology
See All in Technology
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
520
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
120
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.9k
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
830
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
110
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
160
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
720
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
140
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
130
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
WCS-LA-2024
lcolladotor
0
620
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
Are puppies a ranking factor?
jonoalderson
1
3.5k
Building an army of robots
kneath
306
46k
Transcript
2026/03/27 Akira345 おもにクラウドの話してます - 広島 #6 ビジネス要件から逆算する マイクロサービスアーキテクチャ選定の 「思考プロセス」
自己紹介 • 金田 晃(HN) • 所属:某社 • I like Cloud.
I like AWS. • 自宅サーバ(Docker、Proxmox、Hyper-V) • 電子工作(分解・破壊・修理) 個人検証を地味にやっていたりします・・・
題材: IP電話サービスの録音データ蓄積システム構築 • 背景 • トラブル防止のため通話録音とトランスクリプトを証跡として残したい • 利用中のIP電話サービスの録音保存期間が短い(保存期間1ヶ月 or 300時間/月)
• 録音ファイル永続化オプションが高額なので、自前で蓄積・管理をしたい • 使用中のIP電話サービスは外部API連携が可能
ふむふむ 色々気になるけど とりあえず王道パターンを想定するか
要件整理
王道パターンで仮置き トリガとデータ取得方式。データ保存戦略 • 終話をトリガにWebHookを呼び出せるなら、イベント駆動でデータ取得が可能 • API Gateway or HTTP API
+ Lambda or ECS が候補。EC2やk8sは不要 • 取得対象は音声ファイルとトランスクリプトの2種類 • WAV/MP3いずれにしてもファイルサイズは問題にならない • 永続保管が目的なので、保存先はS3が最適 • ライフサイクルポリシーで費用面も有利 • ファイル名の命名規則やパスの設計が重要。通話頻度やユースケースの確認が必要
ここでの視点 お客様の言葉を「非機能要件」に翻訳する 「証跡を残したい」 • 可用性・完全性が最優先 • 欠損は極力避ける • 証跡を残す事が主目的→検索性は優先度 が低い
「費用を抑えたい」 • AWSマネージドサービス活用 • 運用コスト最小化 • インフラ費用の削減 「1ヶ月/300hで消える」 • 取得時間は十分にある • リアルタイム性は不要 • 非同期処理で十分可能
技術検証
技術面での深掘り 連携先APIの仕様把握と制約の可視化 • APIレート制限の確認 • 秒間10回の制約あり → バースト時のリトライ戦略が必要 • データ取得におけるAPIの依存関係
• WebHookのリクエストは識別子のみ(音声・トランスクリプトファイルは含まれない) • 音声ファイルは架電・受電側で分かれている トランスクリプト取得も合わせると1トリガに対し3つのAPIコールが必要 • トランザクション管理の視点が必要 • 3つのAPIコールの部分成功時にどう扱うか?冪等性をどう持たせるか? • 開発環境の制約 • 開発環境用のサンドボックスAPIや環境提供はあるか?要確認
選定の分岐点 単一Lambdaかステートマシン(StepFunctions)か 複数のAPIを組み合わせて呼び出す必要がある。どう設計するか? 単一Lambda構成 1つのLambda内で3つのAPIを叩く ✓ シンプル構成 ✗ 処理時間増大に伴う ラムダのタイムアウト
✗API呼び出しの部分失敗の考慮 StepFunctions構成 各API取得Lambdaを並列実行 ✓ 監視・リトライ制御が容易 ✗ 構成要素が増える ✗構築が職人芸になりがち SQS/SNS + 複数Lambda キュー経由で分散実行 ✓ 疎結合 ✗ メリット少なく複雑化
現実的なアプローチ 技術自慢に囚われていないか? • 個人的にはステートマシンを組みたい! • しかし現実的にはどうか? • 音声ファイルは多くても100MB程度。ほとんどは数MBでダウンロード時間は問題にならない • 失敗しても再取得の時間的猶予は十分にある
• Lambda内リトライ不要 → SQSキュー制御でOK • API部分成功時は再実行で上書きすればよく、ゴミファイル掃除の考慮も不要 • 取得済みファイルの再取得もダウンロード時間は問題にならない • 取得済みファイルについて、API側で自動消去されることもないため再取得で問題なし • → 単一Lambda構成で十分可能
設計と実装
None
設計の勘所 失敗を前提としたシステム構成 API Gateway → SQS 直接接続 • WebHookに即座にステータス200を応答 •
バースト時の取りこぼし防止にキューイング (API Gatewayのスループット注意!) • 非同期処理でLambdaタイムアウト回避 (API Gateway 30秒制約回避) • DLQ通知による手動リトライ構成 • 冪等性はファイル上書きで担保 不正アクセス対策 • WebHookには不正リクエストの可能性あり • 無効IDは処理スキップ+成功応答 • 無駄なリトライを回避する設計
運用を見据えたデータ設計 人間系処理からシステム化まで • S3ディレクトリ構成は YYYYMM/DD で人間の探索性+将来のDynamoDBパス格納を両立 • 現在のS3はPrefixのランダム性が不要なため、ハッシュ値より視認性を優先 • ファイル名は
[開始時刻]_[通話ID(電話番号+識別子)].[拡張子] を想定 • 証跡検索時の情報は「いつ」「だれ」→ 並び替え・人間による探索を容易にする設計 • 将来的にライフサイクルポリシーによる自動アーカイブにも対応可能 • S3 Standard → S3 Glacier へ自動移行でストレージコストを削減
まとめ
思考のポイント 外部連携は「失敗前提」で設計する • APIのリクエスト耐性を確認 • 回復可能エラーの判別が可能か?リトライ戦略 • 代替手段・リカバリプランの確保 将来性・拡張性を想定する •
システムの制約を把握した上で拡張性を確保 • 将来の検索要件や拠点追加に対応可能か 運用監視のコスト判断 • 運用監視にかけるコストの見極め • あえて作らない選択肢もある(RPA/AI等) 開発・検証はセット • 本番と同じ挙動を再現できるか? • 本番環境でしか検証できない場合どうする?
アーキテクチャ選定の本質 ビジネス要件を技術で実現する • フワッとした要件を制約に基づき現実的 なアーキテクチャに落とし込む 最善の選択をする • 「俺が考えた最強のシステム」ではなく 業務要件を満たす運用可能な最善を選ぶ •
「機能要件を満たすこと」が最低限。 頼まれてもいない最強のシステムは蛇足 外部連携が入ると警戒すべし • 外部連携の境界は責任分解点 • 失敗前提の設計 • 思い込みを排除し「常識」のすり合わせ を怠らない