웹/Spring Boot

[Spring Boot] Web Service & Web Application

jooeun 2023. 1. 12. 11:43

Web Service

A service offered by an electronic device to another electronic device, communicating with each other via the World Wide Web - 위키피디아
A server running on a computer device, listening for requests at a particular port over a network, serving web documents(HTML, JSON, XML, images), and creating web application services, which serve in solving specific domain problems over the Web(WWW, Internet, HTTP) - 위키피디아

 

위키피디아를 인용하자면 웹 서비스는 다음과 같이 정의할 수 있다

- www, 우리가 흔히 말하는 World Wide Web을 통해 디바이스와 디바이스 간에 제공되는 통신 서비스

- 네트워크 상에서 특정한 포트를 열어놓은 서버가 클라이언트의 요청을 받은 다음 HTML, JSON, XML과 같은 웹 문서를

제공(serving)하는 것

- WWW, Internet, HTTP의 기술을 사용하는 Web을 통해서 특정한 도메인의 문제를 해결하기 위한 Web Application을 만든 것

 

간단히 요약하자면 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기 위한 소프트웨어 시스템인 것이다.

 

물론 이기종 간의 통신을 위한 분산 컴퓨팅 기술은 웹 서비스 이전에도 존재했다.

그러나 구현의 복잡성, 통신 프로토콜이 표준화되어있지 않은 문제점 등으로 개발에 어려움이 있었다

 

웹 서비스는 기존 분산 컴퓨팅의 기술과 달리 XML을 사용하고 있기 때문에 주고 받는 데이터 포맷을 통해서만 데이터를 가져왔고, 기존 분산 프로그래밍 대비 개발이 수월해졌다

 

이러한 웹 서비스에 관한 핵심 키워드를 3가지로 정리할 수 있다

- machine-to-machine, application간의 상호작용을 위한 설계

- 플랫폼 독립적인 구조

- 네트워크를 통한 통신

 

 

Web Application

An application program that is stored on a remote server and delivered over the Internet through a browser interface
Common web applications include webmail, online retail sales, online banking, and online auctions

서버에 저장되어 있고, 웹 브라우저를 통해서 실행할 수 있는 프로그램

그 종류로는 웹 메일, 온라인 쇼핑몰, 인터넷 뱅킹, 포털 사이트 등의 서비스가 있다.

이러한 웹 어플리케이션을 사용하기 위해 사용자(클라이언트)는 일반적으로 인터넷 웹 브라우저를 사용한다.

인터넷 웹 브라우저는 HTTP 프로토콜을 통해서 제공되는 HTML 문서를 해석해서 사용자에게 보여주는 어플리케이션이다. 우리가 흔히 인터넷이라고 하면 이러한 웹 브라우저를 이용해서 웹 어플리케이션을 사용하는 것이라 생각하면 된다.

물론 웹 어플리케이션을 실행하기 위해서 (웹 브라우저 말고) 다른 어플리케이션을 사용할 수 있는데, HTTP 프로토콜을 사용할 수 있는 프로그램이라 하면 어떤 것이든 가능하다. 

웹 어플리케이션을 실행해줄 수 있는 서버를 웹 어플리케이션 서버라고 하고, 웹 어플리케이션의 특성상 외부 데이터베이스와 연동되기도 한다.

 

클라이언트의 요청이 html, css, javascript, image와 같은 정적인 문서일 때는 웹 서버에서 처리가 가능하지만 프로그램 동작이나 계산, 외부 서비스와 연동이 필요한 경우 클라이언트 요청(request)을 웹 어플리케이션 서버로 전달을 하고 웹 어플리케이션 서버에서 처리된 결과값(response) 을 웹 서버를 통해서 다시 클라이언트로 전달

 

웹 서버로 요청하기 위해서는 request/response 포맷(xml, json 등), request structure, response structure, endpoint(url)이 결정되어야 한다.

 

SOAP(Simple Object Access Protocol)

HTTP 프로토콜, SMTP 프로토콜 등을 사용해서 XML기반의 메세지를 컴퓨터 네트워크 상에서 전달하는 시스템

기본적인 메세지 전송 수단이기도 하고 SOAP은 서비스 통신을 위해서 XML IPC?를 사용하고 있고 기본 구조로 Envelope, 내부에 Header, Body로 되어있다. 

HTTP, HTTPS와 같은 통신 프로토콜 위에서 XML메세지를 요청하고 응답받기 위한 서비스를 의미

프로토콜 자체라 보안이나 메세지 전송 등에 있어서 REST보다 더 많은 표준들이 정해져있어 구조가 복잡하고 http에서 전달되기 무겁다

 

REST(REpresentational State Transfer)

플랫폼, 프로그래밍에 독립적이며 SOAP보다 개발하기 쉽다.

2000년대 중반 부터 급증한 모바일 디바이스의 등장으로서 인기가 계속 유지

REST 또한 네트워크 상에서 클라이언트와 서버 사이의 통신 방식 중 하나

Resource의 Representation에 의한 상태(컴퓨터가 가지는 자원의 상태)를 전달

HTTP Method를 이용해서 Resource를 처리하는 아키텍처이다.

HTTP 프로토콜은 HTTP Methods(GET, PUT, POST, DELETE)와 HTTP Status Codes(200, 404 등)으로 구성됨. Method에 따른 요청을 처리하고 상태에 따라 Status Code와 함께 응답한다.

 

RESTful : REST API(Application Programming Interface)를 제공하는 웹서비스

RESTful 서비스를 사용하기 위해선 HTTP 프로토콜을 사용할 수 있는 어플리케이션이 필요하다. 일반적으로 인터넷 웹 브라우저를 많이 사용한다. 개발자들은 직접 HTTP 프로토콜을 사용할 수 있는 어플리케이션을 직접 개발하거나 Postman, Curl과 같은 툴을 사용하기도 한다. 

RESTful 서비스에 의해서 제공될 수 있는 모든 자원들은 각각 고유한 주소값을 갖고, 이를  URI(Uniform Resource Identifier)라 한다. 이런 주소값은 고유해야하며 리소스를 요청하거나 응답할 때는 XML, HTML, JSON의 포맷이 널리 사용된다

 

SOAP vs REST

필요한 아키텍처에 맞는 방식을 택할 것. 데이터 전송 포맷에 대한 고려, 서비스 정의하는 방법, 전송 방법과 전송 규약, 개발의 용이성에 따라 선택하면 된다.

HTTP를 사용할 때는 REST 방식이 선호된다. REST중에서도 XML과 JSON 중 데이터 약양식이 더 적은 JSON 방식을 택하는 편이다.