  Computer systems have evolved over the years starting from sizable,
single-user, slow, and expensive machines to multi-user, fast, cheaper, and
small-sized machines. The use of multi-user computer networks has given rise to
a new paradigm of computing known as Distributed Systems. A distributed system
is regarded as software consisting of a collection of dependent network
communication and computational nodes. This paradigm yields high performance
while also maintaining high efficiency due to the decentralization of various
computer related tasks to several computer nodes that are interconnected. Even
if distributed systems have proven to be beneficial over the years it also has
some design flaws, security concerns and challenges. In this paper, the main
objective is to define these issues, challenges and security concerns while
also examining the various solutions developed over the years to resolve them.
This paper also briefly covers the components as well as the working of
Distributed Systems.
