Client Server Architecture

Sasha Park·2021년 3월 17일
0

Achievement Goals

  • 클라이언트, 서버, API 가 무엇인지 정의 내릴 수 있다.
  • 웹 개발과 관련한 클라이언트-서버 아키텍처를 이해할 수 있다.
  • 클라이언트와 서버가 서로 통신하기 위해 사용하는 HTTP 프로토콜에 대해 이해할 수 있다.
  • HTTP 메소드의 종류를 이해할 수 있다.
  • HTTP 메시지가 어떤 구성으로 이루어져 있는지 이해할 수 있다.
  • 서버에서 정의한 API 문서를 통해, 서버가 제공하는 리소스를 이용할 수 있다.
  • API 테스팅 툴 Postman을 이용할 수 있다.
  • API를 활용해서 UI를 만들 수 있다.
  • AJAX가 무엇이고, 왜 필요한지를 이해할 수 있다.
  • AJAX 통신을 가능하게 하는 fetch API를 이용할 수 있다.

2-tier architecture

리소스가 존재하는 곳과 리소스를 사용하는 앱을 분리시킨 형태의 아키텍처. 혹은 클라이언트-서버 아키텍처라고 부름. 리소스를 사용하는 앱이 바로 클라이언트, 리소스가 존재하는 곳은 서버.

3-tier architecture

서버는 리소스를 전달해주는 역할만 가지고 있고, 리소스를 저장하는 공간은 database에 두고 있음. 상기 2티어 아키텍처에 데이터베이스를 추가한 형태를 3-tier 아키텍처라고 칭함.

Front-end, Back-end

  • Front-end: 사용자가 사용할 수 있게 상호 작용을 하는 앱을 개발하는 영역

  • Back-end: 상품 정보를 api로 노출, 로그인, 로그아웃 등 사용자 인증을 주로 다루는 영역. 더불어 데이터 베이스 등 시스템 설계까지 도맡아서 함.

Client와 Server 종류

  • client: 플랫폼에 따라 구분됨. 보통 web site, mobile/desktop application이 있음.

  • server : 어떤 기능을 수행하느냐에 따라 구분됨. web, file, mail 있으며, 마찬가지로 database도 data를 제공하는 서버의 한 종류임.


Protocol

클라이언트와 서버가 communication을 하는데 필요한 통신 규약 . protocol의 종류는 여러가지이며 정상적인 통신을 위해서 각자 지켜야 할 규약이 존재. HTTP는 web application architecture에서 주로 쓰이는 protocol임.

OSI 7 Layers

  • HTTP: web에서 HTML, JSON 등의 정보를 주고받는 protocol
  • HTTPS: HTTP에서 보안이 강화
  • FTP: 파일 전송 protocol
  • SMTP: 메일 전송 protocol
  • SSH: CLI 환경의 원격 컴퓨터에 접속하기 위한 protocol
  • RDP: windows 계열의 원격 컴퓨터에 접속하기 위한 protocol
  • WebSocket: 실시간 통신, Push 등을 지원하는 protocol

이외에 두가지 기본적인 protocol

  • TCP: HTTP, FTP 통신의 기본이 되는 양방향 인터넷 protocol
  • UDP: 단방향으로 작동해서 단순하고 빠르지만 신뢰성이 낮은 인터넷 protocol

Application Programming Interface

Client가 리소스를 잘 활용할 수 있도록 Server에서 제공하는 Interface(메뉴판).

인터넷에 있는 데이터를 요청할 때 HTTP protocol을 사용하며, URL, URI를 통해 접근 가능함. parameter 사용을 위해 다음 사이트를 참조할 것. Query string

<출처: 코드스테이츠>

  • HTTP API: method 개념이 등장. 앞전 DOM에서 배운 CRUD에서 read는 GET, create은 POST, update는 PUT or PATCH, delete은 DELETE로 대응된다. 자세한 건 하기 사이트 참조.
    HTTP 요청 method

HTTP 응답상태 코드

HTTP message의 시작 줄과 header를 묶어서 요청 head라고 부름.
http message의 payload는 body(본문)이라고 부름.

AJAX(AsynchronousJavaScriptAndXML)

서버와 자유롭게 통신 수 있고(XMLHttpRequest), 페이지 깜빡임 없이 seamless 하게 작동하는 (JS와 DOM 이용) dynamic web page를 가능케 하는 기법. JS 내 비동기적 동작을 가능케하는 기술들을 통틀어서 AJAX라고 부름.

AJAX 이전에는 유저가 버튼을 클릭하거나 요청해야만 웹 브라우저가 새로운 내용을 가져와서 시간이 많이 걸림. 하지만 본 기법이 도입되고 나서 화면의 일부분만 업데이트하는게 가능해져 신속성과 끊김없는 사용자 경험을 가능케 함.

profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글