본문 바로가기
# Coding/Java

Web Service & Web Application

by hxodoo.cookie 2021. 10. 4.

Web Service와 Web Application의 개요

 

 Web Service 개요 

Web Service 란?

WWW (World Wide Web)를 이용한 장치와 장치 사이의 통신 서비스
즉, 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기 위한 소프트웨어 시스템

 

Web Service는 기존 분산 컴퓨팅 기술과는 달리 xml을 사용하기 때문에 주고 받는 데이터 포맷의 통일성을 가져왔고, 

이것은 기존 분산 프로그래밍 대비 개발이 수월해지도록 했다.

(단, RESTful 방식보다는 복잡)

 

Web Service의 3가지 주요 키워드

  • 머신-머신 , 어플리케이션-어플리케이션 간의 상호작용을 위한 설계
  • 플랫폼에 비의존적인 구조
  • 어플리케이션간의 네트워크를 통한 통신 지원

 

 Web Application 개요 

Web Application 이란?

서버에 저장되어 있고, 웹 브라우저를 통해 실행할 수 있는 프로그램 
  • 인터넷 웹 브라우저: HTTP 프로토콜로 통해 제공되는 html 문서를 해석해서 사용자에게 보여주는 어플리케이션
  • WAS(Web Application Server): Web Application을 실행 할 수 있는 서버

 

클라이언트의 요청이 html, css, javascript, images와 같은 정적인 문서일 경우에는 Web Server에서 처리가 가능하지만

프로그램 동작, 계산, 외부 서비스와의 연동 작업이 필요한 경우에는 클라이언트의 요청을 Web Application Server에 

전달하고, Web Application에서 실행되고 처리된 결과 값을 Web Server를 통해 다시 클라이언트에 전달한다.

정적인 문서인 경우
Client (요청) → Web Server (처리) → Client

동작 외부 서비스 필요할경우
Client (요청) → Web Server → Web Application Server (처리) → Web Server → Client

 

 

웹 애플리케이션에서 웹 서비스로 전달되는 요청 정보request, 웹 서비스에서 처리된 결과 값을 클라이언트 또는 웹 어플리케이션으로 전달하는 반환 값response 라고 한다.

(웹 서비스 입장에서는 request는 input 정보, response는 output 정보라고도 함)

 

 

Web Service의 Request/Response 문서 포맷으로는 일반적으로 xml 이나 json을 사용 하는데, 최근에는 xml보다 더 문서의 양이 적은 json 포맷이 많이 사용되고 있다.

 

 

 웹 서비스에 요청 정보를 전달하는 쪽을 Service consumer/Client 라고 하고, 클라이언트의 요청을 처리해주는 쪽을 Service provider/Server 라고 한다.

 

 

이러한 웹 서비스를 개발하기 위해  SOAP 또는 RESTful을 사용할 수 있다.


 

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

 

 SOAP (Simple Object Access Protocol) 

SOAP이란? 

우리가 사용할 수 있는 HTTP/HTTPS/SMTP와 같은 프로토콜을 사용하여 xml 기반의 메시지를 컴퓨터 네트워크 상에서 전달할 수 있는 시스템
즉, 통신 프로토콜을 위해 xml메시지 요청하고 응답 받기 위한 서비스
  • 웹 서비스의 기본적인 메시지 전송 수단
  • 서비스 통신을 위해서 XML-RPC를 사용

      XML-RPC: RPC 프로토콜의 일종으로서, 인코딩 형식에서는 XML을 채택하고, 전송 방식에서는 HTTP 프로토콜을 사용.

 

 

서비스 요청자가 SOAP로 인코딩하여 웹 서비스 요청을 서비스 제공자에게 전달하며, 서비스 제공자는 이를 디코딩하여 적절한 서비스 로직을 수행시켜서 결과를 얻고, 그 결과를 다시 SOAP로 인코딩하여 반환한다.

 

 

 SOAP 메시지는 선택적 Header와 필수 Body를 포함하는 Envelope로 구성된 XML 문서로 인코딩된다. 

 

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope" 
                     soap:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding">
  <soap:Header>
                ...
  </soap:Header>
  <soap:Body>
               ...
    <soap:Fault>
                 ...
    </soap:Fault>
  </soap:Body>
</soap:Envelope>

 

  • 복잡한 구조로 되어 있어 이에 따른 오버헤드가 심하다.
  • REST에 비해 상대적으로 무겁고 속도도 느리다.
  • 개발 난이도가 높아 개발 환경의 지원이 필요하다.

이러한 단점이 있기 때문에 최근에는 REST라는 개발 방식이 더 많이 사용되고 있다.


 

 

 REST (REpresentational State Transfer) 

REST란?

네트워크 상에서 클라이언트와 서버 사이의 통신 방식중 하나로, 자원을 이름(자원의 표현)으로 구분하여
해당 자원의 상태(정보)를 주고 받는 것을 의미
즉, 자원(Resource)의 표현(Representation)에 의한 상태 전달
  • 자원: 해당 소프트웨어가 관리하는 모든 것
    ex) 파일, 문서, 그림, 데이터, 해당 소프트웨어 자체 등
  • 자원의 표현: 그 자원을 고유하게 표현하기 위한 이름
  • 상태(정보) 전달
    → 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
    → json 혹은 xml과 같은 문서 포맷을 사용하여 데이터를 주고 받는 것이 일반적이다.

 

플랫폼/ 프로그래밍에 독립적이며, SOAP 보다 개발하기 휠씬 수월하다.

 

 

HTTP Method를 통해 자원을 처리하도록 설계되어 있는 아키텍쳐를 뜻한다.

→ 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있음

 

HTTP 프로토콜

HTTP Methods와 HTTP Status Codes로 구성

HTTP Methods : HTTP프로토콜을 통해 클라이언트가 서버에 전달하게 되는 목적이나 종류를 알려주는 수단
  ex) GET/PUT/POST/DELETE
HTTP Status Codes : 클라이언트가 요청한 정보가 어떤 상태로 처리되었는지를 나타내는 코드
  ex) 200,404,...

 

 

 

RESTful

REST API를 제공하는 웹 서비스

REST API: REST 서비스를 제공하는 Application Programming Interface

 

RESTful 서비스에 의해 제공될 수 있는 모든 Resource들은 각각 고유한 주소값을 가지고 있는데,  

인터넷 자원을 나타내는 유일한 주소를 URI(Uniform Resource Identifier)라고 한다.

 

일반적으로 Resource를 요청하고 응답할 때는 xml, html, json과 같은 문서 포맷이 사용된다.


 

 

 SOAP vs REST 

 

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

 

'# Coding > Java' 카테고리의 다른 글

자바 객체 지향 프로그래밍  (1) 2023.09.14
자바 조건문 반복문  (0) 2023.09.13
자바 배열, 배열과 메모리  (0) 2023.09.12
자바 특수 문자, 서식 문자, 연산자  (1) 2023.09.11
자바 변수 기본자료형  (0) 2023.09.11