3forge Architecture¶
3forge is made up of three components:
-
The Center: This process manages communication and data processing/movement between the various Web and Relay processes. It also contains an in-memory database and event processing/scheduling modules.
-
The Web: This process runs a web server responsible for managing dashboards and entitlements and rendering visualizations.
-
The Relay: This process is responsible for real‑time integration with external systems. Acting as a connector to data streams, the Relay enables command execution and communication between your infrastructure and the Center. More specifically, the Relay can:
- Receive real-time streaming data from local applications
- Connect to databases and other datasources to issue and process on-demand queries, procedures, etc.
- Access the local file system for investigating log files, excel files and data files
- Interact with the local shell environment to run scripts and other executables
The 3forge architecture is designed for smooth installation with the ability to easily scale as needed. For getting started with lower capacity needs, 3forge can be installed and run as a single process. For additional capacity, the platform supports vertical scaling by breaking out the front end and backend applications into separate processes. Beyond that, even more capacity can be achieved through horizontally scaling additional processes.
Components¶
The Center is 3forge's real-time database.
Any number of Relays and webservers can be connected to a Center. The Center is where real-time data processing, connection management and data virtualization are done. It houses the in-memory database which can be accessed through the command line interface and JDBC interface.
See this page for more information about the Center.
The Web is 3forge's graphical user interface.
Any number of web servers can be connected to the Center. The web server interacts with web browsers and provides the end user experience.
See this page for more information about the Web.
The Relay is the bridge between data sources and the Center.
Any number of Relays can be connected to a Center. Each Relay can be connected to any number or combination of files, databases, secure shells (SSH), scripts and custom applications.
See this page for more information about the Relay.
Scaling¶
3forge will scale as the processing needs to scale. For use cases where all processing can be done through a single instance, only a single AMI One process is necessary. This process contains all the components and interfaces discussed above. The architecture is quite simple:
Note: AMI One simply bundles all the functionality of the Relay, Center, and Web in a single process.
See this page for information about vertical and horizontal scaling.
External Interfaces¶
There are 8 key categories of external interfaces supported by 3forge:
- GUI: Fully featured dashboards provide user access to all the various components and data made available to 3forge. The platform utilizes the standard web browser (http[s]) for constructing and using dashboards as well as most of the administration and configuration.
- Queries: Any number of datasources can be attached to the platform and queried at runtime - either by a user action or by some electronic/automated event..
- Real-time Streaming: Applications can connect and stream messages directly into 3forge. These can include sending new records, or updating or deleting existing records. This can be used to push information onto dashboards in real-time and/or to evaluate events with 3forge's event processing system.
- Callbacks: Applications can register call backs with 3forge. These callbacks can be executed by the user or automatically triggered by 3forge's event processing system.
- JDBC (Java Database Connectivity): 3forge can be accessed via JDBC just like accessing other traditional databases. JDBC can be used to query and/or update the internal state of the platform. In combination with 3forge's data virtualization layer, this can also be used to query multiple datasources using a common JDBC connection.
- Command Line: The command line interface allows users and/or applications to run commands directly from 3forge's backend.
- Trace Level Exhaust: All mutations to 3forge's internal state are made available through the trace level exhaust. This is used for persisting data and auditing changes.
- Enterprise I/O: Most enterprises have existing operations environments consisting of single sign on services, Entitlements/User Permissions and Naming services. 3forge has interfaces at key touch points throughout for providing adapters into the existing infrastructure.
Default File Structure¶
Below is the standard file structure for a new install of 3forge after it has been run once.
Version Management¶
File Naming¶
The 3forge platform can be installed locally from your 3forge.com portal. The binary downloads are named with the following syntax where relnum is an incrementing release number and branch indicates the level of testing and maturity:
-
Windows:
ami_windows-x64_[relnum]_[branch].exe -
Mac:
ami_macos_[relnum]_[branch].dmg -
Unix:
ami_unix_[relnum]_[branch].sh -
Other (Tar gz):
ami_unix_[relnum]_[branch].tar.gz
Example: ami_unix_12103_stable.sh indicates that it's a release for the unix operating system with a release number of 12103 in the stable branch.
Note
The relnum + branch is considered the version e.g. 12103.stable.
Branches¶
| Name | Stability | Release Cycle | When to Use |
|---|---|---|---|
| dev | Minimal testing by developers prior to submitting a change | Hourly | To explore the latest features, testing, etc. |
| stable | Reasonable testing by the QA and development team | Weekly | Early access to features, non-mission-critical use cases (ex: information dashboards) |
| qa | Extensive internal and external testing | Quarterly | Highly reliable, critical use cases |
| prod | Critically tested over several months of production use | Biannual | Extreme reliability, mission critical, cannot fail cases |
Relnum¶
Release numbers are always increasing, regardless of branch.
Sample Release Management Flow¶
Release Notes¶
Release notes are delivered approximately once per quarter and cover all features graduating from dev to stable. There is no specific release date but instead they are released in sync with the delivery of note-worthy items.
Backwards Compatibility¶
We work to ensure that newer versions of 3forge can load dashboards from older versions. However, older versions of 3forge will very likely not be able to load dashboards built on new versions.
Bug Fixes¶
When a bug is detected in a certain branch, it is first fixed in that branch and then "patched" into other branches, assuming the bug exists in that branch as well. For example, if a bug is found in stable, it likely exists in dev. The bug would first be fixed in dev, then just that bug fix would be patched to stable. We would then test for the bug in qa. If fixed in qa, we would promote, and so on for production.
Fast Track Releases¶
Occasionally, customer requested features are fast tracked to a particular branch. In that case, the feature will be added to dev first and then patched into stable. We occasionally allow for promotion to qa, with features deemed non-destabilizing. They are never pushed to prod in order to avoid any chance of error.




