Skip to content

Commit

Permalink
Merge pull request #19 from Resgrid/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
ucswift authored Jan 30, 2024
2 parents bbd2411 + 55e5ada commit a5e65c6
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 3 deletions.
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.

0 comments on commit a5e65c6

Please sign in to comment.