  Technological evolution of mobile user equipments (UEs), such as smartphones
or laptops, goes hand-in-hand with evolution of new mobile applications.
However, running computationally demanding applications at the UEs is
constrained by limited battery capacity and energy consumption of the UEs.
Suitable solution extending the battery life-time of the UEs is to offload the
applications demanding huge processing to a conventional centralized cloud
(CC). Nevertheless, this option introduces significant execution delay
consisting in delivery of the offloaded applications to the cloud and back plus
time of the computation at the cloud. Such delay is inconvenient and make the
offloading unsuitable for real-time applications. To cope with the delay
problem, a new emerging concept, known as mobile edge computing (MEC), has been
introduced. The MEC brings computation and storage resources to the edge of
mobile network enabling to run the highly demanding applications at the UE
while meeting strict delay requirements. The MEC computing resources can be
exploited also by operators and third parties for specific purposes. In this
paper, we first describe major use cases and reference scenarios where the MEC
is applicable. After that we survey existing concepts integrating MEC
functionalities to the mobile networks and discuss current advancement in
standardization of the MEC. The core of this survey is, then, focused on
user-oriented use case in the MEC, i.e., computation offloading. In this
regard, we divide the research on computation offloading to three key areas: i)
decision on computation offloading, ii) allocation of computing resource within
the MEC, and iii) mobility management. Finally, we highlight lessons learned in
area of the MEC and we discuss open research challenges yet to be addressed in
order to fully enjoy potentials offered by the MEC.
