사용자 앱에 모든 데이터를 할당하게 되면, 데이터 업데이트마다, 앱도 같이 업데이트 해야하는 불편함이 있다. 따라서 앱에서는 데이터 사용만 할 수 있게 하고, 데이터 제공은 서버라는 별도의 공간에서 이루어지도록 분리한다.
이렇게 두 시스템을 분리해 둔 것을 클라이언트-서버 아키텍처(2-Tier 아키텍처) 라고 이야기한다.
클라이언트는 데이터를 사용하는 역할을 하며, 서버에게 데이터를 요청한다.
이 요청이 먼저 이루어져야 서버가 응답한다.
서버는 요청을 받고 나서야 데이터를 클라이언트에게 제공한다.
서버는 요청을 받으면 무조건 응답을 돌려줘야 한다.
클라이언트의 종류에는 웹, 앱이 있고, 서버에는 파일을 제공하는 파일 서버, 메일 주고받게끔 하는 메일서버, 데이터베이스를 제공하는 DB서버, 웹 서버 등이 있다.
DB 서버의 경우, 서버 자체는 데이터 “전달”만 하고, 데이터는 DB라는 별도의 저장공간에 분리하기도 한다.
이를 3-Tier 아키텍처라고 부른다.
이때, 서버는 데이터베이스에 데이터를 요청하기 때문에 , 서버도 클라이언트가 될 수 있다.