클라이언트 - 서버 아키텍처

hyo·2022년 3월 17일
0

HTTP

목록 보기
1/9
post-thumbnail
post-custom-banner

클라이언트 - 서버

클라이언트서버에대해서 알아보고
클라이언트 서버 아키텍처 , 다른 말로는 2티어 아키텍처라고 불리는 설계 방식에 대해서도 알아보자.

  • 서버(server)

    서버(server)란 데이터를 요구하면 데이터 보내주는 프로그램!
    즉 리소스가 존재하는곳!
    영어단어 그대로 제공(serve)하는 주체이다!

    ex -> 유튜브 유저가 영상을 보고싶어서 요청을 하면 유튜브 서버에서 영상을 제공해줌

  • 클라이언트(client)

클라이언트(client)란 리소스를 사용하는 곳, 리소스에 접근하려는 앱! 영어단어 그대로 손님 즉, 요청을하는 곳!

클라이언트(client, 손님)서버(server, 서빙하는사람)로 예를 들어 이해해보자.
->

리소스에 접근하는 앱은 마치 손님(client)과 같아서,
리소스를 가지고 있는 점원(server)에게 물품(리소스)을 요청해야함.
요청에 따라, 점원(server)은 리소스를 담아 응답한다.

이처럼 클라이언트서버는 요청과 응답을 주고받는 관계이다.
클라이언트 - 서버 아키텍처에서는 요청이 선행되고 그 후에 응답이 온다.


클라이언트 - 서버 아키텍처 === 2티어 아키텍처

쇼핑몰 앱을 통해 쇼핑을 할때 인터넷 연결이 없다면 쇼핑몰 앱은 정상적으로 동작할 수 없다.

이유는 상품정보를 인터넷 어딘가에 존재하는 서버(server)로부터 받아오기 때문이다.

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

이 경우, 끊임없이 앱을 업데이트를 해야만 한다.
쇼핑몰 앱 1.0버전을 잘 사용하더라도 새로운 신상품을 업데이트하면
1.0버전 내에는 신상품에 대한 정보가 없어서 앱 자체를 전부 업데이트해야한다.
앱을 사용하는 사람들에게 상품 정보를 실시간으로 전달하기가 매우 어려울 것이다.

이외에도 서버가 없다면 "결제"라는 행동도 할 수 없다.
결제를 하려면 은행,카드,등등 서버와의 연결이 필요하기 때문이다.

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

그림을 보면 상품정보는 서버에서 다루고있고, 클라이언트는 상품 정보를 조회할 뿐이다.

이처럼, 리소스가 존재하는 곳리소스를 사용하는 앱분리시킨 것을
2-Tier 아키텍처, 같은말로 클라이언트-서버 아키텍처 라고 부른다.

3티어 아키텍처(3-Tier 아키텍처)

일반적으로 서버(server)는 리소스를 전달해 주는 역할만 담당한다.
리소스를 저장하는 공간을 별도로 마련해두는데 이공간을 데이터베이스 라고 부른다.
데이터베이스는 창고와 같은 역할을 한다.

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

클라이언트와 서버 종류

클라이언트(client)는 보통 플랫폼에 따라 구분된다.
브라우저를 통해 주로 이용하는 웹(web) 플랫폼에서의 클라이언트는 웹사이트 또는 웹 앱 이라고 부른다.

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

서버(server)는 무엇을 하느냐에 따라 종류가 달라진다.
파일 서버는 파일을 제공하는 앱, 웹 서버는 웹사이트에서 필요로 하는 정보들을 제공하는 앱, 메일서버는 메일을 주고받을 수 있도록 도와주는 앱이다.

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

profile
개발 재밌다
post-custom-banner

0개의 댓글