고객(client)이 요청한 사항에 대해 서비스 하는 객체입니다.
예를 들어 설명드리면,
손님이 호텔에 체크인 한다고 할 때, 손님은 자신의 신원 정보를 호텔직원에게 알려주고, 호텔 직원은 손님의 신원정보를 조회해서, 예약이 되어 있을 경우 고객에게 객실 키를 주고, 없을 경우 고객 정보를 등록 한 후 객실 키를 주게 됩니다.
동일한 로직을 컴퓨터 관점에서 대입하면, 손님은 클라이언트, 호텔 직원은 서버이고, 체크인은 로그인 요청, 고객 정보 등록은 사이트 가입, 객실키 주는건 서버의 응답 이라 보시면 됩니다.
안드로이드 자체만으로는 사용할 때는 서버가 있을 필요가 없으나,
예를 들어 게임 랭킹을 표현 하고 싶다면, 게이머의 최고 점수를 특정한 곳에 알려주고, 다른 게이머의 점수를 조회 할 수 있게 해야 하는데, 알려주고, 조회를 할 수 있는 곳이 필요합니다.
이런 정보를 관리 해서 여러 게이머들이 알 수 있게 하는 곳이 서버입니다.
파이어베이스는 이러한 서버의 역활을 해주는 서비스 중 하나입니다.
체크인 하려면,
1. 체크인을 처리 해 줄 직원이 화장실 같은데 안가고, 카운터에 있어야 하며,
2. 체크인을 처리 해 줄 호텔 직원에게 체크인 요청을 해야 하며,
3. 사우디아라비아 말 처럼 호텔 직원이 모르는 말이 아닌, 호텔 직원이 이해하는 말로 해야 합니다.
이와 비슷하게 서버의 경우 항상 응답을 기다리도록 기동이 되어 있는 상태에서, 고객이 서버의 주소로, 서버가 처리 할 수 있는 request를 보내야 request 에 대해 처리 할 수 있습니다.
간단한 서버 구축의 경우, apache tomcat, nginx, ms iis 같은 걸 PC에 설치해서 서비스 가능한 상태를 만든 후, php, jsp, asp 같은 언어를 통해, request을 처리 하게 구현 합니다.
단지 이 경우 PC를 항상 켜둬야 하고, 고객이 얼마나 들어올지 몰라 PC 부하도 신경써줘야해서, 업체에서 외주위탁 직원을 고용하 듯, 파이어베이스같은 걸 사용하기도 합니다.