Architecture Overview

FastIoT is designed as a service architecture.

We use the following technologies to support the architecture:
  • nats.io as a message broker for inter module communication.

  • Docker for module runtime management with docker-compose for managing many containers
    • In production there is one separate docker container for each FastIoT Service

    • For testing purposes modules can be simulated or run locally and interact with other FastIoT or infrastructure services running in docker containers

  • MongoDB, MariaDB and others for data storage, s. fastiot.db for information on database handling.

Modules and Messaging Basics

Messages:
  • … can be sent or received by modules via the NATS Broker using publish and subscribe.

  • … are sent via a NATS Broker subject. The subject has a name, a message type and optionally a response type.

Services:
  • … are configured via environment variables or yaml-Files, depending on your needs

  • … are executed in a Docker environment (for production), via command line, or within an IDE like PyCharm (for development)

  • … connect themselves to the NATS Broker

  • … publish and subscribe to the subjects of the NATS Broker

  • … log their messages to the NATS Broker