이번주 한 주동안 정말 정신없게 새로운 것들을 배웠다. 단지 코드 로직을 어떻게 만드는지에 대한 연습? 보다는 클라이언트/서버에 대한 전반적인 개념들을 접했다. 정말 정신 없었다. 충분히 소화해내지 못한 것 같은데 계속해서 새로운 용어, 개념들이 튀어나와서 머리가 지끈거린 것도 사실이다. 그래서 주말동안 복습겸 정리할 계획이다. 나의 언어로 정리해보지 않으면 내가 어디까지 알고 모르는지 모른다는 것을.... 진짜 블로깅 귀찮지만 왜 중요하고 좋은지 알겠다 ㅜ
쇼핑몰 앱을 사용한다고 해보면, 인터넷 없이는 상품정보를 받아볼 수 없다. 왜냐면 서버에 데이터가 들어있고 그걸 불러와야하기 때문.
만약 데이터가 전부 앱안에 들어있다고하면 새상품을 업데이트할 때마다 앱 자체를 업데이트해야하고, 은행 서버를 통해 정보를 주고받는 결제도 불가능할 것이다.
결국 이런 말도 안되게 불편한 상황을 해결하기 위한 방법으로 클라이언트-서버 아키텍쳐 / 2티어 아키텍쳐를 사용하는데, 이는 서버의 리소스를 조회해서 사용하는 클라이언트 + 리소스를 보관하는 서버를 분리시킨 구조를 말한다.
2티어 아키텍쳐에서는 클라이언트의 요청이 선행되고 --> 서버의 응답이 온다. 손님이 커피를 주문하지도 않았는데 카페 점원이 커피를 내주지 않는 것처럼, 보통(요청이 없는데도 응답이 오는 경우가 있음 ex.푸쉬알림) 요청하지도 않았는데 응답이 이루어지진 않는다.
사실 보통은 데이터베이스에 리소스가 따로 보관되고, 서버가 리소스를 전달해주는 역할을 하는데, 이를 3티어 아키텍쳐라고 부른다.
웹앱 아키텍쳐에서는 클라이언트-서버가 서로 HTTP라는 프로토콜을 이용해 통신한다. HTTP를 이용해 주고받는 메세지를 HTTP 메세지 라고 한다.
OSI 7 Layers : 네트워크에서 통신이 이루어지는 과정을 7단계로 구분한 것.
단계별 세부 내용은 아직 정확히 공부해보지 않았으나 어떤 프로토콜이 어떤 계층에 속하는지 정도를 먼저 알아두고 다시 알아보려고 한다.
7단계 응용계층에 속한 프로토콜 종류는 아래와 같다. 위에서 말한 HTTP도 7단계에 속한다.
4단계 전송계층에 속한 프로토콜 종류는 아래와 같다.
카페(서버)별로 어떤 메뉴(리소스)가 있는지 알아야 주문을 올바르게 할 수 있다. 이를 위해 메뉴판이 있는 것처럼, 서버는 클라이언트가 리소스를 잘 활용할 수 있도록 하기 위해서 메뉴판(인터페이스-의사소통이 가능하도록 만들어진 접점)을 구축,설계해 제공해야 한다. 이를 API(Application Programming Interface)라고 한다.
보통 인터넷에 있는 데이터를 요청할 때에는 HTTP와 주소(URL,URI - 인터넷상의 리소스 위치)를 통해 접근할 수 있다.
URL - Uniform Resource Locator, 특정 웹 서버의 특정 파일에 접근하기 위한 경로/주소
URI - Uniform Resource Identifier, 리소스를 고유하게 식별하고 위치를 지정할 수 있다. URL이 URI에 포함된다.
HTTP 요청시 지정할 수 있는 (CRUD 행동에 따른) 메소드
이같은 요청 메소드의 목적에 맞는 응답할 수 있도록 URL/URI를 디자인한 것이 좋은 API 디자인이라고 할 수 있다.
(이어서)