AWS Cloud Configuration

landscape photography of mountains covered in snow

OmniBlocks® REST API Server aka OmniBlocks® BE Server. July 2022 Runs on an EC2 instance deployed via Jenkins as a git listener in a CI/CD environment. The app is a node server managed by PM2. The auth module utilizes Redis. AWS Services EC2 Servers OmniBlocks Live BE t3.medium => m6i.large OmniBlocks Staging BE t3.medium OmniBlocks […]

Technology Standards

books education knowledge encyclopedias

Application Design RBT Inc. apps are primarily Software-as-a-Service applications. They need to be fault tolerant, easily scalable, and performant. Our designs should follow the “Twelve Factor” standard. Development Process Our development process loosely follows the Agile methods. Our goal is to work with a heartbeat of 2 weeks maximum for sprints. We are also working […]

July 11th 2022 10:12AM EST Downtime Analysis & Remediation

aerial photo of vehicles in the city

Cause Live BE server stopped responding. Actions RDS server was still responding, but showing 20 open connections. EC2 server was not responding, SSH unresponsive, Jenkins (http) unresponsive. AWS reboot of the EC2 instance never finished (5m).AWS stop instance never finished (5m).AWS force stop took 3m+, eventually stopped.Instance manually restarted via AWS console. Forced PM2 restart […]

Copying Production DB Server to Develop

flock of sheep eating grass

The current configuration (through July 6 2022) hosts the production, staging, develop, and independent developer databases all on a single RDS server. While this makes it very fast and easy to replicate production data to the develop and staging databases, it does mean a shared database server. The memory and CPU resource will be utilized […]

Exec Review : 04/28/2022 API Server Downtime Analysis

Initial Review Reference: original write up of the API Server crash in April 2022 Synopsis Problem Production API Server went offline from 9:35AM to 10:35AM on April 28th, 2022 (Thu). Resolution Process Production API EC2 instance was non-responsive and not accepting SSH connections, server rebooted. Connectivity restored but the REST API connection was not running. […]

OmniBlocks® 1.83 Release Notes

woman in black shirt holding a hand sanitizer bottle

Formulas Create Creating a new formula was losing the related SKU, this has been patched. List Formulas can be sorted by Formula ID. Production Invalid yield < 1 If a yield was entered as 0 the batch could not longer be accessed. This has been patched.

OmniBlocks® 1.82 Release Notes

yellow flowers on white ceramic plate

Users Listing Updates Show user ID column, sortable and searchable. Add search and sort to Role column. Dashboard Reports Par Level Report SKU is now linked to the inventory lookup for the SKU. In Stock Report View Preview SKU is now linked to the inventory lookup for the SKU. Received Inventory Report SKU is not […]

API Performance Deep Dive

focused biologist studying plant leaf with microscope

Knex Digging deeper into the Knex queries can be done with the knex configuration option debug set to true. Enabling Debug Output for Knex On the OB API server you can turn debugging output from Knex by updating the knexInstance definition as follows: In the BE file: .env Add a line like this… # Knex/Objection […]

Data Migrations In The OmniBlocks® API

city technology architecture luxury

Data migrations are handled via the Knex migration system. Migrations provide a managed and version-control-backed method for modifying the data structures that support the API. Adding A Migration yarn add-migration <newMigrationName> creates a duplicate of migration.stub.ts that includes -the needed module-alias import and -a standard/initial TS up/down export setup. Running A Migration You’ll first need […]

JSDoc commentary with CTRL-click navigation

TS-friendly, ctrl-click navigable variable references in jsDoc comment blocks How: Import whateverVar as a type-only import Then in your jsDoc comment, you can @link to that variable: You can then ctrl-click to navigate directly to whateverVar declaration / jsDoc commentary in the code. (at least in VS code – but I imagine the other modern […]