클라이언트 - 서버 아키텍처
클라이언트는 네트워크가 연결되어있는 서버로부터 정보를 제공받는 컴퓨터를 의미한다. 서버는 네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템을 의미한다. 즉, 클라이언트와 서버는 요청과 응답을 주고받는 관계이다. 아래 그림과 같이 리소스를 사용하는 앱이 클라이언트, 리소스를 제공하는 곳을 서버라고 하고 2-Tier 아키텍처 또는 클라이언트 서버 아키텍처라고 부른다.

카페를 예를 들면 손님은 커피를 얻기 위해 점원에게 주문을 해야하고 점원은 손님의 주문대로 커피를 제공합니다. 손님이 주문을 하지않으면 커피가 제공되지않는것처럼 클라이언트와 서버도 마찬가지입니다. 클라이언트와 서버도 요청이 선행되야 응답이 온다.
다만, 클라이언트가 요청을 하지 않아도 서버가 일방적으로 제공 할 수 있다. 어떤 웹 사이트에 들어갔을 때,서버가 일방적으로 클라이언트에 전달하는 작은 데이터를 쿠키라 하며 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단이다.
클라이언트 - 서버 아키텍처 - 데이터베이스(DB)
일반적으로 서버는 리소스를 전달하는 역할만 담당하고 리소스를 저장하는 공간을 데이터베이스라고 한다. 데이터베이스는 창고와 같으며 기존 2티어 아티텍처에 데이터베이스가 추가된걸 3티어 아티텍처라 한다.

프론트엔드와 백엔드
클라이언트처럼 사용자가 직접 눈으로 보고, UI를 클릭 또는 터치하는 등의 상호작용을 할 수 있는 앱을 주로 개발하면 프론트엔드 개발자라고 합니다. 반면 사용자 눈에 보이지 않지만, 상품 정보를 API로 노출한다든지, 로그인/로그아웃, 권한 관리 등의 사용자 인증을 주로 다루는 개발자는 백엔드 개발자라고 부릅니다. (서버가 단순히 전달만 하는 게 아닙니다!) 백엔드 개발자는 데이터베이스 등의 시스템 설계까지 도맡아서 하는 경우도 많습니다.

클라이언트와 서버 종류
클라이언트의 종류는 플랫폼에 따라 구분된다. 브라우저를 통해 이용되는 웹(Web) 플랫폼에서의 클라이언트는 웹사이트 또는 웹 앱이라고 불린다. 스마트폰 / 태블릿 플랫폼, 윈도우와 같은 데스크탑 플랫폼에서 이용하는 앱 역시 클라이언트가 될 수 있다.

서버는 서버의 역할에 따라 종류가 달라진다. 파일을 제공하는 앱은 파일 서버. 웹사이트에서 필요로 하는 정보들을 제공하는 앱은 웹 서버, 메일을 주고 받을 수 있도록 도와주면 메일 서버, 게임서버, 프록시서버, 컴퓨팅서버가 있다. 데이터 베이스 역시 데이터의 제공자로서 일종의 서버라고 볼 수 있다.
HTTP를 이용한 클라이언트-서버 통신과 API
프로토콜(Protocol)
통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉, 통신 규약 및 약속이다.


사람이 대화를 하듯 클라이언트와 서버는 서로 HTTP라는 프로토콜을 통해 대화를 나누는데 이때 HTTP를 통해 주고 받는 메세지를 "HTTP 메세지" 라고 한다. HTTP는 프로토콜의 한 방법일뿐이고 다양한 프로토콜이 존재한다. 또한 프로토콜은 각자의 프로토콜마다 지켜야하는 규약이 존재한다.
주요 프로토콜
응용계층
- HTTP : 웹에서 HTML, JSON 등의 정보를 주고 받는 프로토콜
- HTTPS : HTTP에서 보안이 강화된 프로토콜
- FTP : 파일 전송 프로토콜
- SMTP : 메일을 전송하기 위한 프로토콜
- SSH : CLI 환경의 원격 컴퓨터에 접속하기 위한 프로토콜
- RDP : Windows 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
- WebSocket : 실시간 통신, Push 등을 지원하는 프로토콜
전송계층
- TCP : HTTP, FTP 통신의 등의 근간이 되는 인터넷 프로토콜
- UDP : (양방향의 TCP와는 다르게) 단방향으로 작동되는 훨씬 더 단순한고 빠르지만, 신뢰성이 낮은 프로토콜
API(Application Programming Interface)
API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체이며 소통을 어떻게 할 지 문서로 정리하거나 공통의 기준을 정한 것이다.


HTTP API
HTTP(Hypertext Trasnfer Protocol)를 통신 방식으로 사용하는 API를 HTTP API라고 하며 HTTP API는 endpoint를 API gateway로 활용하여, HTTP 요청을 통해서 서버에 접근할 수 있도록 만들어 준다. 현대 Web API의 상당 부분이 HTTP API로 이루어지고 있다.
HTTP 메소드
HTTP 메소드는 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단이다. 최초의 HTTP에서는 GET 메소드 하나밖에 없었지만 이후 다양한 메소드들이 생겨났다.
주요 메소드
- POST : 요청 데이터 처리, 주로 데이터 등록에 사용 = Create
- GET : 리소스 조회 = Read
- PUT or PATCH : 리소스를 대체, 해당 리소스가 없으면 생성 = Update
- DELETE : 리소스 삭제 = Delete or Destory
'TIL' 카테고리의 다른 글
| 9일차 웹서비스 개발 기초 (0) | 2022.04.27 |
|---|---|
| 8일차 웹서비스 개발 기초 (0) | 2022.04.26 |
| 6일차 리눅스 (0) | 2022.04.22 |
| 5일차 리눅스 (0) | 2022.04.21 |
| 4일차 리눅스 (0) | 2022.04.20 |