이번주 한 주동안 정말 정신없게 새로운 것들을 배웠다. 단지 코드 로직을 어떻게 만드는지에 대한 연습? 보다는 클라이언트/서버에 대한 전반적인 개념들을 접했다. 정말 정신 없었다. 충분히 소화해내지 못한 것 같은데 계속해서 새로운 용어, 개념들이 튀어나와서 머리가 지끈거린 것도 사실이다. 그래서 주말동안 복습겸 정리할 계획이다. 나의 언어로 정리해보지 않으면 내가 어디까지 알고 모르는지 모른다는 것을.... 진짜 블로깅 귀찮지만 왜 중요하고 좋은지 알겠다 ㅜ

Client-Server 2Tier Architecture

쇼핑몰 앱을 사용한다고 해보면, 인터넷 없이는 상품정보를 받아볼 수 없다. 왜냐면 서버에 데이터가 들어있고 그걸 불러와야하기 때문.
만약 데이터가 전부 앱안에 들어있다고하면 새상품을 업데이트할 때마다 앱 자체를 업데이트해야하고, 은행 서버를 통해 정보를 주고받는 결제도 불가능할 것이다.

  • 클라이언트 : 리소스(상품정보 데이터)를 사용하는 앱
  • 서버 : 리소스(상품정보 데이터)가 존재하는 곳

결국 이런 말도 안되게 불편한 상황을 해결하기 위한 방법으로 클라이언트-서버 아키텍쳐 / 2티어 아키텍쳐를 사용하는데, 이는 서버의 리소스를 조회해서 사용하는 클라이언트 + 리소스를 보관하는 서버를 분리시킨 구조를 말한다.

  • 클라이언트 : 리소스 요청
  • 서버 : 응답

2티어 아키텍쳐에서는 클라이언트의 요청이 선행되고 --> 서버의 응답이 온다. 손님이 커피를 주문하지도 않았는데 카페 점원이 커피를 내주지 않는 것처럼, 보통(요청이 없는데도 응답이 오는 경우가 있음 ex.푸쉬알림) 요청하지도 않았는데 응답이 이루어지진 않는다.

3Tier Architecture

  • 클라이언트 --- 서버 --- 데이터베이스

사실 보통은 데이터베이스에 리소스가 따로 보관되고, 서버가 리소스를 전달해주는 역할을 하는데, 이를 3티어 아키텍쳐라고 부른다.

클라이언트 - API - 서버

Protocol

  • 클라이언트와 서버 간의 통신을 위해서 필요한 통신 규약

웹앱 아키텍쳐에서는 클라이언트-서버가 서로 HTTP라는 프로토콜을 이용해 통신한다. HTTP를 이용해 주고받는 메세지를 HTTP 메세지 라고 한다.

  • 통신 : 커피를 주문하는 방법에 앱주문, 카운터 주문, 키오스크처럼 여러가지가 있듯이 프로토콜에도 여러가지 방법이 있다.
  • 규약 : 각 프로토콜마다 지켜야하는 규칙이 있다.

OSI 7 Layers

  • OSI 7 Layers : 네트워크에서 통신이 이루어지는 과정을 7단계로 구분한 것.
    단계별 세부 내용은 아직 정확히 공부해보지 않았으나 어떤 프로토콜이 어떤 계층에 속하는지 정도를 먼저 알아두고 다시 알아보려고 한다.

  • 7단계 응용계층에 속한 프로토콜 종류는 아래와 같다. 위에서 말한 HTTP도 7단계에 속한다.

  • 4단계 전송계층에 속한 프로토콜 종류는 아래와 같다.

API

카페(서버)별로 어떤 메뉴(리소스)가 있는지 알아야 주문을 올바르게 할 수 있다. 이를 위해 메뉴판이 있는 것처럼, 서버는 클라이언트가 리소스를 잘 활용할 수 있도록 하기 위해서 메뉴판(인터페이스-의사소통이 가능하도록 만들어진 접점)을 구축,설계해 제공해야 한다. 이를 API(Application Programming Interface)라고 한다.

HTTP API 디자인

보통 인터넷에 있는 데이터를 요청할 때에는 HTTP와 주소(URL,URI - 인터넷상의 리소스 위치)를 통해 접근할 수 있다.


URL - Uniform Resource Locator, 특정 웹 서버의 특정 파일에 접근하기 위한 경로/주소
URI - Uniform Resource Identifier, 리소스를 고유하게 식별하고 위치를 지정할 수 있다. URL이 URI에 포함된다.

HTTP 요청시 지정할 수 있는 (CRUD 행동에 따른) 메소드

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

이같은 요청 메소드의 목적에 맞는 응답할 수 있도록 URL/URI를 디자인한 것이 좋은 API 디자인이라고 할 수 있다.




(이어서)

profile
- I make something! ✍🏽👩🏻‍💻🎬🎨💖🪑🔨🔜

0개의 댓글