Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop #19

Merged
merged 2 commits into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/deploy-docusaurus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Check out repo
uses: actions/checkout@v2
uses: actions/checkout@v3
# Node is required for npm
- name: Set up Node
uses: actions/setup-node@v2
Expand All @@ -27,9 +27,10 @@ jobs:
npm run build
- name: Deploy to GitHub Pages
if: success()
uses: crazy-max/ghaction-github-pages@v2
uses: crazy-max/ghaction-github-pages@v4
with:
target_branch: release
build_dir: build
domain: docs.resgrid.com
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5 changes: 5 additions & 0 deletions docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ Originally started as a hosted only solution in 2014, the Resgrid system as proc

Resgrid is written on the Microsoft .Net and .Net Core Frameworks utilizing Microsoft SQL Server as the primary data repository.

:::danger Note
This documentation is an on-going Work-In-Progress (WIP) and is not complete. There many sections that are empty to help organize, give landing areas and structure for documentation. Documentation is usually added when we address issues or get questions. If you need information and the area of the documentation is missing or incomplete, please create a Github issue
with the question and we will address it.
:::

## Features

- **Personnel Management**: Define personnel, contact information, details, certification, roles, status and availability for all personnel
Expand Down
40 changes: 39 additions & 1 deletion docs/reference/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,42 @@ The goal of the Resgrid project is to have a complete, all-in-one solution that

Resgrid has many components that interact with each other at a high level.

<img src="/img/reference/ResgridPlatformOverview.png" alt="Resgrid Platform Overview" className="cover-image" />
<img src="/img/reference/ResgridPlatformOverview.png" alt="Resgrid Platform Overview" className="cover-image" />

## System Components

Resgrid is split into many discrete components. These can then be installed on one or many systems depending on your load or uptime requirements.

- **Web Core**: The primary web application
- **Web Services**: The backend API
- **Web Events**:SignalR web socket application for real-time updating of UI's
- **Worker Console**: CLI application that runs scheduled tasks and processes backend real-time events
- **Tools Console**: CLI application that admins can run to update the database version or run other commands
- **Microsoft SQL Server**: Primary relational database (3rd Party)
- **MongoDB**: Document database for storing real-time GPS events for Units and User and Audit events (3rd Party)
- **Redis**: In Memory Caching Service (3rd Party)
- **RabbitMQ**: Message Queuing and Distribution Service, used to keep the distributed system components in sync (3rd Party)
- **ElasticSearch**: ELK server for system logging output (3rd Party)

Not mentioned here as this is 100% user choice but for any Highly Available (HA) configuration you need to have multiple __Web Core__, __Web Services__ and __Web Events__ servers setup in a load balanced configuration. That allows the system to respond either via the Web App or API to user interactions even if one of the boxes is having issues.

## 3rd Party HA Configurations

Each of the 3rd party products Resgrid relies on, for example Microsoft SQL Server, can be setup on Single Machines in a non Highly Available (HA) configuration or in an HA configuration. For any critical system deployment that needs to try and achieve 100% uptime you will need to set those components up in HA configurations/clusters.

- **Microsoft SQL Server**: https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server?view=sql-server-ver16
- **MongoDB**: https://www.mongodb.com/basics/clusters
- **Redis**: https://redis.com/redis-enterprise/technology/highly-available-redis/
- **RabbitMQ**: https://www.rabbitmq.com/clustering.html

:::warning Note
Resgrid does not provide support or guidance on configuration, setup, maintenance or hardening of 3rd party products or services. We highly recommend reaching out to certified professional for those products to ensure they are configured correctly to meet your needs.
:::

## Server Diagram

<img src="/img/reference/ResgridServerDiagram.png" alt="Resgrid Server Diagram" className="cover-image" />

Pretty much all Resgrid systems will need to access the SQL Server, Redis Cache and RabbitMQ servers. The Resgrid Events app is a SignalR Web Socket Eventing system that use used to update the UI in real-time when events occur, it only needs to communicate with the SQL Server and Worker Consoles.

Each Resgrid App, for example Dispatch App or BigBoard can be hosted on multiple server fronted by a Load Balancer as well for an HA implementation, but they are mostly Angular Web Apps and don't require a ton of server side resources.
Binary file added static/img/reference/ResgridServerDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading