Dash応用編:第9回 デプロイと自動化

Python
この記事は約7分で読めます。

こんにちは、JS2IIUです。Dash応用編の記事も残り数回となりました。今回もよろしくお願いします。

はじめに

これまでの記事で、Dashアプリケーションの作成や高度な機能を紹介してきましたが、実際のプロジェクトでは、完成したアプリケーションをローカル環境で動かすだけでなく、クラウドにデプロイして外部からアクセス可能にする必要があります。本記事では、HerokuやAWS、GCPなどの主要なクラウドプラットフォームへのデプロイ方法に加え、GitHub ActionsやJenkinsを使用したCI/CDの自動化について解説します。

Herokuへのデプロイ

まず、Herokuは簡単に使えるPaaS(Platform as a Service)で、Dashアプリを素早くデプロイするのに適しています。Herokuの詳細についてはこちらをご覧ください。

Heroku Open Source Software Credit Program
Heroku, a Salesforce company, provides a credit offer for open source software projects hosted on Heroku.

手順1: Heroku CLIのインストール

Herokuにアプリケーションをデプロイするためには、まずHeroku CLIをインストールします。以下のコマンドでインストールできます。

$ brew tap heroku/brew && brew install heroku

インストール後、以下のコマンドでHerokuにログインします。

$ heroku login

Heroku CLIの詳細はこちら

Heroku CLI | Heroku Dev Center
Heroku CLI をダウンロード、インストール、および使用開始する方法。Heroku Toolbelt の一部として使用される Heroku CLI。

手順2: 必要ファイルの準備

Herokuでアプリをデプロイするためには、Procfileというファイルが必要です。このファイルには、アプリケーションのエントリーポイントを指定します。Dashアプリケーションの場合、Procfileは以下のようになります。

web: gunicorn app:server

requirements.txtも必要で、アプリが依存しているPythonパッケージを指定します。

dash==2.11.0
gunicorn==20.1.0

手順3: GitHubとの連携とデプロイ

アプリケーションのリポジトリがGitHubにある場合、以下のコマンドを実行してHerokuアプリを作成します。

$ heroku create
$ git push heroku main

成功すれば、HerokuのURLでアプリケーションにアクセス可能です。

Herokuでのデプロイに関する公式ガイドはこちら

デプロイ | Heroku Dev Center
Heroku へのアプリケーションのデプロイと、複数のアプリケーション環境のサポートです。

AWSにデプロイする方法

AWS Elastic Beanstalkを使ってDashアプリケーションをデプロイする手順を紹介します。Elastic Beanstalkは、インフラの管理をAWSが行い、簡単にアプリケーションをクラウドに展開できるサービスです。Elastic Beanstalkの詳細はこちら

ウェブアプリのデプロイ - AWS Elastic Beanstalk - AWS
AWS Elastic Beanstalk は、容量のプロビジョニング、アプリのヘルスモニタリングなどを使用して、ウェブアプリケーションをデプロイおよび管理するのに役立ちます。

手順1: Elastic Beanstalk CLIのインストール

Elastic Beanstalk CLIをインストールし、環境をセットアップします。

$ pip install awsebcli
$ eb init

手順2: アプリケーションのデプロイ

以下のコマンドでElastic Beanstalkにアプリをデプロイできます。

$ eb create
$ eb deploy

これにより、アプリがAWS上で動作するようになります。SSL証明書を設定したい場合は、AWS Certificate Managerを利用してSSLを設定し、HTTPSでアクセスできるようにします。

AWS Elastic Beanstalkの公式ガイドはこちら

GitHub ActionsでCI/CDパイプラインを自動化

アプリケーションのデプロイを効率的に行うためには、コードの変更を自動でデプロイするCI/CDパイプラインを設定すると便利です。GitHub Actionsは、GitHubリポジトリに統合されているCI/CDツールで、簡単にパイプラインを構築できます。GitHub Actionsの詳細はこちら

Actions
GitHub Actionsを使用することで、高機能のCI / CDですべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイします。コードレビュー、ブランチ管理、問題のトリアージを希望どおりに機能させます。

手順1: GitHub Actionsワークフローの作成

以下は、Herokuに自動でデプロイするためのGitHub Actionsの設定ファイル例です。このファイルは.github/workflows/deploy.ymlに保存します。

name: Deploy to Heroku

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.x'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Deploy to Heroku
      run: |
        git push heroku main
      env:
        HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}

この設定により、mainブランチに変更がプッシュされるたびに、自動でHerokuにデプロイされます。

GitHub Actionsの公式ガイドはこちら

手順2: GitHub Secretsの設定

Heroku APIキーをGitHub Secretsに設定します。GitHubリポジトリのSettings > SecretsでHEROKU_API_KEYを追加してください。

Jenkinsを使ったCI/CD自動化

Jenkinsは、オンプレミスでのCI/CDパイプラインの構築に適したツールです。以下の手順でJenkinsを設定し、Dashアプリケーションのデプロイを自動化します。Jenkinsの詳細はこちら

Jenkins
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

手順1: Jenkinsのインストール

Jenkinsをローカル環境やサーバーにインストールし、必要なプラグイン(GitHub、Herokuなど)をインストールします。

$ sudo apt-get update
$ sudo apt-get install jenkins

Jenkinsのインストールガイドはこちら

手順2: Jenkinsジョブの設定

新規ジョブを作成し、GitHubリポジトリを指定します。その後、ビルドステップに以下のコマンドを追加し、Herokuに自動デプロイします。

#!/bin/bash
git pull origin main
git push heroku main

これにより、Jenkinsが定期的にリポジトリを監視し、変更があれば自動でデプロイされます。

まとめ

本記事では、Dashアプリをクラウドにデプロイし、自動化するための主要な手法を紹介しました。HerokuやAWSなどのクラウドプラットフォームへのデプロイ方法から、GitHub ActionsやJenkinsを使ったCI/CDの自動化まで、プロジェクトを運用する上での重要な技術を学びました。次回の記事では、ライブデータダッシュボードの構築に焦点を当て、リアルタイムでデータが更新されるインタラクティブなアプリケーションを作成する方法を紹介します。

次回のテーマは「ライブデータダッシュボードの構築」です。リアルタイムでデータを表示するダッシュボードに興味がある方は、ぜひお楽しみに!

Dash関連記事まとめ

DashはJavaScriptライブラリであるReactの上に構築されたPythonフレームワークであるが、DashはRでも動作し、最近ではJuliaもサポートしている。
Wikipedia – Plotly/Dash から引用、翻訳

コメント

タイトルとURLをコピーしました