Technology stack
IoT Logic uses a different technologies to deliver its services. In this overview, we will outline the specific technologies and their respective roles within our product:
Programming languages
IoT Logic primarily uses Java (version 17 and later) for backend development and JavaScript for frontend development. These languages were chosen for their compatibility with the Navixy GPS tracking platform, allowing seamless integration and smooth operation between products.
Please note that mobile versions will not be supported initially. However, we are working on expanding our offerings to include mobile support in the future.
Message brokers:
Apache Kafka serves as the internal message broker in IoT Logic, handling both internal messages and potential external connections. The decision to use it is based on its ability to create a horizontally scalable platform for processing real-time streaming data with high throughput and low latency.
For external message reception and transmission, we utilize MQTT (Message Queuing Telemetry Transport). This lightweight messaging protocol designed for constrained devices and low-bandwidth, high-latency, or unreliable networks so it is also a great one for IoT Logic.
Databases
MySQL is the primary storage location for business data in IoT Logic. Our team's extensive experience with this open-source relational database management system, along with its feature set, ensures that it meets data needs of our product.
For data warehousing and working with historical values of device attributes in Monitor tool and for creating new attributes, we have incorporated ClickHouse. This open-source column-oriented database management system is designed for online analytical processing (OLAP) and real-time data analysis, making it a suitable choice for handling historical data generated by IoT devices.
Data serialization formats
IoT Logic primarily uses JSON (JavaScript Object Notation) for internal and external serialization of telematics and service messages. JSON's lightweight, human-readable format is widely adopted across various programming languages and platforms, enabling easy integration and communication within our system.
In scenarios where messages need to be transmitted in binary format, we utilize Protocol Buffers (protobuf) as an additional serialization format.
API description
IoT Logic employs OpenAPI as a universal format for describing the product's API, with its implementation based on Swagger. OpenAPI provides several benefits, such as easy code generation and standardized API call descriptions and a user-friendly and collaborative environment for developers working with IoT Logic API.
Additional components
To enhance our development process, improve system management, reliability and scalability of our services, we have incorporated several additional tools and platforms:
Docker: For developing, delivering, and running containerized applications.
Kubernetes: For managing containerized workloads and services.
Graylog: For collecting and storing logs.
Apache Maven: For assembling Java applications.
GitLab: For Continuous Integration and Continuous Delivery (CI/CD).
By integrating these technologies and components, IoT Logic ensures a comfortable development process, efficient system management, reliable and scalable services for users.