클라이언트 : 전문가의 서비스를 받는 고객과 의뢰인의 의미로, 네트워크를 통하여 서버로부터 정보를 제공받는 응용 프로그램, 브라우저, 서비스 등 사용자
서버 : 정보나 서비스를 제공하는 제공자의 의미로, 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
Request(요청)
, Response(응답)
클라이언트와 서버는 요청과 응답을 주고받는 관계이며,클라이언트는 손님으로,
서버는 서비스로 볼 수있다. 서버(server)는 영어 단어 그대로 제공(serve)하는 주체이다.
인터넷 연결이 없는 앱은 과연 잘 작동할까?
만약 앱과 연결된 서버가 존재하지 않는다면 어떤 문제가 생길까? 끊임없이 앱을 업데이트해야 한다.
예를들어 X신사 같은 쇼핑몰 앱의경우
새로운 상품을 업데이트 하려면 1.0 버전 내에는 신상품에 대한 정보가 없어서 앱 자체를 전부 업데이트해야 한다.
앱을 사용하는 사람들에게 상품 정보를 실시간으로 전달하기가 매우 어려울 것 이 외에도 서버가 없다면 '결제'라는 행동을 할 수 없다 결제'도 결국 금전 정보를 주고받는 은행 서버와의 연결이 필요함
이렇게 상품 정보 같은 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍처
, 또는 클라이언트-서버 아키텍처
라고한다.
일반적으로 서버는 리소스를 전달해 주는 역할만 담당한다. 리소스를 저장하는 공간을 별도로 마련해 두는데 이 공간을 '데이터베이스'라고 부른다. 데이터베이스는 창고와 같은 역할
데이터베이스가 추가된 형태를 3티어 아키텍처
라 한다.
클라이언트와 서버가 서로 요청과 응답을 나누는데, 제대로된 통신을 하기위해 약속을 지켜야한다.
김밥집에다가 갑자기 다운펌해달라고 할수 없듯이 클라이언트와 서버간의 지켜야 하는 약속이 존재한다. 그 통신 규약을 프로토콜이라고 하며, 대표적으로 HTTP라는 프로토콜이 있고 주요 사용하는
응용계층인 HTTP
, HTTPS
, FTP
, SMTP
,SSH
, RDP
, WebSocket
전송계층인 TCP
, UDP
가 있다
필요시에 찾고 알아만두자.
서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스(interface)를 제공하는데 이것을 API라 하고 클라이언트 와 서버는 API를 통하여 요청과 응답을 한다.
김밥을 주문할때 메뉴를 보고 주문하듯 API 는 메뉴판 역할을한다.