클라이언트 서버 아키텍처와 api

»

클라이언트 서버 아키텍처와 API

클라이언트 서버 아키텍처

%E1%84%8F%E1%85%B3%E1%86%AF%E1%84%85%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%89%E1%85%A5%E1%84%87%E1%85%A5%20%E1%84%8B%E1%85%A1%E1%84%8F%E1%85%B5%E1%84%90%E1%85%A6%E1%86%A8%E1%84%8E%E1%85%A5%E1%84%8B%E1%85%AA%20API%200b5ebb25628a465eae218e8347bf073f/Untitled.png

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

이렇게 리소스가 존재하는 곳리소스를 사용하는 앱 을 분리시킨 것을 2티어 아키텍터, 즉 클라이언트 서버 아키텍처 라고 합니다

클라이언트는 프론트엔드 영역 서버는 백엔드 영역이라고 부릅니다

3티어 아키텍처

%E1%84%8F%E1%85%B3%E1%86%AF%E1%84%85%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%89%E1%85%A5%E1%84%87%E1%85%A5%20%E1%84%8B%E1%85%A1%E1%84%8F%E1%85%B5%E1%84%90%E1%85%A6%E1%86%A8%E1%84%8E%E1%85%A5%E1%84%8B%E1%85%AA%20API%200b5ebb25628a465eae218e8347bf073f/Untitled%201.png

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

서버는 보통 리소스를 전달해줄 뿐, 리소스를 저장하는 공간은 데이터베이스라는 창고에 둡니다

클라이언트와 서버 종류

%E1%84%8F%E1%85%B3%E1%86%AF%E1%84%85%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%89%E1%85%A5%E1%84%87%E1%85%A5%20%E1%84%8B%E1%85%A1%E1%84%8F%E1%85%B5%E1%84%90%E1%85%A6%E1%86%A8%E1%84%8E%E1%85%A5%E1%84%8B%E1%85%AA%20API%200b5ebb25628a465eae218e8347bf073f/Untitled%202.png

클라이언트와 서버의 통신

클라이언트와 서버간의 통신은 요청응답 으로 구성됩니다. 즉 요청이 있어야 응답이 옵니다

그전에 알아야할 개념이 있습니다. 프로토콜 이라는 개념인데요

프로토콜은 통신 규약 , 즉 약속입니다

웹애플리케이션 아키텍에서는 HTTP 라는 프로토콜을 이용해 서로 통신합니다 이때 주고받는 메시지는 HTTP 메시지 라고 합니다

주요 프로토콜의 종류는 다음과 같습니다

%E1%84%8F%E1%85%B3%E1%86%AF%E1%84%85%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%89%E1%85%A5%E1%84%87%E1%85%A5%20%E1%84%8B%E1%85%A1%E1%84%8F%E1%85%B5%E1%84%90%E1%85%A6%E1%86%A8%E1%84%8E%E1%85%A5%E1%84%8B%E1%85%AA%20API%200b5ebb25628a465eae218e8347bf073f/Untitled%203.png

API

APIApplication Programming Interface의 약자로써 interface 즉 의사소통이 가능하도록 만들어진 접점을 제공해주는 것을 말합니다

즉 서버가 리소스를 활용할 수 있도록 인터페이스를 제공해주는 것을 API라고합니다

HTTP API 디자인 같은 경우 좋은 예제가 있습니다. 바로 메소드가 등장해서 CRUD와 비슷하게됩니다

  • 조회(Read): GET
  • 추가(Create): POST
  • 갱신(Update): PUT 또는 PATCH
  • 삭제(Delete): DELETE

%E1%84%8F%E1%85%B3%E1%86%AF%E1%84%85%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%A5%E1%86%AB%E1%84%90%E1%85%B3%20%E1%84%89%E1%85%A5%E1%84%87%E1%85%A5%20%E1%84%8B%E1%85%A1%E1%84%8F%E1%85%B5%E1%84%90%E1%85%A6%E1%86%A8%E1%84%8E%E1%85%A5%E1%84%8B%E1%85%AA%20API%200b5ebb25628a465eae218e8347bf073f/Untitled%204.png