RESTful 웹 서비스란?

KIM YONG GU·2023년 10월 13일
0

웹개발 Knowledge

목록 보기
5/10
post-custom-banner

RESTful 웹 서비스

Restful 웹 서비스는 Representational State Transfer(REST) 아키텍처 원칙을 따르는 웹 서비스 디자인 스타일입니다. REST는 웹 서비스의 리소스를 표현하고 상태를 전달하기 위한 아키텍처 스타일로, HTTP 프로토콜을 기반으로 동작합니다. RESTful 웹 서비스는 다음과 같은 주요 특징을 가지고 있습니다:

  1. 자원 (Resources): RESTful 웹 서비스는 자원(리소스)을 중심으로 동작합니다. 이러한 자원은 고유한 URI(Uniform Resource Identifier)를 가집니다. 예를 들어, 블로그 게시물, 사용자, 주문, 제품 등의 리소스가 될 수 있습니다.

  2. HTTP 메서드: HTTP 프로토콜의 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 CRUD(Create, Read, Update, Delete) 동작을 수행합니다. 각 메서드는 특정한 의미와 동작을 가지며, URI와 메서드 조합으로 자원을 조작합니다.

  3. 상태를 저장하지 않음 (Stateless): RESTful 서비스는 클라이언트와 서버 간의 통신은 상태를 저장하지 않고, 각 요청은 필요한 모든 정보를 포함하도록 설계됩니다. 이로 인해 서버의 부하를 줄이고 확장성을 개선합니다.

  4. 표현 (Representation): 리소스의 표현은 다양한 형식으로 제공될 수 있습니다. 주로 JSON 또는 XML 형식을 사용하지만, 다른 형식도 가능합니다.

  5. 계층화 (Layered): RESTful 웹 서비스는 여러 계층으로 구성되어 있어, 각 계층은 특정 역할을 수행하고 서로 독립적입니다. 이는 시스템의 확장성과 관리성을 향상시킵니다.

  6. 인터페이스 일관성 (Uniform Interface): RESTful 서비스는 인터페이스가 일관성을 가지며, 클라이언트와 서버 간의 통신은 표준화된 메서드 및 메시지 포맷을 사용합니다.

RESTful 웹 서비스는 간결하고 간단한 디자인으로 웹 서비스를 구축할 수 있는 장점을 가지고 있으며, 많은 웹 애플리케이션과 모바일 앱에서 사용되고 있습니다. RESTful 서비스는 HTTP를 이용해 통신하므로, HTTP 지식을 가지고 있다면 상대적으로 쉽게 이해하고 개발할 수 있습니다.


RESTful 웹 서비스는 간단한 디자인 및 경량화된 통신 프로토콜을 사용하기 때문에, 작고 간단한 서비스부터 대규모 서비스까지 다양한 범위에서 사용될 수 있습니다. 그러나 RESTful 웹 서비스가 복잡한 애플리케이션에는 적합하지 않을 수도 있습니다. RESTful 서비스를 설계하고 구현할 때 고려해야 하는 몇 가지 주요 고려 사항이 있습니다:

  1. 복잡한 비즈니스 로직: 복잡한 비즈니스 로직이 있는 애플리케이션의 경우, RESTful 서비스가 너무 간단하거나 유연성이 부족할 수 있습니다. 이러한 경우에는 더 복잡한 웹 서비스 아키텍처 또는 다른 아키텍처를 고려해야 할 수 있습니다.

  2. 트랜잭션과 상태 관리: RESTful 서비스는 상태를 저장하지 않는 상태 없음(Stateless) 아키텍처를 가지고 있습니다. 따라서 복잡한 트랜잭션 처리 또는 상태 관리가 필요한 경우에는 RESTful로만 서비스를 구현하기 어려울 수 있습니다.

  3. 보안 및 인증: 보안 및 사용자 인증이 중요한 경우에는 RESTful 서비스를 보완하기 위한 추가적인 보안 및 인증 메커니즘이 필요할 수 있습니다.

  4. 데이터베이스 연동: 데이터베이스와의 연동이 복잡하거나 대량의 데이터를 다루는 경우, RESTful 서비스의 성능 및 효율성에 영향을 미칠 수 있으므로 이에 대한 고려가 필요합니다.

  5. 확장성: RESTful 서비스는 확장성이 중요한 경우에도 복잡한 경우가 있을 수 있으며, 확장성을 고려한 설계가 필요합니다.

복잡한 애플리케이션의 경우, RESTful 서비스를 사용하면서 이러한 제약을 고려하고, 필요한 경우에는 RESTful 서비스를 보완하거나 다른 아키텍처와 통합하여 사용할 수 있습니다. 그리고 서비스의 요구 사항과 성격에 따라 적절한 아키텍처를 선택하는 것이 중요합니다.

REST API? RESTful? 그리고 Rest 규약?

"REST API," "RESTful," 그리고 "REST 규약"은 모두 웹 서비스 아키텍처에서 사용되는 용어입니다. 이들은 서로 연관되어 있지만 조금씩 다른 의미를 갖습니다.

  1. REST (Representational State Transfer):
  • REST는 Roy Fielding이 2000년에 제안한 웹 아키텍처의 한 형식입니다.
  • REST는 네트워크 아키텍처 원칙의 모음으로, 리소스를 식별하고 상태를 전달하기 위한 간단하면서도 확장 가능한 아키텍처 스타일을 제공합니다.
  • REST는 다양한 특징을 가지고 있지만, 주로 리소스 중심 아키텍처, 상태를 표현하는 것, 자체 서술적인 메시지, 하이퍼미디어(예: 하이퍼링크) 사용 등이 특징입니다.
  1. REST API (RESTful API):
  • REST API는 RESTful 웹 서비스를 제공하는 데 사용되는 API입니다.
  • RESTful API는 REST 아키텍처 스타일을 따르며, 자원을 식별하고 해당 리소스에 대한 상태를 주고받기 위해 HTTP 프로토콜을 사용합니다.
  • RESTful API는 리소스를 고유하게 식별하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스와 상호작용합니다.
  1. REST 규약 (REST Constraints):
  • REST 규약은 REST 아키텍처에서 따라야 하는 일련의 제약 사항입니다.
  • Roy Fielding은 자신의 박사학위 논문에서 REST를 정의할 때, RESTful 시스템이 가져야 하는 6가지 제약 조건을 제시했습니다. 이를 REST 규약이라고 합니다.
  • REST 규약에는 Stateless(무상태성), Client-Server 구조, Cacheable(캐시 가능), Uniform Interface(일관된 인터페이스), Layered System(계층화), Code on Demand(선택적 코드 다운로드) 등이 포함됩니다.

요약하면, REST는 웹 아키텍처 스타일을 나타내며, RESTful은 이를 따르는 API를 의미하며, REST 규약은 RESTful 시스템이 가져야 하는 일련의 제약을 나타냅니다. RESTful API는 REST 규약을 따르도록 설계된 API를 의미합니다.

profile
Engineer, Look Beyond the Code.
post-custom-banner

0개의 댓글