  Internet of Things (IoT), the emerging computing infrastructure that refers
to the networked interconnection of physical objects, incorporates a plethora
of digital systems that are being developed by means of a large number of
applications. Many of these applications administer data collection on the edge
and offer data storage and analytics capabilities in the cloud. This raises the
following problems: (i) the processing stages in IoT applications need to have
separate implementations for both the edge and the cloud, (ii) the placement of
computation is inflexible with separate software stacks, as the optimal
deployment decisions need to be made at runtime, and (iii) unified fault
tolerance is essential in case of intermittent long-distance network
connectivity problems, malicious harming of edge devices, or harsh
environments. This paper proposes a novel fault-tolerant architecture CEFIoT
for IoT applications by adopting state-of-the-art cloud technologies and
deploying them also for edge computing. We solve the data fault tolerance issue
by exploiting the Apache Kafka publish/subscribe platform as the unified
high-performance data replication solution offering a common software stack for
both the edge and the cloud. We also deploy Kubernetes for fault-tolerant
management and the advanced functionality allowing on-the-fly automatic
reconfiguration of the processing pipeline to handle both hardware and network
connectivity based failures.
