Bot

開発記録#149(2025/3/25)「論文ベースのbot開発フローpart.11」

2025年3月25日

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。

🚀 本番環境の最適化 (Auto Scalingとリソース制御の導入)

次のステップとして、Kubernetesを活用した本番環境の最適化に取り組みます。
以下の3つのタスクを順に進めます:

  1. リソース制限の導入
  2. Horizontal Pod Autoscaler (HPA) の導入
  3. Helmを活用したデプロイの効率化

1. リソース制限の導入

🔍 目的

  • 各Podが無制限にリソースを使用しないように制御
  • CPUとメモリの使用上限を設定し、サーバー全体の安定性を確保

修正後の deployment.yaml (リソース制限追加)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: crypto-bot
spec:
  replicas: 3
  selector:
    matchLabels:
      app: crypto-bot
  template:
    metadata:
      labels:
        app: crypto-bot
    spec:
      containers:
      - name: data-collector
        image: crypto_bot:latest
        command: ["python", "data_collector.py"]
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"

      - name: pnd-detector
        image: crypto_bot:latest
        command: ["python", "pnd_detector.py"]
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"

      - name: trade-executor
        image: crypto_bot:latest
        command: ["python", "trade_executor.py"]
        resources:
          requests:
            cpu: "200m"
            memory: "256Mi"
          limits:
            cpu: "600m"
            memory: "1Gi"

      - name: monitoring-system
        image: crypto_bot:latest
        command: ["python", "monitoring_system.py"]
        ports:
        - containerPort: 5000
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"

2. Horizontal Pod Autoscaler (HPA) の導入

🔍 目的

  • 負荷の増減に応じて、自動でPod数をスケールアウト/スケールイン
  • CPU使用率が70%以上に達した場合に、Pod数を増加させる

HPAの定義ファイル (hpa.yaml)

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: crypto-bot-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: crypto-bot
  minReplicas: 3
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

HPAの適用コマンド

kubectl apply -f hpa.yaml

HPAの確認コマンド

kubectl get hpa

3. Helmによるデプロイの効率化

🔍 目的

  • Kubernetesマニフェストをより柔軟に管理
  • バージョン管理と環境ごとの変数設定を一元化

Helm Chart構成

/helm
 ├── Chart.yaml
 ├── values.yaml
 ├── templates
 │   ├── deployment.yaml
 │   ├── service.yaml
 │   └── hpa.yaml

Chart.yaml

apiVersion: v2
name: crypto-bot
description: A Helm chart for Crypto Trading Bot
version: 0.1.0
appVersion: "1.0"

values.yaml

replicaCount: 3

image:
  repository: your_dockerhub_username/crypto_bot
  tag: latest
  pullPolicy: IfNotPresent

resources:
  requests:
    cpu: "100m"
    memory: "128Mi"
  limits:
    cpu: "500m"
    memory: "512Mi"

hpa:
  enabled: true
  minReplicas: 3
  maxReplicas: 10
  cpuTarget: 70

Helmデプロイ手順

  1. Helmチャートのインストール
helm install crypto-bot ./helm
  1. アップデート (パラメータ変更時)
helm upgrade crypto-bot ./helm
  1. ステータス確認
helm status crypto-bot

4. 完了後の確認

Pod数の確認

kubectl get pods

リソース使用状況の確認

kubectl top pods

HPAのスケール状況確認

kubectl get hpa

5. 次のステップ

次は、セキュリティ強化 (APIキーの安全な管理と監視機能の強化) に進みます。
具体的には以下を実施します:

APIキーの安全な管理:Kubernetes Secretsの活用
監視機能の強化:Prometheus + Grafanaを使用したシステム監視

Yodaka

次の記事では、システムのセキュリティを強化についてまとめます。

関連
開発記録#150(2025/3/25)「論文ベースのbot開発フローpart.12」

続きを見る

-Bot