반응형
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라고 함
- 웹 서비스 정의를 위한 정보들
- 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 바디 : 엔벨로프의 필수 하위 요소이며 메시지의 최종 수신자 정보를 가지고 있다.
- 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, ....)
- 서버에서 클라이언트로 응답
- HTTP Method(GET, PUT, POST, DELETE)
- Resource
- URI(Uniform Resource Identifier), 인터넷 자원을 나타내는 유일한 주소
- 리소스를 요청하거나 응답할때는 XML, HTML, JSON과 같은 문서 포맷을 사용한다.
SOAP vs REST
- 접근 제한성이나 시스템 아키텍처의 구조에 맞는 걸 선택
- 사용되는 데이터 문서 포맷에 따라 선택
- 서비스를 정의하는 방법에 따른 선택
- 전송 규약에 따른 선택
- 개발의 용이성 고려하여 선택
- 출처 : 인프런 Spring Boot를 이용한 RESTful Web Services 개발 강의
반응형