Streamlitを使ったWebシステム

Streamlitは、主にデータサイエンスや機械学習のプロトタイピングに使われるPythonベースのフレームワークであり、簡単にインタラクティブなWebアプリケーションを構築することができます。Streamlitアプリケーションは完全に動的コンテンツを生成しますが、以下の点を考慮する必要があります。

Streamlitのデプロイメントについて

  1. 単独での使用

    • Streamlitは単独でHTTPサーバを内蔵しており、簡単なプロジェクトやデプロイメントにおいては、追加のWebサーバ(NginxやGunicorn)を使わずに直接利用できます。

  2. プロダクション環境での使用

    • プロダクション環境では、セキュリティやスケーラビリティのために、通常Nginxなどのリバースプロキシを前面に配置します。これは、StreamlitのHTTPサーバがプロダクション向けに最適化されていないためです。

プロダクション環境(Nginxを使用)

@startuml
actor User

node "Web Server (Nginx)" {
  [Nginx]
}

node "App Server (Streamlit)" {
  [Streamlit]
}

User --> [Nginx]
[Nginx] --> [Streamlit]
@enduml

この構成では、Nginxがリバースプロキシとして機能し、ユーザーからのリクエストをStreamlitサーバに転送します。NginxはSSL/TLSの終端、ロードバランシング、セキュリティ強化を行います。

Streamlitのデプロイメント手順(Nginxを使用する場合)

  1. Streamlitアプリの起動

    • Streamlitアプリを起動します。

  2. Nginxの設定

    • Nginxをリバースプロキシとして設定します。以下は基本的なNginx設定の例です。

まとめ

  • Streamlitのみの使用:小規模プロジェクトやテスト環境では、Streamlit単独で使用することができます。

  • プロダクション環境での使用:プロダクション環境では、Nginxをリバースプロキシとして使用することで、セキュリティやスケーラビリティを強化できます。

  • Gunicornの役割:Streamlitは独自のHTTPサーバを持っているため、通常のDjangoアプリケーションとは異なり、Gunicornは使用されません。


この記事が気に入ったらサポートをしてみませんか?