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
Bref でサービスを運用している話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Sugar Sato
March 25, 2026
Technology
0
12
Bref でサービスを運用している話
@Verybest LT Night #1
Sugar Sato
March 25, 2026
Tweet
Share
More Decks by Sugar Sato
See All by Sugar Sato
tool ディレクティブを導入してみた感想
sgash708
1
250
DeepWiki で Go をもっと好きになろう
sgash708
0
980
環境変数ライブラリ選手権
sgash708
0
240
はじめての Go * WASM * OCR
sgash708
1
390
もう僕は OpenAPI を書きたくない
sgash708
6
2.5k
【懺悔】1年目 EM の失敗から学ぼう
sgash708
0
230
testcontainers のススメ
sgash708
1
490
「僕ら」のテストに対する向き合い方
sgash708
5
500
spansql で ENUM を使いたかった話
sgash708
2
280
Other Decks in Technology
See All in Technology
It’s “Time” to use Temporal
sajikix
3
240
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
13k
"作る"から"使われる"へ:Backstage 活用の現在地
sbtechnight
0
230
CyberAgentの生成AI戦略 〜変わるものと変わらないもの〜
katayan
0
280
20260321_エンベディングってなに?RAGってなに?エンベディングの説明とGemini Embedding 2 の紹介
tsho
0
130
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
100
Agent Skill 是什麼?對軟體產業帶來的變化
appleboy
0
150
AIエージェント×GitHubで実現するQAナレッジの資産化と業務活用 / QA Knowledge as Assets with AI Agents & GitHub
tknw_hitsuji
0
100
Kiroで見直す開発プロセスとAI-DLC
k_adachi_01
0
110
A Casual Introduction to RISC-V
omasanori
0
510
1GB RAMのラズピッピで何ができるのか試してみよう / 20260319-rpijam-1gb-rpi-whats-possible
akkiesoft
0
650
ABEMAのバグバウンティの取り組み
kurochan
1
150
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
110
Fireside Chat
paigeccino
42
3.8k
Paper Plane
katiecoart
PRO
0
48k
From π to Pie charts
rasagy
0
150
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
Done Done
chrislema
186
16k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
YesSQL, Process and Tooling at Scale
rocio
174
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
68
38k
Side Projects
sachag
455
43k
Transcript
Date:2026.3.25 Bref でサービス運用している話 @Verybest LT Night #1
自己紹介 菅 直也 (@satoIsSugar) • Serverless • 植物 • アガベ
• ビカクシダ • 猫 • Lambda (♀4歳)
oralis は矯正歯科治療に特化した、クラウド型口腔内写真管理ソフトウェアです。 治療にとって重要な写真を管理するだけではなく、クリニックの経営管理にも役立ち ます。 oralis について 口腔内写真管理 経営管理 口腔内写真を時系列に配列することで、患者様だけではなく、 矯正医にとっても治療経過をわかりやすく管理が可能です。
現在クリニックに何人動的処置の方がいて、何人保定治療の方がいる のか?などクリニックの状態を数値で把握できるようになります
口腔内写真管理 6 患者さんだけではなく、 矯正医にとっても、見やすい設計 時系列に写真を配列することで、患者さんの治療の進 捗をわかりやすく把握・プレゼンできます
経営管理 7 クリニックの 現在状況をレポート 月々の来院数(相談数)動的治療中の人数、保定移行の患 者様の数を調べる事で、クリニックのキャパシティーを把握 できます
矯正治療に特化した仕様 8 症例検索に必要な分類が可能 類似症例や症例検討に役立つ、検索機能を実装 クリニックの資産である口腔内写真の価値を最大化します
資料作成機能 9 組写真の作成、印刷にも対応 過去から現在までの比較写真資料も簡単に作成可能です 5枚法、6枚法、口腔内・顔面写真などの組写真
ところで、この oralis 実はサーバーレスで動いています!
PHP でサーバーレス、 やったことありますか?
目次 01 Bref とは 02 なぜ Bref を選んだか 03 アーキテクチャ
04 構築と運用 05 コスト 06 メリット・デメリット 07 まとめ
01 Bref とは
• PHP を AWS Lambda で動かすための OSS フレームワーク • Lambda
Layer として PHP ランタイムを提供 • Laravel / Symfony をそのまま動かせる • serverless.yml で構成管理 • GitHub Stars: 4k+ Bref とは
• php-84-fpm ◦ Web API(FPM ベース、HTTP リクエスト処理) • php-84-console ◦
CLI(artisan コマンド実行) • php-84 ◦ Worker(SQS などのイベント処理) • 拡張レイヤーも提供(GD, Imagick 等) • Amazon Linux 2 / ECR イメージ対応 Bref が提供するランタイム
• EC2 / ECS ◦ サーバー管理必要 ◦ 常時課金 ◦ 運用負荷高め
• Bref (Lambda) ◦ サーバー管理不要 ◦ リクエスト単位課金 ◦ 運用負荷低め 従来の PHP ホスティング vs Bref
02 なぜ Bref を選んだか
少人数チームで 本番運用したい!
• チーム ◦ エンジニア少人数 • 既存資産 ◦ PHP (Laravel) のコードベース
• 課題 ◦ インフラ運用に割けるリソースがない • 要件 ◦ コストを抑えつつ本番運用したい 選定時の状況
• インフラの選択肢 ◦ EC2: 運用負荷 高 / コスト 中〜高 /
自由度 高 ◦ ECS Fargate: 運用負荷 中 / コスト 中 / 自由度 高 ◦ Lambda: 運用負荷 低 / コスト 低 / スケーリング自動 ◦ Lambda を選択 • Lambda 上の FW の選択肢 ◦ Laravel Vapor: 運用負荷 低 / 月$399〜 / Laravel公式 ◦ Bref: 運用負荷 低 / 無料(OSS) / 自由度 高 ◦ Bref を選択 選択肢の比較
• OSS で無料 — Vapor は月額 $399〜 • serverless.yml で完結
— インフラ定義がシンプル • Laravel がそのまま動く — コード変更最小限 • PHP ランタイムを選ぶだけ — 学習コスト低い • コミュニティが活発 — ドキュメント充実 Bref に決めた理由
• 基本的にコード変更は最小限で移行できる ◦ Bref Laravel Bridge が自動統合 → サービスプロバイダ追加不要 •
composer require bref/bref bref/laravel-bridge bref/extra-php-extensions • ストレージ ◦ デフォルトを S3 に変更(Lambda は読み取り専用) • キャッシュ・セッション ◦ database に変更(ファイル不可) • キュー ◦ SQS に変更 + Bref\LaravelBridge\Queue\QueueHandler • ログ ◦ stderr に出力(→ CloudWatch Logs) Bref 導入後の Laravel 側の対応
全体構成図
03 アーキテクチャ
• Web API ◦ php-84-fpm (ECR) ◦ タイムアウト 28秒 ◦
HTTP リクエスト処理 • Console ◦ php-84-console ◦ タイムアウト 720秒 ◦ artisan コマンド • Queue Worker ◦ php-84 + GD ◦ タイムアウト 300秒 ◦ 画像圧縮・変換 Lambda 関数は 3 種類
• Lambda × RDS の「コネクション爆発」問題 ◦ Lambda はリクエストごとにインスタンスが起動 • 同時接続数が一気に増える
• RDS の max_connections を超えてしまう ◦ RDS Proxy でコネクションをプーリングして回避 なぜ RDS Proxy?
• 2 つの User Pool で運用 ◦ Web User Pool
▪ クリニックユーザー向け(カスタム属性: clinic_id) ◦ Admin User Pool ▪ 管理者向け • Bearer トークンを Laravel ミドルウェアで検証 • clinic_id でデータのテナント分離 認証: AWS Cognito
• ユーザーが写真アップロード → API (Lambda) → S3 に保存 • PhotoCompressionJob
を SQS に投入 • Queue Worker (Lambda + GD) で処理 • 1MB 以上は JPEG 品質 25% に圧縮 • PNG/TIFF → JPEG 変換 • 圧縮済み画像を S3 に再保存 画像処理パイプライン
04 構築と運用
• provider ◦ aws / region: ap-northeast-1 • runtime ◦
provided.al2 (ECR Image) • VPC 内に配置(RDS アクセスのため) • api ◦ ECR イメージ / timeout 28s • console ◦ php-84-console / timeout 720s • jobs ◦ Queue Worker + GD Layer serverless.yml のポイント
None
• FROM bref/php-84-fpm • COPY --from=bref/extra-gd-php-84 /opt /opt • COPY
. /var/task • CMD ["public/index.php"] • たった 4 行で PHP 8.4 + GD の Lambda 環境が完成 Dockerfile
• GitHub push/tag → GitHub Actions • composer install --no-dev
• sls deploy --stage {env} • sls bref:cli --args="migrate --force" • Slack 通知 • staging ◦ ブランチ push で自動デプロイ • production ◦ タグで自動デプロイ デプロイフロー
• dev / stg / prod を 1 つの serverless.yml
で管理 • config.dev.yml ◦ APP_ENV: development • config.stg.yml ◦ APP_ENV: staging • config.prod.yml ◦ APP_ENV: production • 秘密情報: AWS SSM Parameter Store に格納 環境管理
• GD拡張の追加 ◦ brefphp/extra-php-extensions を Layer で追加 • Bref独自のphp.iniが存在 ◦
カスタムphp.iniが上書きされない • 自分のphp.iniを適用するには /opt/bref/etc/php/conf.d/ に配置 • ドキュメントが少なく手探りで解決 つらみ: PHP拡張とphp.ini
• Serverless Framework v4 がリリース(2024/05/22) ◦ CIが翌日から壊れた... ◦ Bref が
sls v4 に未対応だった ▪ v3 にダウングレード • serverless-lift(SQS構築に必要)も v3 依存 ◦ bref も lift も v4 未対応で、バージョン上げられない辛さ • frameworkVersion: '^3.28.1' でピン留めして運用中 つらみ: Serverless Framework v4 問題
• Dockerfile の配置場所 ◦ ./docker/bref/Dockerfile に置くとデプロイは成功するが、 COPYしたリソースにアクセスできない ◦ ルートに配置で解決 •
VPC 内 Lambda = NAT 必須 ◦ NAT Gatewayは高い... ◦ NAT Instance (t2.micro) でコスト削減 • タイムアウト設計 ◦ API Gateway 29秒 > Lambda 28秒にする ◦ 画像処理は Queue Worker に逃がす(最大 300秒) • コールドスタート ◦ ECR イメージは Layer より起動が遅い → 初回アクセスに注意 ハマりポイント
05 コスト
月額 $717(税込)の内訳 サービス 月額 備考 S3 $239.74 写真ストレージ Glue $104.56
写真エクスポート CloudFront $97.47 CDN RDS $97.03 MySQL Multi-AZ Tax $65.19 消費税 VPC $58.13 NAT Instance CloudWatch $28.44 ログ EC2 $21.39 NAT Instance / 踏み台 API Gateway $1.97 HTTP API Lambda $0 計上なし
Lambda のコスト:$0 API Gateway も $1.97 サーバーレスのコンピュート費用はほぼゼロ
サービス特性コスト vs インフラコスト 区分 金額 割合 サービス特性(S3 + Glue) $344
48% Tax $65 9% 純粋なインフラコスト $307 43%
06 メリット・デメリット
• コスト ◦ コンピュート費用がほぼゼロ • スケーリング ◦ トラフィック増減に自動対応 • 運用負荷
◦ サーバー管理不要、パッチ適用不要 • デプロイ ◦ sls deploy で完了、ロールバックも簡単 ▪ 中身は CloudFormation なのでわかりやすい • Laravel がそのまま動く ◦ コード変更最小限で移行可能 メリット
• コールドスタート ◦ 初回リクエストに数秒かかる • タイムアウト制約 ◦ API Gateway 29秒の壁
• VPC 内 Lambda = NAT 必須 ◦ NAT Instance でコスト軽減しているが外部通信には必要 • ローカル再現 ◦ Lambda 環境の完全再現は難しい → Docker Compose で代替 • デバッグ ◦ CloudWatch Logs ベース デメリット
07 まとめ
• PHP でもサーバーレスで本番運用できる(Bref + Laravel) • 少人数チーム*小規模プロダクトこそサーバーレス(インフラ運用を最 小化) • コンピュート費用はほぼ
$0(月 $307 で SaaS 運用) • トレードオフはある(コールドスタート、タイムアウト制約) まとめ
Date:2026.3.25