공부/Spring

RESTful Web Service 개발 - WEB Service 개발 방법 SOAP과 REST의 이해

데부한 2023. 1. 10. 23:51
반응형

출처 : 인프런 해당 강의 페이지

 

Spring Boot를 이용한 RESTful Web Services 개발

WEB Service 개발 방법 SOAP과 REST의 이해

 

Web Service & Web Application

Web Service

  • World Weid Web(WWW)를 통해 이기종 간의 통신 서비스를 제공한다.
  • 네트워크를 통해 특정한 서버의 포트를 열어 놓고, 클라이언트의 요청을 받은 HTML, JSON, XML, images 등과 같은 웹 문서를 제공한다.
  • 웹 서비스는 WWW, Internet, HTTP의 기술을 사용하는 웹을 통해 특정한 도메인의 문제를 해결하기 위한 Web Application을 뜻하기도 한다.
  • 즉, 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기 위한 소프트웨어 시스템이다.
  • Web Service 이전에도 이기종 간의 통신을 위한 개발 기술이 있었으나 복잡성, 통신 프로토콜의 표준화 등의 문제로 인해 개발에 많은 어려움이 있었음.

Web Application

  • 서버에 저장되어 있고 웹 브라우저를 통해 실행할 수 있는 프로그램
  • Web application의 종류
    • webmail
    • retail sales
    • banking
    • auctions 등
  • 웹 어플리케이션을 실행할 수 있는 서버를 웹 어플리케이션 서버라고 함.
  • 클라이언트의 요청이 html, css, javascript, images와 같은 정적인 문서일 경우에는 웹 서버에서 처리가 가능함.
  • 프로그램 동작이나 계산, 외부 프로그램과의 서비스 연동 작업 같은 경우에는 클라이언트→ 웹서버→ 웹 어플리케이션 순으로 전달하여 웹 어플리케이션에서 처리된 결과 값을 다시 웹 어플리케이션→ 웹서버→ 클라이언트 순으로 전달한다.

 

Web Service

  • 데이터 흐름
    • 웹 어플리케이션 → 웹 서비스로 전달되는 정보를 request라고 함
      • 웹 서비스 입장에서는 input
    • 웹 서비스→ 웹 어플리케이션으로 전달되는 정보를 response라고 함
      • 웹 어플리케이션 입장에서는 output
  • 웹 서비스 정의를 위한 정보들
    • Request/Response Format
    • Request Structure
    • Response Structure
    • Endpoin(URL이나 함수)
  • 일반적으로 XML 또는 JSON으로 데이터 구조를 표현한다. 최근에는 XML보다 더 가벼운 JSON 포맷을 더 많이 사용함.

 

SOAP(Simple Object Access Protocol)

  • http, https와 같은 통신 프로토콜의 XML 기반 메세지를 컴퓨터 네트워크 상에서 전달할 수 있는 시스템을 뜻한다.
  • SOAP은 서비스 통신을 위해 XML을 사용한다.
  • 일반적인 구조
    • SOAP 엔벨로프 : 모든 SOAP 메시지의 루트 요소이며 두 개의 하위 요소(header, body)를 포함한다.
    • SOAP 헤더 : 엔벨로프의 선택적 하위 요소이며 메시지 경로를 따라 SOAP 노드가 처리할 응용 프로그램 관련 정보를 전달한다.
    • SOAP 바디 : 엔벨로프의 필수 하위 요소이며 메시지의 최종 수신자 정보를 가지고 있다.

출처 : IBM

  • SOAP의 XML 기반 메시지는 복잡한 구조로 되어있으며 그에 따른 오버헤드가 심하고 개발의 난이도가 증가하며 무거운 단점을 가지고 있다.
  • 그래서 최근에는 REST 방식의 개발을 더 선호한다.

 

RESTful

  • REST(REpresentational State Transfer)
    • 클라이언트와 서버 간 통신 방식
    • Resource의 Representation에 의한 상태 전달
      • 상태 : 컴퓨터가 가지고 있는 자원의 상태(파일, DB 데이터 등..)
    • HTTP Method를 통해 Resource를 처리하기 위한 아키텍처
    • 플랫폼, 프로그램에 독립적이며 SOAP보다는 상대적으로 개발이 수월하다.
  • RESTful
    • REST API를 제공하는 웹 서비스
    • HTTP 프로토콜 사용
      • HTTP Method(GET, PUT, POST, DELETE)
        • 클라이언트에서 서버로 요청
      • HTTP Status Codes (200, 404, 500, ....)
        • 서버에서 클라이언트로 응답
  • Resource
    • URI(Uniform Resource Identifier), 인터넷 자원을 나타내는 유일한 주소
    • 리소스를 요청하거나 응답할때는 XML, HTML, JSON과 같은 문서 포맷을 사용한다.

 

SOAP vs REST

  • 접근 제한성이나 시스템 아키텍처의 구조에 맞는 걸 선택
  • 사용되는 데이터 문서 포맷에 따라 선택
  • 서비스를 정의하는 방법에 따른 선택
  • 전송 규약에 따른 선택
  • 개발의 용이성 고려하여 선택

 

 


- 출처 : 인프런 Spring Boot를 이용한 RESTful Web Services 개발 강의

반응형