Over the past few decades, the conventional means for data computation were the exploitation of centralized cloud computers. However, with the proliferation of mobile devices and latency-sensitive applications, the conventional approach has grown inadequate. Instead, the edge computing paradigm is created to remedy the shortcomings of the cloud-based systems by transitioning computation of data from centralized data centers to the devices at the edge of the network. This presents a utopia of benefits such as low latency responses, efficient power consumption and ease of mobility for computing services. However, the implementation of edge computing is non-trivial and brings forth various challenges that must be addressed in order for edge computing to be fully developed. The goal of this paper is to better understand these challenges in hopes of neutralizing them.