El Internet de las Cosas (IoT) hace referencia al conjunto de objetos conectados a través de internet que tienen la capacidad de sentir y actuar sobre el entorno, logrando una representación digital del mundo físico. Estos dispositivos (IoT) presentan una gran volatilidad debido a su naturaleza y están sometidos a una gran cantidad de interrupciones de servicio (p.ej. agotamiento de batería). En el contexto de aplicaciones críticas, no se requiere únicamente una alta fiabilidad en el nivel del Software sino también en la parte Hardware. Durante los últimos años el IoT ha sido integrado en Internet gracias a arquitecturas multicapa, como la arquitectura cloud-fog-edge, que permite acercar la lógica de las aplicaciones lo más cerca posible de los dispositivos, reduciendo la latencia y el ancho de banda en las comunicaciones con el IoT.
Este Trabajo se centra en la aplicación de técnicas de tolerancia a fallos para sistemas IoT en una arquitectura cloud-fog-edge, en concreto, se persigue la definición de lo que denominamos “dispositivos Shadow”: dispositivos virtuales dentro de una aplicación IoT que se caracterizan por tener una serie de propiedades (estados) resultantes de monitorizar propiedades del mundo real. Por otra parte, también pueden recibir comandos para actuar sobre el entorno. Estos dispositivos estarán asociados a un dispositivo real, de manera que, si dejase de funcionar, podrá ser sustituido por otro con características similares, permitiendo a la aplicación IoT que siga funcionando. Estos dispositivos Shadow estarán también replicados usando contenedores, de manera que, si ocurre algún fallo en la máquina donde esté almacenado el dispositivo virtual, pueda ser sustituido por otra réplica restaurándose su estado