Django + DRF + Docker + PostgreSQL を使った EC システムにおける DevOps の活用
⚙️ はじめに
スマートフォン向け EC アプリのバックエンドとして Django + Django REST Framework (DRF) を利用する場合、
最も重要なのは「安定性と継続的なデプロイ」です。
商品情報、カート機能、決済システムなど頻繁に更新が発生するため、
わずかな不具合でもユーザー体験に影響を与えてしまいます。
その課題を解決するのが DevOps(デブオプス)。
開発(Development)と運用(Operations)を統合し、
テスト・ビルド・デプロイ・監視を自動化するアプローチです。
🧱 システム概要
技術構成:
- バックエンド: Django + DRF(モバイルアプリ向け API)
- データベース: PostgreSQL
- コンテナ: Docker + Docker Compose
- デプロイ: GitHub Actions → AWS EC2 / DigitalOcean
- 監視: Prometheus + Grafana
🎯 目的:
CI/CD と監視を導入し、安定した API ベースの EC システムを実現する。
🔄 DevOps ワークフロー概要
flowchart TD
A["Developer Commit (GitHub)"] --> B["CI Pipeline (GitHub Actions)"]
B --> C["Build Docker Image"]
C --> D["Run Unit & API Tests (pytest + DRF client)"]
D --> E["Push to Registry (Docker Hub / ECR)"]
E --> F["Deploy via Docker Compose / K8s"]
F --> G["Monitor with Prometheus + Grafana"]
🧩 ステップ1:Continuous Integration(継続的インテグレーション)
開発者が GitHub にプッシュするたびに、自動でテストを実行。
例:.github/workflows/ci.yml
name: Django CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:14
env:
POSTGRES_DB: ecommerce
POSTGRES_USER: django
POSTGRES_PASSWORD: password
ports: ['5432:5432']
env:
DATABASE_URL: postgres://django:password@localhost:5432/ecommerce
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run Tests
run: pytest -v
✅ 効果:
不安定なコードが本番に入る前に検出でき、API の信頼性が大幅に向上します。
🚀 ステップ2:Continuous Delivery(継続的デリバリー)
CI に成功すると、コードが自動的に Docker イメージとしてビルド・デプロイされます。
Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "core.wsgi:application", "--bind", "0.0.0.0:8000"]
docker-compose.yml
version: '3'
services:
web:
build: .
container_name: ecommerce_api
command: gunicorn core.wsgi:application --bind 0.0.0.0:8000
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:14
environment:
POSTGRES_DB: ecommerce
POSTGRES_USER: django
POSTGRES_PASSWORD: password
🟢 ポイント:
CI → Docker ビルド → レジストリへのプッシュ → サーバーへ自動デプロイ
すべてが自動化されるため、リリースサイクルが劇的に短縮されます。
🧪 ステップ3:自動テスト(Automated Testing)
pytest と DRF の APIClient を利用して API の動作を検証。
from rest_framework.test import APIClient
def test_product_list(api_client):
client = APIClient()
response = client.get("/api/products/")
assert response.status_code == 200
assert isinstance(response.json(), list)
🧠 ヒント:
本番デプロイ前にすべての API テストを実行し、
モバイルアプリが常に正しく通信できる状態を保証します。
🧰 ステップ4:Infrastructure as Code(IaC)
Terraform や Ansible を使い、サーバー・ネットワーク・DB をコードで構築。
例:Terraform
resource "aws_instance" "backend" {
ami = "ami-0f3e2d1e1d33b3b57"
instance_type = "t3.medium"
tags = { Name = "django-ecommerce" }
}
📦 利点:
環境構築の再現性が高く、ステージングと本番を同一設定で展開できます。
📊 ステップ5:モニタリングとログ分析
Prometheus + Grafana を導入して可視化。
監視対象:
- API レイテンシ
- リクエスト数 / 秒
- DB コネクション数
- CPU・メモリ使用率
⚠️ アラート例:
「/checkout API の応答時間が2秒を超過 — DB の負荷が疑われます」
ログは ELK Stack(Elasticsearch, Logstash, Kibana) に送って詳細分析も可能です。
🔒 ステップ6:セキュリティと環境管理
- GitHub Secrets または AWS SSM に環境変数を安全に保管
.envファイルを Docker 内で読み込む(Git にはコミットしない)- SSH アクセスを制限
例:.env
DEBUG=False
DATABASE_URL=postgres://django:password@db:5432/ecommerce
SECRET_KEY=production_key_here
📱 ステップ7:モバイルアプリとの連携
Django REST Framework で作成した API はモバイルアプリの中核として動作。
機能例:
- ログイン/ユーザー登録
- 商品一覧/カート/決済
- JWT 認証・API バージョン管理(例:
/api/v1/,/api/v2/)
CI/CD により:
API 更新があっても、既存アプリは問題なく動作を継続できます。
🌐 システム構成図
graph TD
APP["モバイルアプリ"] --> API["Django REST Framework API"]
API --> DB["PostgreSQL"]
API --> CACHE["Redis / Celery Worker"]
API --> MON["Prometheus + Grafana"]
DEV["CI/CD Pipeline (GitHub Actions)"] --> API
API --> DOCKER["Docker Container on EC2"]
🧭 DevOps 導入によるメリット
| メリット | 内容 |
|---|---|
| 🚀 リリース速度の向上 | 自動化されたパイプラインで迅速デプロイ |
| ✅ 品質の安定 | 自動テストで不具合を早期検出 |
| 🔒 高いセキュリティ | シークレット管理と安全なアクセス制御 |
| ⚙️ スケーラビリティ | IaC による容易なスケールアップ |
| 📈 可視化 | ダッシュボードでリアルタイム監視可能 |
Get in Touch with us
Related Posts
- Agentic AI と MCP サーバー:インテリジェント・オートメーションの次なる進化
- AIがアジャイル開発の課題をどのように解決するか
- TAKとWazuhを連携し、リアルタイムの脅威認識を実現する
- Wazuhによるマルチサイト・ネットワークセキュリティ監視のスケーリング
- なぜERPプロジェクトは失敗するのか ― 成功のための10のポイント
- テクノロジーで強いコミュニティをつくる方法
- AIがオープン動物園をもっと楽しく、スマートで学びのある場所に変える
- 工場スクラップのための最適なリサイクル工場を選ぶ方法
- 現代のデータベース技術を理解する — 最適なデータベースの選び方
- エッジが未来を変える — 2025年に知っておきたい Edge & Distributed Computing
- NVIDIAと2つの波:クリプトからAIへ ― バブルを乗りこなす芸術
- 手動からAI主導の航空電子メンテナンスへ
- Excelテンプレートから検査証明書を自動生成するシステム
- SimpliPOS(COFF POS):カフェのために設計されたシンプルで使いやすいPOSシステム
- Alpine.jsで作るローカルファーストWebアプリ — 高速・プライバシー重視・サーバーレス
- 🌍 Carbon Footprint Calculator(リサイクル版)— リサイクルによるCO₂削減量を見える化
- Recycle Factory Tools — リサイクル業務をもっとシンプルに
- ランニングフォーム・コーチ — メトロノーム/タッパー/ドリルタイマー/姿勢チェック
- カーボンクレジット計算ツールを作る方法
- SimRoomで理想の部屋に変身:AIが叶えるインテリアデザイン













