[WebDevCurriculum] server 동작 관련 유용한 개념들

Hyo Kyun Lee·2021년 11월 10일
0

WebDevCurriculum

목록 보기
20/44

1. API와 endpoint 개념에 기반한 통신 과정

1-1. API

대상 간 진행하는 상호작용(원하는 resource/ 정보/ data 등을 얻는 과정)을 도와주는 도구, 매개체

API는 단순하게 말하면 개발자, client, server 간 서로 협의한 규칙 내에서 간편하게 정보를 주고받기 위한 명령어(혹은 링크)이다.

하지만 API의 개념은 더 나아가, 원하는 정보를 담고있는 장소로 이해하고 있는 것이 좋다.

단순히 링크에 국한된 개념이 아니며, 두 대상(체계) 간 이루어지는 모든 상호작용의 출발점이자 endpoint를 이해하는데 API를 폭넓게 이해하고 있어야 한다.

API는 client, server 간 요청(req)/응답(res)에서도 적용할 수 있다.

두 대상이 서로에게 전달하는 것(client의 req, server의 res)모두 API인 것이고, API가 보내지는 client(혹은 이에 준하는 곳), 받는 server 모두 endpoint라 할 수 있다.

1-2. endpoint

상호작용이 이루어지는 장소, 상호작용의 종점.

API 등에 의해 보여지는(노출되는) 인터페이스이다.

1차적인 의미는 요청/응답으로 이루어지는 네트워킹 과정을 통해 도출된 결과물이다.

하지만 endpoint는 API의 결과 / API가 이루어지는 과정 등 폭넓은 의미로 이해하는 것이 좋다.

웹에서 이루어지는 API(req/res)는 보통 URL(흔히 말하는 링크)형식이고, 이러한 URL요청을 통해 나타나는 인터페이스와 함께 해당 요청 자체를 endpoint로 지칭하는 경우가 많다.

REST API를 endpoint로 제공한다.

쉽게 말하면

app.get('/print', console.log('HELLO WORLD');

위와 같이 get요청에 대한 실행 logic이 있다고 할때,

  • client가 보내는 req요청은 localhost:PORT/print가 될 것이고
  • 이 API에 맞추어 server는 res를 실행하고, 출력화면을 보여준다.

이때 요청하는 주소인 localhost:PORT/print은 하나의 endpoint가 되며, 이에 따른 REST API 역시 endpoint라 지칭할 수 있다.

이러한 API를 프로그래밍하는 과정을 "REST API를 엔드포인트로 제공한다"라 한다.

2. server의 세분화

server는 data를 관리하는 장소, client req를 control하는 장소로 나눌 수 있다.

2-1. API server

JSON data, resource 등 데이터에 접근하거나 관리하는 역할을 맡는 server.

우리가 말하는 API, 상호작용은 보통 (server side에서 프로그래밍하여) data나 resource를 확보하기 위한 과정을 일컫는다.

API server는 그러한 data, resource가 담겨져 있는 곳에 접근하거나, 이러한 data들을 확보할 수 있도록 관련 API에 따라 동작하는 server를 말한다.

2-2. client server

client의 request를 control하고 이를 인터페이스(결과물을 보여주는)하는 server.

REST 설계에서 반드시 존재해야하는 client와 server, 즉 client에게 인터페이스를 보여주는 API에 따라 동작하는 server를 말한다.

data나 resource에 접근하기 보다는, 말 그대로 보여주기 위한 API가 hosted 되어 있다.

API server에서 data를 얻고 parsing, 이러한 가공된 data를 client server에 최종적으로 제공하는 역할을 맡는다.

3. express

server의 동작, 운영 등 중앙처리기능을 제공하는 framework의 일종.

실행은 node.js가 담당하고, 실제 server의 운영 및 처리 logic은 express를 통해 구현한다.

HTML 양식에서 !를 입력하면 DOC HTML 양식을 자동적으로 제공하듯이, web server를 동작하는 express 양식 또한 어느 정도 정해져있다.

  • bin/www
  • routers(routing)
  • app.js

이러한 express server 기본구성을 바탕으로 structure를 확장해 나가면 된다.

server 구성은 client interface를 처리하는 client-server, API를 통해 요청(동작)을 처리하는 API-server로 분할하여 구성해보는 연습을 해보도록 한다.

4. routing / 네트워킹 확인

routing 내역이나 data 전달 등 내부적인 동작 상황은 콘솔 > 네트워크에서 자세하게 확인할 수 있다.

프로그래밍을 하면서 이러한 부분은 반드시 확인을 하면서 진행하는 것을 잊지 말자.

5. 참조링크

API
https://velog.io/@djaxornwkd12/API%EC%99%80-ENDPOINT%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

endpoints
https://smartbear.com/learn/performance-monitoring/api-endpoints/

REST API / client & server
https://blog.hubspot.com/website/what-is-rest-api
https://www.geeksforgeeks.org/rest-api-architectural-constraints/

API server
https://www.cdata.com/apiserver/

0개의 댓글