Architecture
Low-Code Development
Iotellect is a low-code development platform. It's used to create, deploy and operate IoT and digital enterprise applications, products, solutions, and services through a graphical user interface instead of traditional text-oriented programming.
At the same time, Iotellect is a full-stack platform enabling secure, reliable, scalable, and high-performance applications with near-zero coding efforts at all stages: from device protocol parsing to pixel-level UI customization. It's not designed for prototyping or B2C products only, it ensures enterprise-grade standards at all stages of the application enablement process!
Benefits
Low-to-no-code development dramatically lowers the time-to-market for your IoT services. It also brings down development and operation costs by allowing engineers with good industrial knowledge but little or no coding experience to build and deploy both market-oriented products and internal digitalization services. Moreover, our experience shows that teams with high business-specific expertise like being involved in the software development process.
The extremely high pace of low-code adoption is very similar to how Java and .NET introduced a new abstraction and productivity level atop C/C++ development several decades ago.
With the industry's best coverage for consumer and industrial IoT solution building blocks and good integration with large cloud platform vendors, Iotellect brings your R&D productivity to a very high level.
Being the leader in IoT-specific machine data processing, Iotellect also offers multiple advanced tools for collecting, analyzing, and visualizing human-generated data. This makes it possible to further extend your low-code product specification by adding modules and elements specific to CRM, EAM, ERP, MES, ITSM, CMMS, BPM, and similar software solutions.
Besides improving the time and cost metrics of your development process, Iotellect raises the efficiency of all relevant activities: deploying, securing, and scaling web-based services, packaging and distributing on-premise products, integrating custom platform-based solutions into large IT landscapes, and so on.
Large enterprises get even more benefits by leveraging Iotellect. Once the number of platform-based solutions grows, they start acting as the unified digital enterprise platform, effectively re-using existing IT resources and decreasing the number of integration points many times, therefore allowing to minimize R&D team size, hardware expenses, and software support costs.
Iotellect also transforms the business model of integrators and ISVs allowing them to introduce low-code as-a-service that is known as "cloud development services".
To recap, Iotellect allows most departments and divisions of your business to get involved in digital value creation chains and strengthen your R&D teams at a fraction of regular costs.
Unified Data Model
In Iotellect, each device or system object is represented as a so-called context within a hierarchical structure of contexts. Each context includes a set of formalized data elements: variables, functions, and events. A context also contains metadata that describes the data elements available in it. This patented technology is called object normalization.
Some parallels exist with the object-oriented programming:
- Variables support read and write operations
- Functions can be executed by collecting the input values and passing the output
- It’s possible to subscribe to events and receive their instances asynchronously
Contexts also define actions that represent the human-executable operations. There is a key difference between the context actions and the context functions: unlike functions, actions may interact with a user by generating some output or requesting the data input.
Contexts
All contexts of an Iotellect Server dwell in a hierarchical structure called context tree. In this tree, each context has a name, that is its unique ID within its parent, and a path, that is the context's unique ID within the server.
Since all contexts implement the unified interface, they can interoperate within the server context tree regardless of the nature of physical or logical objects represented by them.
Iotellect’s distributed architecture expands interoperation throughout the network, allowing different servers to exchange parts of their context trees.
Data Tables
For even further unification, every piece of context data within Iotellect shares a single data type called data table:
- Values of the context variables are data tables
- Each context function gets an input data table and returns an output data table
- Every instance of a context event has an associated data table with the event-specific data
Tables are flexible enough to hold any kind of data:
- Scalar values (numbers, strings, dates, etc.) are represented by single-cell tables
- Arrays are represented by single-column tables
- Structures are represented by single-row tables
- Complex objects are mapped to hierarchies of nested tables
- Streams are handled as special tables of the unlimited length
- And, naturally, data is stored "as is"
Each data table has a specific format describing the table fields and general properties.
Device Normalization
Drivers and agents map real-life devices and data sources to unified data model contexts.
Settings and metrics provided by the device become context variables, operations the device can perform are mapped to context functions, while notifications and messages sent by the device are converted into context events.
Deployment Types
Iotellect subscriptions are available as cloud (Platform-as-a-Service), on-premise, and hybrid (cloud + edge) scenarios.
You can easily integrate the cloud version of Iotellect with Microsoft Azure, Amazon Web Services or Google Cloud Platform, as well as host on-premise installations within your Microsoft/Amazon/Google infrastructure.
Iotellect’s modular distributed architecture is the key for designing your app to follow the best practices of highly loaded microservices spread from field devices or shop floor up to your preferred datacenter.
Classic scenario for smart devices ready to send data to the cloud
Software Agent libraries enable easy integration of OEM devices and DIY prototypes
Perfect for third-party edge gateways
High availability unlimited scalability via a managed service
Low-code interaction with Microsoft, Amazon and Google cloud platforms
Balanced for compliance and performance between edge and cloud
Seamless logic transfer between Iotellect Server and Iotellect Edge
Local data filtering and processing, no need to send everything to the cloud
Local data filtering and processing, no need to send everything to the cloud
Fully featured autonomous IoT solution on any Edge controller with Java support
Connectivity to IoT sensors and external data sources
Local CEP, Advanced Analytics, and Machine Learning models execution
Independent orchestration of multiple devices by one controller
Northbound/southbound integration with Azure/ AWS/Google cloud services
Good for larger enterprises with semi-isolated networks and own data centers
Full control on data residency and compliance with country-specific legislation
Multiple points of integration into corporate IT landscape via low code
Compatibility with existing IT policies, security auditing requirements, and authentication/ authorization methods
Modules and Marketplaces
Iotellect was initially designed for different industries and environments. Most system components and modules process abstract data which may come from any source. These components are not aware of the physical nature behind this data, in contrast to system operators. Thus, operators may fine-tune data processing to match real-world data flowing in the system.
Custom data acquisition, storage, processing and visualization modules are implemented as server pluggable modules and may be easily installed/uninstalled at any time.
All plugins interact via the unified data model. This modular architecture makes it possible to configure data exchange between any two plugins even if they were never designed to be aware of each other.
Iotellect marketplace ensures distribution of modules and their combinations (a.k.a. Solutions) across Iotellect servers. Those other servers connect to the marketplace to download selected modules and install them locally. What’s special about Iotellect is that our partners can host their own marketplace servers to enable distribution and simplify monetization of their Intellect-based products.
High Performance
Iotellect is designed with unlimited scalability in mind. While communication with a million devices definitely requires careful planning of a distributed installation, even a single edge server based on a 1-core CPU gateway can demonstrate the impressive performance figures.
Number of devices and daily events serviced by a single server is only limited by the available server resources, mostly CPU power and RAM size. It will greatly vary depending on the number of device metrics, their polling/update period, storage settings, and complexity of your application’s logic.
Horizontal Cluster
Iotellect also provides a unique performance technology called Horizontal Cluster: a special variant of deploying Iotellect Platform that is designed for huge multi-tenant installations. Its main objective is unlimited horizontal scalability. Billions of devices in millions of tenants can operate thousands of applications and services, often shared between tenants and managed in a unified environment. Horizontal Cluster is basically intended to fulfill requirements of MSPs and telecom operators, but it can also be used by other customers that forecast significant growth of connected device count and wish to avoid extra expenses for scaling.
High Availability
Iotellect is designed to ensure maximum availability of derived apps and services. Cloud servers leverage high availability as a feature of any subscription plan.
For edge and hybrid installations, the platform provides a two-tire high availability architecture:
- Active-active and active-passive failover clustering scenarios for Iotellect servers
- Fault-tolerance of the underlying storage engine
Distributed Architecture
Iotellect allows building distributed apps scalable vertically and horizontally with its unique distributed architecture. It helps servers and microservices share parts of their unified data model so that they live as a single coordinated organism.
Benefits
Scalability
Edge servers may be heavily loaded with near-real-time control and extensive polling of devices. However the number of devices that can be managed by a single server is limited to several thousand. To scale the system for a larger number of devices, it's reasonable to install multiple servers and join them into a distributed installation.
Role Distribution
Each server in a distributed installation may solve its task or tasks. For example, network management servers check availability and operability of the IP network infrastructure, while physical access control servers are serving requests from door/turnstile controllers. In addition, the supervising operations (such as generating reports or predictive maintenance alerts) can be performed by the primary cluster working in high availability mode.
Centralization
Lower-tier servers may work in a fully automated mode, while their overall operation may be supervised by a single operator via higher-tier server installed in the situation center.
Secure Environment
IoT services are operated by many people, including system administrators, engineers and operators, business analysts mining data, company executives browsing reports, etc.
Iotellect offers flexible and customizable security architecture for such multi-tenant environments.
Role-Based Access Control
Iotellect user accounts have personal or shared permissions that restrict access to system resources and their groups, both local and remote. Every user or user group can be assigned a set for custom roles that define permissions available within selected segments of infrastructure. Both roles and segments are fully customizable to ensure application-specific permission control.
Audit Trails
Iotellect server keeps and reports all important events and activities, including security events. Those internal events that can be persistently stored within Iotellect’s perimeter or forwarded to an external SIEM system.
Communications Security
Security of data exchange between the Iotellect and devices depends on the security and encryption options offered by the device's communication protocol. In the majority of cases, if a certain communication protocol supports some security and data encryption options, these options are also supported by a corresponding device driver. This enables secure device communications whenever possible.
User Access Security
All connections to a Iotellect instance from a browser or via any API are properly encrypted, authenticated and authorized. System-wide security is enabled by using Iotellect’s communication for SSL/TLS-secured data exchange between platform components.
Multi-Tenancy
Iotellect may have an unlimited number of user accounts mapping a complex hierarchy of your business customers or structure of a large corporation. Individual permissions are grouped into roles specific to your app while devices and system resources are divided into segments so that multiple apps can be provided to your customer base via shared infrastructure.
Regardless of whether you have a publicly available product or internal corporate service, your user database often resides within a dedicated platform, such as ERP or similar. In such a case, Iotellect eliminates the need to replicate all user profiles into your IoT app: just use backend-side external user authentication module (such as LDAP/AD) or frontend-side web SSO module (such as OAuth).
Interfacing an external user database is a two-way process. New customers may register directly in your app providing some personal information (name, e-mail, company/department, phone number, and so on). Once registration is verified, Iotellect will push the new user profile to an external database.