Architecture
ClearBlade IoT Enterprise is a development and runtime environment to run IoT applications efficient and at scale.
Purpose
ClearBlade IoT Enterprise operates as:
IoT application stack execution environment
Development environment
Edge orchestration platform
IoT Enterprise functional capabilities
ClearBlade IoT Enterprise operates as a full stack, middleware, or backend to an IoT application with its six core modules:
Module | Features |
---|---|
JavaScript engine designed for highly parallelized microservices | |
A generic API for interacting with data stores, such as ClearBlade Cloud, MySQL, MongoDB, and PostgreSQL | |
A fully customizable user dashboard for interacting with your IoT application | |
A highly customizable configuration for pushing microservices, data, sync behavior, and portals to edge groups | |
A scalable, lightweight MQTT broker for interacting with IoT devices | |
A robust model for deploying software and hardware adapters to many new or existing edges |
API/Broker and IoT Enterprise/Edge integration
Development environment
Deploying an IoT solution once is simple, but a production solution will require many development iterations, new features, and security updates. ClearBlade IoT Enterprise operates as a development environment, allowing developers to modify micro-services, collections, portals, and other assets within the centralized platform. The changes are synced across all edges. This creates a simple, centralized development experience that can seamlessly sync across many edges running on different machines in many geospatially distant networks.
Edge orchestration
The Edge orchestration feature allows a single platform to
Administrate deployment to configure which microservices, collections, portals, and assets are deployed to edges and synced
Start, stop, pause, deploy, and undeploy adapters to edge groups
Monitor real-time system edge resource usage to evaluate appropriate hardware needs
Multi-tenanted model
Developers can use a single ClearBlade IoT Enterprise instance at once. Each developer can run many IoT applications simultaneously, and systems can be shared between developers. Each IoT application, called a system, includes the six above modules and runs completely isolated from every other platform system.
Scaling
ClearBlade IoT Enterprise is comprised of cluster nodes. Each node contains a certain number of vCPUs. Additional nodes provide additional vCPU and memory capacity to support devices. For some solutions, the following estimates can be made using nodes with eight vCPUs.
Number of devices | Cluster nodes required | Storage (GB) required per month |
---|---|---|
1,000 | 1 | 1.5 |
10,000 | 1 | 15 |
25,000 | 2 | 37 |
100,000 | 6 | 146 |
250,000 | 14 | 364 |
500,000 | 28 | 728 |
1,000,000 | 56 | 1,456 |
10,000,000 | 556 | 14,551 |
ClearBlade
Name | Value | Details |
---|---|---|
Platform messages process rate | 300 | Per ClearBlade node per second |
Devices supported per ClearBlade node | 200,000 | = msg_proc_per_node_per_sec / (msg_per_hour / 3600), = 30 / (6 / 3600) |
IoT
Name | Value | Details |
---|---|---|
Device message size | 349 bytes | MQTT publish, packet size. See appendix |
Device hourly message rate | 6 | Per hour, ClearBlade best practice: Interval > 10 minutes |
Device data generated | 1.49 megabytes | Per device per month = 349 * 6 * 24 * 31 / 1024 / 1024 |
Number of devices | Cluster nodes required | Storage (GB) required per month |
---|---|---|
1,000 | 1 | 1.5 |
10,000 | 1 | 15 |
25,000 | 2 | 37 |
100,000 | 6 | 146 |
250,000 | 14 | 364 |
500,000 | 28 | 728 |
1,000,000 | 56 | 1,456 |
10,000,000 | 556 | 14,551 |
Appendix
Average MQTT publish message size
Topic:
**_monitor/_asset/D4-53-83-A0-AF-F9/location**
Contents:
{
"name": "pump",
"id": "214wsafd21-42112-1dfdsfsd-243-ddff",
"amps": 244,
"description": "some description",
"enabled": true,
"last_update": "2019-09-04T17:57:16.875586669Z",
"location": { "latitude": 12.132233, "longitude": 123.1234 }
}
Packet component | Size (bytes) |
---|---|
Topic | 42 |
Payload | 298 |
Control, length, and meta | 9 |
Total | 349 bytes |