開発/本番一致
Twelve-Factor App の原則で、開発・ステージング・本番環境の差異を最小化する
開発/本番一致とは
開発/本番一致 (Dev/Prod Parity) は、Twelve-Factor App の第 10 原則で、開発・ステージング・本番環境の差異を最小化し、「開発環境では動くが本番では動かない」問題を防ぐ。
3 つのギャップ
3 つのギャップを以下にまとめる。
| ギャップ | 従来 | Twelve-Factor |
|---|---|---|
| 時間 | 開発からデプロイまで数週間 | 数時間〜数日 |
| 人 | 開発者が書き、運用者がデプロイ | 開発者がデプロイ |
| ツール | 開発は SQLite、本番は PostgreSQL | 同じツールを使う |
環境差異の例
環境差異の例を図で示す。
❌ 開発と本番で異なるサービス:
開発: SQLite, ローカルファイル, メール出力
本番: PostgreSQL, S3, SES
✅ 同じサービスを使う:
開発: PostgreSQL (Docker), S3 (LocalStack), SES (MailHog)
本番: PostgreSQL (RDS), S3, SES
Docker Compose で本番に近い開発環境
Docker Compose で本番に近い開発環境の例を示す。
services:
app:
build: .
environment:
DATABASE_URL: postgresql://admin:secret@db:5432/myapp
AWS_ENDPOINT: http://localstack:4566
db:
image: postgres:16
localstack:
image: localstack/localstack
environment:
SERVICES: s3,dynamodb,sqs
SAM Local
SAM Local の例を示す。
# Lambda をローカルで実行 (本番と同じランタイム)
sam local invoke MyFunction --event event.json
# API Gateway をローカルで起動
sam local start-api
環境変数で差異を吸収
環境変数で差異を吸収のコード例を示す。
// 環境変数で接続先を切り替え (コードは同一)
const endpoint = process.env.DYNAMODB_ENDPOINT; // ローカル: http://localhost:8000
const client = new DynamoDBClient(endpoint ? { endpoint } : {});
環境ごとの設定
環境ごとの設定を以下にまとめる。
| 設定 | dev | prod |
|---|---|---|
| ログレベル | DEBUG | WARN |
| キャッシュ | 無効 | 有効 |
| DynamoDB | オンデマンド | オンデマンド |
| CloudFront キャッシュ | 無効 | 有効 |
コードは同一、設定のみ環境変数で切り替える。
開発/本番一致の関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
Twelve-Factor App
クラウドネイティブなアプリケーションを構築するための 12 の設計原則
Dev Container
Docker コンテナ内に開発環境を定義し、チーム全員が同一の環境で開発できる仕組み
Docker Compose
複数のコンテナをまとめて定義・起動するツールで、ローカル開発環境の構築に使われる
環境構築
開発や実行に必要なツール・設定を整える作業。再現性の確保が品質を左右する
Blue/Green デプロイ
2 つの同一環境を用意し、トラフィックを切り替えることでゼロダウンタイムデプロイを実現する手法
DevOps
開発チームと運用チームの協働を促進し、ソフトウェアのデリバリーと品質を継続的に改善する文化・プラクティスの総称
関連する記事
技術書を読む最適な場所はどこか - 喫茶店、図書館、自宅の科学
喫茶店の雑音が集中力を高める理由、図書館の静寂が深い思考を促す仕組みなど、読書環境が技術書の理解度に与える影響を科学的知見とともに解説します。
本を読む前にパソコンの準備をしておこう
プログラミングの本を読み始めてから「環境構築ができない」と詰まる人が多いです。本を開く前にやっておくべき準備を、初心者向けにわかりやすく説明します。
カフェで技術書を読むと集中できる科学的理由 - おすすめの読書環境
家だとスマホに手が伸びるのにカフェだと集中できるのはなぜか。適度な雑音 (70dB) と場所の切り替えが集中力を高めるメカニズムと、読書に向くカフェの条件を紹介。