Spring Boot를 이용한 RESTful Web Services 개발 #2 Web Service 개발 방법 SOAP과 REST의 이해

Jake Seo·2021년 9월 10일
1

Spring-boot-restful

목록 보기
2/17

웹 서비스란?

  • 기기와 기기가 World Wide Web이라는 것을 거쳐 통신하는 것
  • 컴퓨터 위에서 동작하는 서버가 네트워크에서 요청을 받고(listening), 웹 문서(HTML, JSON, XML, images, etc...)를 제공하고 웹(HTTP, Internet, WWW)을 통한 웹 애플리케이션 서비스를 만들어 도메인 문제를 해결하는 것

3가지 키

  • 기계-to-기계 혹은 애플리케이션-to-애플리케이션 상호작용을 위해 설계됨
  • 플랫폼에 구애받지 않음
  • 네트워크를 통한 커뮤니케이션이 허가됨

웹 애플리케이션이란?

원격 서버에 저장된 애플리케이션 프로그램으로 브라우저 인터페이스를 통해 인터넷에서 제공된다. 웹메일, 커머스, 금융 서비스 등이 있다.

클라이언트 -> 웹 서버 -> 웹 애플리케이션 -> 데이터베이스 와 같은 순으로 데이터가 전달된다.

SOAP이란?

Simple Object Access Protocol로 주로 XML로 요청을 하고 XML을 응답으로 받는 방식이다.

SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. SOAP에는 몇가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 된다. SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)과 상호 중립성(interaction neutrality)의 개념을 가져왔다.

SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 「헤더」는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 「바디」부분은 주요한 정보인 정보를 가지고 있다.

from wikipedia

SOAP의 요청 예제

JSON과 비교해서는 상당히 번잡하다. 반드시 Envelope > Header, Body와 같은구조로 되어 있어야 한다. 오버헤드가 심하고 개발하기가 어렵고 무겁다.

RESTful이란?

  • Resource의 Representation에 의한 상태 전달
    • 상태란 컴퓨터가 가지고 있는 자원의 상태를 말함
      • 컴퓨터에 저장된 파일
      • 데이터베이스에 저장된 데이터
  • HTTP Method를 통해 Resource를 처리하기 위한 아키텍처

HTTP는 특정 메소드 GET, PUT, POST, DELETE 등의 메소드를 보내고, HTTP Status Code를 받는다.

REST/SOAP 등 API를 제공하는 서비스 아키텍처

SOAP과 REST의 선택 기준

  • 접근 제한 vs 아키텍처 접근
  • 데이터 교환 포맷
  • 서비스 정의하는 방법
  • 전송 규약
  • 구현 방법

최근엔 SOAP을 선호하는 곳은 거의 없다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글