家庭用のペット監視システムとして、Raspberry Piで撮影した動画をクラウドストレージに保存し、Webブラウザから安全に閲覧できるシステムを設計・開発しました。セキュリティを重視し、家族限定のアクセス制御とコスト最適化を両立したサーバーレスアーキテクチャを採用しています。
課題: 家族のみがアクセスできる強固な認証システムが必要
解決策: mTLS(相互TLS認証)の採用
- API GatewayのネイティブmTLS機能を活用
- クライアント証明書による相互認証を実装
- 自己署名CA証明書の管理体制を構築
課題: 24時間稼働するサーバーのコストを削減
解決策: 完全サーバーレスアーキテクチャ
- API Gateway + S3によるプロキシ構成
- Lambda関数最小化(通知機能のみ)
- 30日自動削除によるストレージコスト制御
課題: 新しい動画アップロード時の即座な通知
解決策: Web Push通知システム
- S3イベント → Lambda → Web Push APIの連携
- VAPID方式による標準準拠の実装
- PWA対応でアプリライクな通知体験
- IaC: Terraform による再現可能なインフラ管理
- クラウド: AWS (API Gateway, S3, Lambda, Route 53, ACM)
- 認証: mTLS + クライアント証明書
- 技術: バニラJavaScript(フレームワーク非依存)
- PWA: Progressive Web App対応
- UI: レスポンシブデザイン、日本語対応
- 認証: mTLS相互認証
- アクセス制御: IAMロールベース最小権限
- データ保護: S3プライベートバケット + API Gatewayプロキシ
- 長期保守性を重視し、外部依存を最小化
- バニラJavaScriptによるシンプルな実装
- ビルドプロセス不要で軽量な構成
- Raspberry Pi用アップロードスクリプトの自動化とcronによる定期実行
- index.jsonメタデータの自動更新
- Terraformによるインフラのコード化
- サムネイル表示による初期ロード高速化
- 静的ファイル配信によるレスポンス向上
- クライアントサイドキャッシュ活用
- Web Push API(VAPID)による通知実装
- Service Workerを活用したオフライン対応
- PWAマニフェストによるアプリ体験
- セキュリティ: 証明書ベースの強固な認証システム
- 可用性: AWSマネージドサービスによる高可用性(99.99%+)
- 保守性: 依存関係最小化による長期保守性確保
- メンテナンスフリー: サーバー管理不要
- ユーザビリティ: PWA対応によるアプリライクな体験
- 自動化: デプロイからライフサイクル管理まで完全自動化
- インフラ: AWS (API Gateway, S3, Lambda, Route 53, ACM), Terraform
- 認証: mTLS, X.509証明書, 自己署名CA
- フロントエンド: JavaScript (ES6+), HTML5, CSS3, PWA
- 通知: Web Push API, VAPID, Service Worker
このプロジェクトを通じて、「完璧を求めず、実用的な解決策を見つける」 ことの重要性を強く実感しました。技術的に理想的でなくても、要件を満たし運用可能なソリューションこそが価値を生み出すということを、数々の課題解決を通じて学びました。
また、個人開発におけるドキュメント化の価値も改めて認識しました。Obsidianを活用した実装履歴の記録により、後から振り返っての知見整理や、類似課題への対応が格段に効率化されました。
技術面では、クラウドネイティブ設計の奥深さを実感しました。単純にサービスを組み合わせるだけでなく、各サービスの特性を理解し、制約の中で最適解を見つけることの難しさと面白さを感じました。特にAPI Gatewayの柔軟性とS3の信頼性を組み合わせたアーキテクチャは、シンプルでありながら実用的なソリューションとなりました。
このプロジェクトで得た経験は、今後のシステム設計において、技術選定の判断力や実装における妥協点の見極めに大きく活かせると確信しています。
トップへ