diff --git a/README.rst b/README.rst index 6301590..16488b9 100644 --- a/README.rst +++ b/README.rst @@ -83,15 +83,17 @@ nginxはコンテナ内からホストPCのwebsh_serverにリバースプロキ 本番環境 --------- -Infrastructure as Codeしている。 +Infrastructure as Code (Ansible) している。 ソースコードは infra_ リポジトリ(非公開)で管理。 -以下はアプリレベルでの構成図。 -|image-system| +監視系はローカルPCのDockerコンテナ上で動作するGrafanaとPrometheusで実施。 +`nimbot `_ はSlack用のBotで、 +websh用のサーバに後乗せで一緒に稼働している。 -URLレベルでのアクセスフローは以下。 +ログは一旦ローカルに書き出したファイルをFluentdが拾ってJSON形式に変換して保存。 +GrafanaLokiがログを拾って、Grafanaからログを取得してログ監視をしている。 -|access-flow| +|image-system| 基本設計 ================ @@ -138,7 +140,6 @@ nginx ローカル開発用のnginxの設定 websh_front フロントエンドのプログラム websh_server バックエンドのAPIサーバのプログラム websh_remover バックエンドの後始末を行うプログラム -config.nims タスク定義 Dockerfile アプリのDockerイメージ docker-compose.yml ローカル開発でのみ使用する開発環境設定 ===================== ======================================== @@ -169,7 +170,6 @@ http://localhost Branch name Description ================ ============================================================================= master 本番用 -develop たまに使うが基本放置 feature/#xx-desc 新機能、UI改善 hotfix/#xx-desc バグ修正 chore/#xx-desc CIやローカル開発環境の整備など、アプリに影響しない雑多なもの @@ -255,7 +255,7 @@ Apache License .. |image-top| image:: ./docs/top.png .. |image-local| image:: ./docs/local.svg :alt: ローカル環境の構成図 -.. |image-system| image:: ./docs/system.svg +.. |image-system| image:: ./docs/system.png :alt: システム構成図 .. |image-proc-flow| image:: ./docs/logic.svg :alt: データ処理フロー @@ -263,8 +263,6 @@ Apache License :alt: CIフロー .. |image-release-flow| image:: ./docs/release_flow.svg :alt: リリースフロー -.. |access-flow| image:: ./docs/access_flow.svg - :alt: アクセスフロー .. _Nim: https://nim-lang.org/ .. _Karax: https://github.com/pragmagic/karax diff --git a/docs/access_flow.puml b/docs/access_flow.puml deleted file mode 100644 index c4f6aa1..0000000 --- a/docs/access_flow.puml +++ /dev/null @@ -1,27 +0,0 @@ -@startuml - -cloud "Internet" as net -node "Host" { - [nginx] - frame "Port" { - (80) - (443) - } - frame "Static file" { - [index.html] - } - frame "Process" { - [websh_server] - [docker] - } -} - -net -down-> [nginx] : http[s]://websh.jiro4989.com/ -[nginx] -down-> (80) -[nginx] -down-> (443) -(80) -> [nginx] : 443リダイレクト -(443) -down-> [index.html] : GET /index.html -(443) -down-> [websh_server] : POST /api/shellgei -[websh_server] -down-> [docker] - -@enduml \ No newline at end of file diff --git a/docs/access_flow.svg b/docs/access_flow.svg deleted file mode 100644 index c00bc8d..0000000 --- a/docs/access_flow.svg +++ /dev/null @@ -1,40 +0,0 @@ -HostPortStatic fileProcessnginx80443index.htmlwebsh_serverdockerInternethttp[s]://websh.jiro4989.com/443リダイレクトGET /index.htmlPOST /api/shellgei \ No newline at end of file diff --git a/docs/local.puml b/docs/local.puml index 1ab24c6..b882bb1 100644 --- a/docs/local.puml +++ b/docs/local.puml @@ -1,16 +1,24 @@ @startuml -Actor Developer as dev -node "PC" { - frame "Docker" { - [nginx] - [shellgeibot] +actor Developer as dev + +node PC { + frame Docker { + [nginx] as nginx + frame Application { + [websh_server] as server + [websh_remover] as remover } - [websh_server] + [shellgeibot] as bot + } + [file_system] as fs } -dev -down-> [nginx] : POST http://localhost/api/shellgei -[nginx] -down-> [websh_server] : Proxy to http://127.0.1.1:5000/shellgei -[websh_server] -down-> [shellgeibot] : docker run +dev -down-> nginx : POST http://localhost/api/shellgei +nginx -> server : proxy +server -> bot : POST +server -down-> fs : write file +bot -> fs : write file +remover -> fs : remove file -@enduml \ No newline at end of file +@enduml diff --git a/docs/local.svg b/docs/local.svg old mode 100644 new mode 100755 index d8dd4aa..6d5db1c --- a/docs/local.svg +++ b/docs/local.svg @@ -1,29 +1,49 @@ -PCDockerwebsh_servernginxshellgeibotDeveloperPOST http://localhost/api/shellgeiProxy to http://127.0.1.1:5000/shellgeidocker runPCDockerApplicationfile_systemnginxshellgeibotwebsh_serverwebsh_removerDeveloperPOST http://localhost/api/shellgeiproxyPOSTwrite filewrite fileremove file \ No newline at end of file diff --git a/docs/logic.puml b/docs/logic.puml index 576f274..912b188 100644 --- a/docs/logic.puml +++ b/docs/logic.puml @@ -5,28 +5,17 @@ participant Browser as browser participant Nginx as nginx participant HTMLFile as html participant APIServer as api -participant Supervisor as visor -participant Container as cont -participant Remover as rm -participant LockFile as lock +participant ShellgeiBot as cont participant Images as img participant RemoveFlagFile as rmflag +participant Remover as rm -activate visor - -visor -> rm : 起動 -activate rm - -visor -> cont : 起動 -activate cont - -visor -> api : 起動 +activate html activate api - -visor -> nginx : 起動 -activate nginx +activate rm user -> browser : 画面表示 +activate user browser -> nginx : GET index.html nginx -> html : GET nginx -> browser : レスポンス @@ -35,35 +24,27 @@ browser -> user : 画面表示 user -> browser : シェル実行 browser -> nginx : POST /api/shellgei nginx -> api : POSTのプロキシ -api -> lock : コンテナ使用中のロックファイルを生成 -activate lock api -> cont : シェルの実行 +activate cont cont -> img : 画像ファイルを生成 activate img cont -> api : 実行結果の返却 +api -> cont : コンテナ破棄 +deactivate cont api -> rmflag : コンテナ削除フラグを作成 activate rmflag api -> nginx : レスポンス nginx -> browser : レスポンス browser -> browser : 画面再描画 browser -> user : 画面表示 +deactivate user rm -> rmflag : フラグファイルの有無をチェック alt フラグファイルが存在するなら - rm -> cont : コンテナ破棄 - deactivate cont rm -> img : 画像ファイルを削除 deactivate img rm -> rmflag : 削除フラグ削除 deactivate rmflag - rm -> lock : ロックファイル削除 - deactivate lock -end - -visor -> cont : プロセス死活監視 -alt コンテナプロセスが死んでいたら - visor -> cont : コンテナ起動 - activate cont end @enduml diff --git a/docs/logic.svg b/docs/logic.svg old mode 100644 new mode 100755 index 724ac36..7a34129 --- a/docs/logic.svg +++ b/docs/logic.svg @@ -1,33 +1,21 @@ -UserUserBrowserBrowserNginxNginxHTMLFileHTMLFileAPIServerAPIServerSupervisorSupervisorContainerContainerRemoverRemoverLockFileLockFileImagesImagesRemoveFlagFileRemoveFlagFile起動起動起動起動画面表示GET index.htmlGETレスポンス画面表示シェル実行POST /api/shellgeiPOSTのプロキシコンテナ使用中のロックファイルを生成シェルの実行画像ファイルを生成実行結果の返却コンテナ削除フラグを作成レスポンスレスポンス画面再描画画面表示フラグファイルの有無をチェックalt[フラグファイルが存在するなら]コンテナ破棄画像ファイルを削除削除フラグ削除ロックファイル削除プロセス死活監視alt[コンテナプロセスが死んでいたら]コンテナ起動 \ No newline at end of file diff --git a/docs/system.png b/docs/system.png index dcf31e1..13de773 100644 Binary files a/docs/system.png and b/docs/system.png differ