あなたのスタートアップに複雑なクラウドインフラは本当に必要か?
(hadijaveed.me)複雑なクラウドインフラは本当に必要か?
- Pieter LevelsがLex Friedman Podcastで語っていた内容を聞いて、多くの気づきを得た
- Pieterは単一サーバーでアプリケーションを運用し、成功したマイクロSaaSビジネスを築いた
- クラウドインフラの複雑さを避け、プロダクト・マーケット・フィットに集中することが重要
- すべてのスタートアップに当てはまるわけではないが、複雑さのための複雑さは避けるべき
最近の観察
プロジェクト 1: Lambdaの過負荷
- 20〜30個のLambda関数でさまざまなサービスを運用
- SQSとLambdaを使ったバックグラウンド処理
- CloudWatchに分散したログ
結果: デバッグが難しく、変更もしづらく、デプロイも複雑。単一のNodeJSコンテナ、またはPython Flask/FastAPIアプリとRedisで単純化できたはず
プロジェクト 2: マイクロサービスの混乱
- Kubernetes (EKS) 上で7つの小さなマイクロサービスを運用
- CRUDとビジネスロジックのためにサービスを分離
結果: インフラ管理により多くの時間を費やしていた。ここまでの分離が本当に必要だったのか疑問
単一サーバー構成の力
- 現代のサーバーは強力。Hetzner、latitude.shでは低価格で高性能なVMを提供している
- GCP VMやEC2インスタンスも妥当な価格
- 40GB RAMとマルチコアを備えた強力な計算能力を提供
- すべてが中央集約され、管理しやすい
- 数百万QPSへスケールする問題は後から対処できる
単一VM構成に必要なもの:
- 強力なマシン (EC2、GCP VM、Hetznerなど)
- 安全なアクセス (HTTPS、IP制限付きSSHまたはSSM)
- 無停止デプロイのためのCI/CD
- DNS設定
- 定期的なデータベースバックアップ
- 待機VMによる冗長性の確保
Docker Compose
- Docker Composeはローカル開発に最適
- 複数のサービスを単一コマンドで管理可能
- 本番環境ではあまり使われない
- 更新時にダウンタイムが発生する可能性がある
Docker Compose Anywhere: 週末プロジェクト
- Docker Compose Anywhereを週末のあいだに開発
- 次の機能を提供:
- GitHub ActionsによるワンクリックLinuxサーバー設定
- GitHub Container RegistryとDocker Rolloutを利用した無停止デプロイ
- 環境変数とシークレット管理 (
ageまたはsopsの利用を検討) - GitHub Actionsによる自動化されたPostgresバックアップ
- 単一VMでのマルチアプリ対応
- TraefikとLet's Encryptによる自動SSL
いくつかの考慮事項
セキュリティのために:
- 厳格なファイアウォールルールを設定する (必要なポートのみ開放)
- SSHキーを安全に管理する (AWSではSSM、GCPではCLIを推奨)
- セキュリティ強化のための踏み台ホストの利用
- シークレット保護とWAFまたはCloudflareの利用を検討
データ保護:
- 暗号化されたデータベースバックアップを安全なクラウドストレージへ転送する (例: S3)
- 追加の冗長性のためにディスクスナップショットを定期的に作成
- バックアップとスナップショットに対する保持ポリシーを実装
GN⁺のまとめ
- この記事は、スタートアップが複雑なクラウドインフラを避け、シンプルな構成でプロダクト・マーケット・フィットに集中すべきだと強調している
- 単一サーバー構成の利点と、Docker Composeを活用した簡単なデプロイ方法を紹介している
- 複雑なインフラ管理に時間を浪費せず、中核となるプロダクト開発に集中することが重要
- 類似した機能を持つプロジェクトとしては、Heroku、DigitalOceanなどがある
1件のコメント
Hacker Newsのコメント
多くのプロジェクトで最新技術を使おうとするチームは、質の低い成果物を作ってしまうことが多い
小規模なスタートアップでは、単一のVMで nginx、webapp、postgres、redis などを運用している
SaaSを単一サーバーで始めて、複数サーバーへ拡張している
Kubernetesの中核機能であるデプロイ、Podサービス、ブルーグリーンデプロイなどは有用である
多くの人がKubernetesを学ぶために複雑なインフラを構築している
マイクロサービスの本でも「まずモノリスを構築せよ」と勧めている
複雑なフレームワークを最初から選ぶことは推奨されない
クラウドでは VM、ブロック/ブロブストレージ、DNS、IdP、ドメインレジストラだけを使っている
6年間、単一の月額10ドルのVPSでプロジェクトを運用している
クラウドベースのソリューションを好むが、選択的に使っている