Fog computing is a system level architecture that distributes computing, storage, control and networking functions closer to users along the continuum between IoT devices and the cloud. It aims to address issues like high latency and network congestion that result from processing and analyzing IoT data solely in the cloud. Key characteristics include supporting real-time interactions, mobility, low latency applications and an extremely large number of heterogeneous devices.