モノづくり塾のITテーマの一つです。教材なのでプログラムはなるべくシンプルに書いています。サーバー側はNodeJS、クライアント側はReactを使っています。
動画を送信するバックエンドのサーバーと動画を再生するフロントエンドのアプリケーションのセットを作って、Docker Composeでサーバーにデプロイするというところまで。
これがDocker Composeファイルです。
このプロジェクトを塾のサーバーのGitLabにコミット/プッシュして、塾のサーバーでプロジェクトをクローンし、プロジェクトディレクトリに移動して
docker compose up -d
を実行すればデプロイ完了です。
動いているのをサーバーのPortainerで確認しているところ。vstreamer_serverとvstreamer_frontendが動いています。
アプリケーションにブラウザからアクセスすると動画の一覧が表示されます。動画のサムネールはサーバーが自動的に生成しています。
サムネイルをクリックすると動画の再生が始まります。
デプロイができたところで、サーバーのダッシュボードにこのアプリケーションを追加。「Experiment」の列の3つめに「VStreamer」として追加しています。
「資料館」に行けばそれぞれの学習テーマについての解説を読めます。「GitLab」に行けばソースコードが見られます。実際に動くところも見ることができます。
塾のサーバーは64GBのRAMと1TBの起動ディスク、6TBの共有ディスクと6TBのバックアップディスクを搭載しています。64GBのRAMで当分足りると思っていますが、このようなアプリケーションをたくさん動かしたら足りなくなるかもしれません。その場合はサーバーをクラスター化して対応することになります。
最終的にはアプリケーションサーバーはKubernetesクラスターとして、GitLabのCI/CD機能を使い自動的にビルド・デプロイができるようにすることになるんでしょう。そこまでやれば、ソフトウェア開発、システム管理、クラスター、CI/CDと一通りの工程を実践する環境になります。