.. _overview:
Overview
========
Introduction to NOS
------------------
The New Observing Strategies (NOS) initiative within the NASA Earth Science Technology Office Advanced Information Systems Technology program envisions future Earth science missions with distributed sensors (nodes) interconnected by a communications fabric that enables dynamic and intelligent operations. Some NOS concepts resemble systems-of-systems or collaborative systems where operational authority is distributed among multiple systems, necessitating new methods for systems engineering and design to cope with more decentralized control over constituent systems.
NOS-T Architecture
-----------------
NOS-T is best suited for conceptual, systems-level design of NOS components and operational concepts. The system architecture follows a loosely-coupled **event-driven architecture (EDA)** where member nodes communicate through events in the form of notification messages sent over a network.
Key characteristics of the NOS-T architecture:
* **Flexible Node Types**: Nodes can be software applications, simulation models, science databases, or hardware
* **Enhanced Scalability**: The EDA provides scalability and reliability by using consistent event-handling functions
* **Modular Design**: Participants can join and leave experiments without reconfiguring the testbed
* **Security**: Maintains protection of proprietary software and data while enabling cross-organizational tests
Event Broker Infrastructure
--------------------------
The NOS-T architecture relies on a centralized infrastructure component called an **event broker** (or message broker) to exchange event notifications between applications. A broker simplifies communication by requiring each application to connect only to the broker, rather than directly to every other application.
NOS-T adopts **RabbitMQ**, an open-source message broker implementing the Advanced Message Queuing Protocol (AMQP). RabbitMQ uses a publish-subscribe messaging pattern with:
* **Publishers**: Applications that produce events
* **Subscribers**: Applications that consume events
* **Topics**: Categories for event types that applications can publish to or subscribe to
.. mermaid::
---
config:
theme: redux
---
flowchart LR
subgraph User_Apps["User Apps"]
direction TB
UserApp1["User App 1"]
UserApp2["User App 2"]
UserApp3["User App 3"]
end
UserApp1 <-. Publish/Subscribe .-> Network["Network"]
UserApp2 <-. Publish/Subscribe .-> Network
UserApp3 <-. Publish/Subscribe .-> Network
Network -- Publish --> EventBroker["Event Broker
(AMQP Protocol)"]
EventBroker -. Subscribe .-> Network
UserApp1:::red
UserApp2:::blue
UserApp3:::green
Network:::gray
EventBroker:::darkorange1
classDef red fill:#ff0000,stroke:#000000,stroke-width:2px
classDef blue fill:dodgerblue,stroke:#000000,stroke-width:2px
classDef green fill:#00ff00,stroke:#000000,stroke-width:2px
classDef gray fill:#808080,stroke:#000000,stroke-width:2px
classDef darkorange1 fill:#ff8c00,stroke:#000000,stroke-width:2px
System Components
----------------
NOS-T consists of two top-level system components:
1. **User System** (tailored to each test case):
* Consists of user applications developed by users
* Applications run on separate hosts controlled by each user
* Can model entire observing systems or individual components (sensors, communication links, algorithms, etc.)
* Must meet basic NOS-T interface requirements for orchestration
2. **NOS-T System** (fixed for all test cases):
* Managed by an NOS-T operator
* Includes the event broker infrastructure
* Contains a manager application that orchestrates test runs
* Ensures proper application synchronization, topic configuration, and consistent message structure
.. mermaid::
---
config:
theme: redux
---
flowchart LR
subgraph cluster0["User System"]
direction TB
PI1["NOS PI"]
PI2["NOS PI"]
PI3["NOS PI"]
UserApp1["User Apps"]
UserApp2["User Apps"]
UserApp3["User Apps"]
end
subgraph cluster2["NOS-T Operator"]
EventBroker["Broker
(AMQP)"]
ManagerApplication["Manager"]
Monitor["Monitor"]
end
subgraph cluster1["NOS-T System"]
direction TB
NOSTInfrastructure["NOS-T Infrastructure"]
cluster2
end
PI1 --> UserApp1
PI2 --> UserApp2
PI3 --> UserApp3
UserApp1 --> NOSTInfrastructure
UserApp2 --> NOSTInfrastructure
UserApp3 --> NOSTInfrastructure
NOSTInfrastructure --> EventBroker & ManagerApplication & Monitor
TestCase["NOS Test Case"] --> PI1 & PI2 & PI3
PI1:::red
PI2:::blue
PI3:::green
UserApp1:::red
UserApp2:::blue
UserApp3:::green
NOSTInfrastructure:::orange
TestCase:::oval
classDef red fill:#ff0000,stroke:#000000,stroke-width:2px
classDef blue fill:dodgerblue,stroke:#000000,stroke-width:2px
classDef green fill:#00ff00,stroke:#000000,stroke-width:2px
classDef orange fill:orange,stroke:#333,stroke-width:2px
classDef oval shape:oval,fill:lightgrey,stroke:#333,stroke-width:2px
%% Increase the line width of all arrows and change color to black
linkStyle default stroke-width:3px, stroke:black;
Development Tools
---------------
To aid in application development, the open-source [*]_ NOS-T tools library provides templates for implementing basic NOS-T functionality:
* **Manager application template**: Orchestrates test execution
* **Network Time Protocol (NTP) capabilities**: Synchronizes applications across distributed systems
* **Observer templates**: For implementing sensor applications
* **Observable templates**: For science applications
* **Publisher templates**: For regular messaging (e.g., "heartbeat" messages)
* **Broker connection utilities**: For connecting to the message broker
.. figure:: media/NTP_request.png
:width: 600
:align: center
Network Time Protocol (NTP) Round Trip Time Delay
Language Compatibility
--------------------
While the NOS-T tools and most example applications are coded in Python, the system supports multiple programming languages:
* Any language with RabbitMQ interface libraries can be used
* Supported protocols include AMQP and MQTT
* Examples of compatible platforms:
- JavaScript (used in the "scoreboard" geospatial visualization)
- MATLAB (via available RabbitMQ libraries)
Applications in a test suite can use different programming languages as long as they maintain a common message structure.
.. [*] BSD 3-clause license (Dec. 16, 2021, Reference FY22-005)