구어체로 설명하는 다이어리

웹 API 설계: 놓치기 쉬운 핵심 - 웹 API와 REST 본문

읽을거리/Web API Design

웹 API 설계: 놓치기 쉬운 핵심 - 웹 API와 REST

씨씨상 2024. 10. 21. 20:12

 

 

웹 API와 REST

 

 

API 설계자의 역할

API의 역할은 애플리케이션 개발자가 최대한 성공할 수 있도록 돕는 것입니다. API를 설계할 때는 애플리케이션 개발자의 관점에서 디자인 선택을 고민해야 합니다.
왜일까요? 아래의 가치 사슬을 살펴보세요. 애플리케이션 개발자는 전체 API 전략의 핵심입니다. API를 설계할 때 가장 중요한 설계 원칙은 애플리케이션 개발자의 생산성과 성공을 극대화하는 것입니다.

 

 

올바르게 설계하는 것은 중요합니다. 왜냐하면 설계는 어떻게 사용될 것인지를 전달하기 때문입니다. 그러면 질문은 이렇게 바뀝니다—애플리케이션 개발자에게 최적의 이익을 주는 설계는 무엇일까요?

 

웹 API란 무엇인가?
웹 API는 사람이 사용하는 웹 브라우저가 아닌 임의의 컴퓨터 프로그램에 의해 접근되는 웹사이트에 접근하기 위해 사용하는 HTTP 요청 및 응답의 패턴입니다.

 

REST란 무엇인가?
REST는 HTTP 자체의 아키텍처 스타일을 설명하는 이름으로, HTTP 명세서를 작성한 주요 저자 중 한 명에 의해 정의되었습니다. HTTP는 현실이며, REST는 이를 형성한 일련의 설계 아이디어입니다. 실질적인 관점에서 우리는 HTTP와 이를 사용하여 API를 개발하는 방법에 초점을 맞출 수 있습니다. REST의 중요성은 우리가 HTTP와 그것의 사용에 대해 생각하는 방식을 이해하는 데 도움을 준다는 데 있습니다.

오직 HTTP 개념만을 사용하도록 설계된 몇몇 웹 API가 존재합니다. 하지만 대부분의 현대 API는 HTTP의 개념 중 일부를 사용하면서 다른 컴퓨팅 기술의 개념도 혼합해 사용합니다. 예를 들어, 많은 웹 API는 매개변수를 가진 엔드포인트(endpoint)를 기준으로 정의됩니다. 엔드포인트와 매개변수는 HTTP나 REST에서 고유한 용어나 개념이 아니며, 원격 프로시저 호출(Remote Procedure Call, RPC) 및 관련 기술에서 유래된 개념입니다. RESTful이라는 용어는 HTTP의 고유한 개념과 기술을 이전 기술보다 더 많이 사용하는 웹 API를 지칭하지만, 다른 개념도 혼합된 형태입니다. 많은 훌륭한 API가 이러한 방식으로 설계되었으며, 사실 이러한 혼합 스타일은 현재 가장 일반적인 API 스타일일 것입니다. HTTP와 REST는 정확하게 정의되어 있지만, RESTful이라는 용어는 그렇지 않습니다—이는 "보면 알 수 있다"는 식의 개념 중 하나입니다.

우리는 HTTP와 REST에 대해 엄격한 입장은 아닙니다—API의 효율성이 중요하지만, 다른 조건이 동일하다면, 가능하면 HTTP만을 사용하는 것이 더 낫다고 믿습니다. 이렇게 하면 시간이 지남에 따라 API에서 학습하고 관리해야 할 고유한 기능이 줄어들 것입니다. 이 믿음은 문제를 해결하는 데 필요한 최소한의 개념만 사용하는 것이라는, 보다 근본적인 아이디어인 오캄의 면도날(Occam's Razor)의 표현입니다. 앙투안 드 생텍쥐페리의 말을 인용하자면, “완벽함이란 더 이상 추가할 것이 없을 때가 아니라 더 이상 뺄 것이 없을 때에 달성된다.”

우리가 웹 API에 HTTP 개념만을 제한해야 하는 이유는 개념적 최소주의뿐만이 아닙니다. 분산 API 설계자가 추구하는 가장 중요한 특징 중 하나는 클라이언트와 서버 간의 결합을 최소화하는 것입니다. 결합의 측정 기준은 어느 한쪽이 변경되더라도 다른 쪽이 영향을 받지 않고 얼마나 쉽게 변할 수 있는가입니다. 결합을 최소화하는 것은 API 설계에서 가장 어려운 과제 중 하나입니다. HTTP는 이 측면에서 전례 없는 성공 기록을 가지고 있을 것입니다. 20년 전에 작성된 HTTP 클라이언트를 여전히 웹에서 지원하고 있다는 사실을 생각해 보세요. 이는 HTTP가 클라이언트를 서버로부터 얼마나 효과적으로 분리했는지를 보여줍니다. HTTP가 이러한 수준의 분리를 어떻게 달성했는지에 대한 분석과 설명은 REST 논문의 주요 내용 중 하나이며, 분리는 처음부터 API 플랫폼으로서 HTTP에 관심을 가져야 하는 주요 이유 중 하나입니다. RPC에서 파생된 개념과 같은 다른 모델의 개념을 HTTP 위에 계층화하는 것이 논란이 되는 이유 중 하나는 이러한 개념들이 HTTP 설계의 느슨한 결합 품질을 훼손하는 경향이 있기 때문입니다. 이것이 우리가 HTTP만을 고수해야 하는 또 다른 중요한 이유입니다.

이 책의 나머지 부분에서는 HTTP의 고유한 개념만을 사용하여 웹 API를 설계하는 방법을 탐구합니다. 우리는 이 품질을 가진 웹 API를 REST API라고 부릅니다.

 

 

 

 

 

[출처]

APIGEE-WEB-API-DESIGN-THE-MISSING-LINK