노트 #48 | 클라이언트와 서버간 아키텍처, API

HyeonWooGa·2022년 8월 4일
0

노트

목록 보기
49/74

개요

HTTP 에서 사용하는 클라이언트 - 서버 아키텍쳐와 통시하는 방법인 API에 대해 학습힙니다.


학습 목표

  • 클라이언트-서버 아키텍처를 이해할 수 있다.
  • HTTP를 이용한 클라이언트-서버 통신을 이해할 수 있다.
  • API의 개념을 이해할 수 있다.

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

Client

  • 리소스를 사용하는 앱
  • 손님은 아메리카노를 마시기 위해 리소스를 가지고 있는 점원에게 요청 합니다.

Server

  • Serve(제공) 하는 주체
  • 점원은 손님의 요청에 따라 리소스를 담아 응답 합니다.

Client-Server Architecture (2 Tier Architecture)

  • 1) 리소스가 존재하는 곳 2) 사용하는 앱을 분리시킨 것
  • 클라이언트와 서버는 요청과 응답을 주고받는 관계입니다.
  • 요청이 선행되고 그 후에 응답이 옵니다.

Database

  • 창고와 같은 역할
  • 리소스를 저장하는 별도의 공간

3 Tier Architecture

  • 2 티어 아키텍처(서버-클라이언트 아키텍처)에 데이터베이스가 추가된 형태입니다.
  • 일반적으로 서버는 리소스를 전달해 주는 역할만 담당합니다.

Client 의 종류

  • 웹 사이트, 웹 앱 (브라우저)
  • 앱 (모바일, 데스크탑)

클라이언트-서버 통신과 API

클라이언트-서버 통신

  • 요청과 응답으로 구성됩니다.
  • 요청이 있어야만 응답이 옵니다.
  • 클라이언트-서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않습니다.

Protocol (프로토콜)

  • 통신 규약 (약속)
  • 손님이 점원에게 외계어로 주문을 할 수 없듯, 주문을 하기 위해 꼭 지켜야 하는 약속
  • 주문하기 1) 앱 이용 2) 키오스크 이용 등 다양한 방법이 있듯이 프로토콜은 다양합니다.
  • 각 프로토콜마다 지켜야하는 규약이 존재합니다.

주요 Protocol

  • OSI 7계층
    • 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것입니다.
    • 7단계 중 특정한 곳에 이상이 생기면 다른 단계를 건드리지 않고 해당 단계만 고칠 수 있습니다.

HTTP (Hyper Text Transfer Protocol)

  • 가장 많이 쓰이는 클라이언트-서버 통신 프로토콜
  • 클라이언트-서버는 HTTP 메시지 를 주고받으며 대화합니다.

Interface

  • "의사소통이 가능" 하도록 만들어진 "접점"
  • 메뉴목록도 인터페이스입니다.

API (Application Programming Iterface)

  • 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해 주는 것 입니다.
  • 앱이 요청할 수 있고 프로그래밍 가능한 인터페이스입니다.
  • 스타벅스에서 콜드브루, 아메리카노와 같은 메뉴목록(인터페이스)을 만들어 놓았기 때문에 고객이 적절한 요청을 할 수 있는 것과 같은 의미입니다.
  • 컴퓨터에게 요청할 때는 정확한 주문 방법 을 따라 요청해야 합니다.
  • 서버가 리소스 전달을 위한 메뉴판, 즉 API를 구축해놓아야 클라이언트가 이를 활용 할 수 있습니다.
  • 보통 인터넷에 있는 데이터를 요청할 때에는 HTTP 프로토콜을 사용하며 주소(URL, URI)를 통해 접근할 수 있게 됩니다

URL 디자인 예제

  • 스타벅스 API 제공

HTTP API 디자인

  • HTTP API 디자인에는 Best Practice 가 존재합니다.

  • URL 디자인은 비교적 단순하나 "메서드"라는 개념이 등장합니다.
  • CRUD 각각의 행동과 일치하는 HTTP 메서드의 종류가 존재합니다.
    • GET : READ
    • POST : UPDATE
    • PUT : UPDATE
    • PATCH : UPDATE
    • DELETE : DELETE

참조

코드스테이츠 프론트엔드 부트캠프

profile
Aim for the TOP, Developer

0개의 댓글