このサイト(www.teenytinybot.dev)の構成に関して
最近更新しておりませんでした、IMAXおじさんです。 この頃本サイトに色々機能を足していたので、そろそろ全体をまとめた構成図を作ろうと思い立ちました。
1. コンテナの構成について
本サイトはさくらVPS上にデプロイしています。 当初はUbuntu Server上のネイティブで動かしていたのですが、お仕事でDockerをよく使うこともあり途中からDockerでのデプロイに切り替えました。
各コンポーネントの基本的な構成は以下となります。
- OS:Ubuntu 18.04
- 仮想化:Docker
- リバースプロキシ:Nginx 1.21.6
- アプリバックエンド:Python3, Django 3.0
- DB:MySQL 5.7
- 可視化ツール:Grafana 8.3.4
- ログ監視:Splunk 8.2.5
- ログ転送エージェント:UniversalForwarder(@Nginxコンテナ)
また、コンテナ間の関係とデータフローは以下の通りです。
2. Djangoで提供するアプリに関して
また、Djangoでは下記のアプリを作成して公開しています。
-
- Djangoで初めて作ったWEBアプリです。
- 中の人に匿名で質問が送れます。line-bot-sdkと連携しており、質問がくるとBotからLINEで中の人に通知が来ます。
- (最近質問が来てなくてなんか寂しいので質問募集中です)
-
- DjangoでRESTAPIを実装し、自宅のM5StackからAPI経由で気温・湿度・気圧をサーバに上げています。
- Grafanaで監視用ダッシュボードを作成し、公開しています。
-
- 技術系の記事を書いていくブログページです。
- Markdown形式が使えるよう、Djangoプラグインであるmdeditorを入れています。
- また、コードはシンタックスハイライトが行われるよう、aceというライブラリを入れています。
- ↓こんな感じ
-
ログ監視
- また、自明に公開はしていませんが、Nginxのログを見ると公開サーバへの攻撃と思しきアクセスがかなり多いので、監視ツールとしてSplunkを入れています。
- 法人利用は有償ですが、個人利用であれば制限付きで一定期間は無償利用可能なようです。
3. 今後の予定
今後は以下のことに取り組みたいな〜と考えています。
- AWSへのデプロイ(AWSできるようになりたい...)
- elasticsearchとsplunkの比較
- 機械学習がバックエンドで動くWEBアプリ
- Vue.js+Django RESTAPIで動く構成に(モダンなWEBの構成にしたい...)