Client Server Architecture

김동현·2021년 7월 16일
0

Interation With Server

목록 보기
1/7

Client Server Architecture

클라이언트 서버 아키텍처, 다른 말로는 2티어 아키텍처라고 불리는 설계 방식

서버(server)는 영어 단어 그대로 제공(server)하는 주체이다.

인터넷 연결이 없다면, 쇼핑몰 앱은 정상적으로 동작할 수 없는데 그 이유는 상품 정보를 인터넷 어딘가에 존재하는 서버로부터 받아오기 때문이다.

판매하려는 상품 정보가 전부 앱 안에 담긴 경우를 가정해 보면 앱과 연결된 서버가 존재하지 않기 때문에 앱을 끊임없이 업데이트 해야한다.

쇼핑몰 앱을 잘 사용하더라도 신상품에 대한 정보가 없어서 앱 자체를 전부 업데이트 해야한다.

또한 서버가 없다면 "결제" 라는 행동을 할 수 없는데 "결제" 역시 금전 정보를 주고받는 은행 서버와의 연결이 필요하기 때문이다.

이렇게 상품 정보같은 리소스가 존재하는 곳과, 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍처 또는, 클라이언트-서버 아키텍처 라고 부른다.

리소스를 사용하는 앱이 바로 "클라이언트",

리소스가 제공(server)하는 곳은 "서버"라고 부른다

그림을 보면 상품 정보는 서버에서 다루고 있으며,

클라이언트는 단지 상품 정보를 조회할 뿐이다.

이처럼 클라이언트와 서버는 요청과 응답을 주고 받는 관계이다.

클라이언트-서버 아키텍처에서는 요청이 선행되고, 그 후에 응답이 온다.

요청하지도 않았는데, 응답이 오는 경우는 없다.

3-Tier 아키텍처

일반적으로 서버는 리소스를 전달해주는 역할만 담당한다.

리소스를 저장하는 공간을 별도로 마련해 두는 데, 이 공간을 "데이터베이스"라고 부른다.

데이터베이스는 창고와 같은 역할을 한다.

이처럼 기존 2티어 아키텍처에 데이터베이스가 추가된 형태를 3티어 아키텍처라고 한다.

프론트엔드와 백엔드

클라이언트처럼 사용자가 직접 눈으로 보고, UI를 클릭 또는 터치하는 등의 상호작용을 할 수 있는 앱을 주로 개발하면 프론트엔드 개발자라고 한다.

반면, 사용자 눈에 보이지 않지만, 상품 정보를 API로 노출한다던지, 로그인/로그아웃, 권한 관리 등의 사용자 인증을 주로 다루는 개발자는 백엔드 개발자라고 부른다.(서버가 단순히 전달만 하는 것은 아님)

백엔드 개발자는 데이터베이스 등의 시스템 설계까지 도맡아서 하는 경우도 많다.

클라이언트와 서버 종류

클라이언트는 보통 플랫폼에 따라 구분된다.

브라우저를 통해 주로 이용하는 웹(Web) 플랫폼에서의 클라이언트는 웹사이트 또는 웹앱이라고 부른다

iOS나 안드로이드와 같은 스마트폰/태블릿 플랫폼, 그리고 윈도우와 같은 데스크탑 플랫폼에서 이용하는 앱 역시 클라이언트가 될 수 있다.

서버는 무엇을 하느냐에 따라 종류가 달라진다.

파일 서버는 파일을 제공하는 앱, 웹 서버는 웹사이트에서 필요로 하는 정보들을 제공하는 앱, 메일 서버는 메일을 주고 받을 수 있도록 도와주는 앱이다.

데이터베이스도 데이터 제공자로서 일하므로 일종의 서버라고 볼 수 있다.

profile
개발자로서의 첫걸음

0개의 댓글

관련 채용 정보