하얀 코딩

[HTTP - 1] Client Server Architecture 본문

HTTP

[HTTP - 1] Client Server Architecture

whitecoding 2023. 1. 5. 15:59

Client Server Architecture

리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 것을 2티어 아키텍처, 또는 클라이언트-서버 아키텍처라고 부릅니다.

 

스마트폰에서 쇼핑몰 앱을 사용해 본 경험이 있나요? 

다들 한 번쯤은 사용해 보았으리라 생각되는데, 혹시 인터넷 연결 없이 쇼핑몰 앱을 실행시켜 본 적이 있나요?

인터넷 연결이 없는 쇼핑몰 앱은 과연 잘 작동할까요?

 

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

클라이언트(client)
네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 수 있는 
응용 프로그램이나 서비스를 말한다.

서버(server)
클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 
컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다.

판매하려는 상품 정보가 전부 앱 안에 담긴 경우를 가정해 보겠습니다.
현실에서 이런 경우는 없겠지만, 만약 앱과 연결된 서버가 존재하지 않는다면 어떤 문제가 생길까요?

 

이 경우에는 끊임없이 앱을 업데이트해야 합니다.
예를 들은 쇼핑몰 앱 1.0 버전을 잘 사용하더라도, 새로운 상품을 업데이트하면 1.0 버전 내에는 

신상품에 대한 정보가 없어서 앱 자체를 전부 업데이트해야 합니다.
앱을 사용하는 사람들에게 상품 정보를 실시간으로 전달하기가 매우 어려울 것입니다.
이 외에도 서버가 없다면 "결제"라는 행동을 할 수 없습니다. "결제"도 결국 금전 정보를 주고받는 은행 서버와의 연결이 필요합니다.

 

빈번한 데이터 업데이트가 필요한 경우, 리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리 시키는 것이 유리합니다.

[그림] Client Server Architecture, 2 Tier Architecture


클라이언트(client, 손님)와 서버(server, 서빙하는 사람)라는 단어의 어원을 떠올리면 보다 이해가 쉽습니다.
리소스에 접근하려는 앱은 카페로 치면 손님과 같습니다. 손님은 아메리카노를 마시기 위해 리소스를 가지고 있는 점원에게 요청해야 합니다. 손님의 요청에 따라 점원은 리소스를 담아 응답합니다.

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

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

[그림] 클라이언트 서버 아키텍처 개념 이해하기


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

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

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

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

[그림] 3-Tier 아키텍처 이해하기


마지막으로, 클라이언트와 서버의 종류를 알아봅시다.

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

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

iOS나 안드로이드와 같은 스마트폰/태블릿 플랫폼, 그리고 윈도우와 같은 

데스크탑 플랫폼에서 이용하는 앱 역시 클라이언트가 될 수 있습니다.

서버는 무엇을 하느냐에 따라 종류가 달라집니다. 파일 서버는 파일을 제공하는 앱, 

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

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

[그림] 클라이언트와 서버 종류

 

'HTTP' 카테고리의 다른 글

[HTTP - 6] 크롬 브라우저 에러 읽기  (0) 2023.01.06
[HTTP - 5] Domain, DNS 기초  (0) 2023.01.05
[HTTP - 4] IP와 PORT  (0) 2023.01.05
[HTTP - 3] URL & URI  (0) 2023.01.05
[HTTP - 2] Client - 서버 통신과 API  (0) 2023.01.05