At the core of Jobico-fn's architecture lies its ability to process events asynchronously. Events are queued up and processed by worker functions, allowing for efficient and scalable event handling. This architecture ensures that events are processed in a timely and reliable manner, even under heavy loads.
The Listener service serves as the entry point for external events, providing a REST API that can function as a webhook. Its primary responsibilities include receiving events, validating them against pre-defined JSON schemas, and subsequently enqueueing them for further processing. This component acts as the bridge between external sources triggering events and the internal processing pipeline.
The Control Service is a centralized hub where Job definitions are stored and can be queried by other components in the system. It acts as the authoritative source for managing job configurations, allowing dynamic adjustments to the processing logic without interrupting the overall system operation. This service facilitates coordination and control over the execution of jobs across the entire platform.
The Queue component acts as a chronological buffer for events, temporarily storing them until they can be processed by the Job Executors. Events are maintained in the queue in the order they are received, ensuring a sequential flow of processing. This component plays a crucial role in decoupling the event reception from the actual event processing, allowing for scalability and efficient handling of bursts of incoming events.
Job Executors are responsible for consuming events from the Queue and providing a controlled environment for the execution of WebAssembly (WASM) functions that process these events. This component manages the execution context, ensuring isolation and security for running custom WASM programs written by tenants. It plays a key role in the dynamic and scalable execution of programmed jobs in response to events.
The File Repository serves as a storage facility for WebAssembly (WASM) programs and JSON schema files. It provides a dedicated API for storing and retrieving these essential files, ensuring accessibility for the Job Executors and enabling tenants to manage their custom program logic efficiently. This component acts as a repository for the building blocks required for event processing.
The Executions Recorder is a service designed to store log information generated by the Job Executors during the execution of jobs. This component acts as a centralized logging system, allowing for post-execution analysis, troubleshooting, and performance monitoring. The recorded information can be queried using both the Command Line Interface (CLI) and Dashboard tools, providing visibility into the historical execution details of jobs.
The GRPC Streaming capability enables real-time monitoring and reaction to changes within the pltaform, facilitating dynamic adjustments, and enhancing the responsiveness of Jobico-fn to evolving requirements.
The CTL service uses streaming to propogate job definition changes to dependent services. Through persistent bidirectional communication channels, this service continuously streams updates to subscribing services, ensuring timely synchronization and consistent execution across the Jobico-fn ecosystem.
The Recorder service utilizes streaming to instantly relay execution results to admin tools, providing users with real-time display of information.
Goico is a specialized Go framework crafted to support the development and evolution of Jobico initiatives.
Goico simplifies the development of services within the Jobico ecosystem. It supports creating services that expose REST or gRPC APIs, fostering a modular and scalable architecture.
Goico enables the utilization of WebAssembly (WASM) runtimes via WAZERO, providing the capability to execute custom logic written in various programming languages compatible with WASM.
Goico integrates an embedded database based on Pebble, offering a key/value store for data management. This embedded database serves as the backbone for storing critical information, supporting the reliable and fast retrieval of data essential for the operation of Jobico.