클라이언트
와 서버
에대해서 알아보고
클라이언트 서버 아키텍처
, 다른 말로는 2티어 아키텍처
라고 불리는 설계 방식에 대해서도 알아보자.
서버(server)
란 데이터를 요구하면 데이터 보내주는 프로그램!
즉 리소스가 존재하는곳!
영어단어 그대로 제공(serve)하는 주체이다!
ex -> 유튜브 유저가 영상을 보고싶어서 요청을 하면 유튜브 서버에서 영상을 제공해줌
클라이언트(client)
란 리소스를 사용하는 곳, 리소스에 접근하려는 앱! 영어단어 그대로 손님 즉, 요청을하는 곳!
클라이언트(client, 손님)
와 서버(server, 서빙하는사람)
로 예를 들어 이해해보자.
->
리소스에 접근하는 앱은 마치 손님(client)
과 같아서,
리소스를 가지고 있는 점원(server)
에게 물품(리소스)
을 요청해야함.
요청에 따라, 점원(server)
은 리소스를 담아 응답한다.
이처럼 클라이언트
와 서버
는 요청과 응답을 주고받는 관계이다.
클라이언트 - 서버 아키텍처
에서는 요청이 선행되고 그 후에 응답이 온다.
쇼핑몰 앱을 통해 쇼핑을 할때 인터넷 연결이 없다면 쇼핑몰 앱은 정상적으로 동작할 수 없다.
이유는 상품정보를 인터넷 어딘가에 존재하는 서버(server)
로부터 받아오기 때문이다.
예를 들어 판매하려는 상품정보가 전부 앱안에 담긴 경우를 가정해보자.
현실에서는 이런경우는 없지만, 만약 앱과 연결된 서버가 존재하지 않는다면 어떤 문제가 생길까?????
이 경우, 끊임없이 앱을 업데이트를 해야만 한다.
쇼핑몰 앱 1.0버전을 잘 사용하더라도 새로운 신상품을 업데이트하면
1.0버전 내에는 신상품에 대한 정보가 없어서 앱 자체를 전부 업데이트해야한다.
앱을 사용하는 사람들에게 상품 정보를 실시간으로 전달하기가 매우 어려울 것이다.
이외에도 서버가 없다면 "결제"라는 행동도 할 수 없다.
결제를 하려면 은행,카드,등등 서버와의 연결이 필요하기 때문이다.
빈번한 데이터 업데이트가 필요한 경우,
리소스가 존재하는 곳
과 리소스를 사용하는 앱
을 따로 분리시키는것이 유리하다.
그림을 보면 상품정보는 서버에서 다루고있고, 클라이언트는 상품 정보를 조회할 뿐이다.
이처럼, 리소스가 존재하는 곳
과 리소스를 사용하는 앱
을 분리
시킨 것을
2-Tier 아키텍처, 같은말로 클라이언트-서버 아키텍처 라고 부른다.
일반적으로 서버(server)
는 리소스를 전달해 주는 역할만 담당한다.
리소스를 저장하는 공간을 별도로 마련해두는데 이공간을 데이터베이스
라고 부른다.
데이터베이스
는 창고와 같은 역할을 한다.
이처럼 기존 2티어 아키텍처에 데이터베이스
가 추가된 형태를 3티어 아키텍처
라고 부른다.
클라이언트(client)
는 보통 플랫폼에 따라 구분된다.
브라우저를 통해 주로 이용하는 웹(web) 플랫폼에서의 클라이언트는 웹사이트 또는 웹 앱 이라고 부른다.
iOS나 안드로이드와 같은 스마트폰/태블릿 플랫폼, 윈도우와 같은 데스크탑 플랫폼에서 이용하는 앱 역시 클라이언트
가 될 수 있다.
서버(server)
는 무엇을 하느냐에 따라 종류가 달라진다.
파일 서버
는 파일을 제공하는 앱, 웹 서버
는 웹사이트에서 필요로 하는 정보들을 제공하는 앱, 메일서버
는 메일을 주고받을 수 있도록 도와주는 앱이다.
데이터베이스
도 데이터 제공자로써 일하므로 일종의 서버
라고 볼 수 있다.