Client-server architecture helps in separating components and allow them to work interdependently of one another. This type of architecture can be seen as a layered pattern where the clients are on the higher level and the server on the lower level. Databases reside in server side and clients send requests to access the database. The server grants the request and the clients are able to display data. The session state can either be maintained by the server (Stateful Server) or by the client (Stateless Server).