Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[TIL]20240919 REST 와 SOAP 본문

개발Article

[TIL]20240919 REST 와 SOAP

최밤빵 2024. 9. 19. 21:53

프로젝트를 시작하면서, 서버와 클라이언트 간에 데이터를 주고받는 방법에 대해 고민하게 되었다. 그 과정에서 RESTSOAP라는 용어를 접하게 되었는데, REST는 익숙했지만 SOAP는 처음 들어보는 개념이었다. 그래서 이번 개발일지를 통해 REST와 SOAP의 차이점과 장단점을 공부하고 정리해보기로 했다!

 

▶ REST?

REST(Representational State Transfer)는 웹 기반의 분산 시스템을 위한 아키텍처 스타일이다. REST는 HTTP 프로토콜을 사용하여 데이터를 주고받는 방식을 정의하고, 웹의 리소스를 URI로 표현하면서, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 관리한다. REST API는 클라이언트-서버 구조를 따르고, 상태를 서버에 저장하지 않는 무상태성(stateless)을 원칙으로 한다.

 

▶REST의 특징

→ 자원(Resource):

각 자원은 고유한 URI로 식별되며, 클라이언트는 이 URI를 사용해 서버와 상호작용한다.

→ HTTP 메서드:

자원에 대한 작업은 GET(조회), POST(생성), PUT(수정), DELETE(삭제) 등의 HTTP 메서드를 사용해 수행한다.

→ 무상태성:

각 요청은 독립적이며, 서버는 이전 요청 상태를 기억하지 않는다.

→ JSON 형식:

데이터를 주고받을 때 주로 JSON 형식을 사용하지만, XML이나 HTML도 지원한다.

 

▶REST 코드 예시

// 자바에서 RestTemplate을 사용한 REST API 호출 예시
RestTemplate restTemplate = new RestTemplate();
String url = "https://api.example.com/resource/1";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

System.out.println("Response: " + response.getBody());

→ 이 예시는 자바의 RestTemplate을 사용하여 GET 요청을 보내고, 서버로부터 리소스를 받아오는 간단한 REST API 호출을 보여준다.

 

▶SOAP?

SOAP(Simple Object Access Protocol)은 XML 기반의 메시지 프로토콜로, 주로 웹 서비스 간에 데이터를 교환하기 위해 설계되었다. SOAP는 HTTP뿐만 아니라 다양한 프로토콜(SMTP, FTP 등)을 사용할 수 있고, WSDL(Web Services Description Language) 파일을 통해 서비스의 인터페이스와 메시지 구조를 정의한다.

▷XML?

데이터를 저장하고 전달하기 위한 마크업 언어이다. XML은 태그를 사용하여 데이터를 구조화하고, 사람이 읽기 쉬운 형태로 데이터를 표현한다. HTML과 비슷하지만, XML은 데이터를 설명하기 위해 사용자 정의 태그를 사용할 수 있어 유연성이 높다. 주로 데이터 교환과 구조화된 문서 저장에 사용된다. XML은 플랫폼과 언어에 독립적이고, SOAP 같은 웹 서비스에서 데이터 전송에 자주 사용된다.

 

▶SOAP의 특징

→ 엄격한 메시지 구조:

SOAP 메시지는 항상 XML 형식으로 주고받고, 요청과 응답의 구조가 엄격히 정의되어 있다.

→ WSDL 지원:

WSDL 파일을 통해 클라이언트와 서버 간의 상호작용을 미리 정의할 수 있다.

→ 보안성:

SOAP는 WS-Security 같은 표준을 통해 메시지의 보안성을 보장한다.

→ 상태 유지 가능:

HTTP 세션을 통해 상태를 유지할 수 있어서, 복잡한 트랜잭션 관리에 유리하다.

 

▶SOAP 코드 예시

<!-- SOAP 요청 메시지 예시 (XML 형식) -->
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ex="http://example.com/">
   <soap:Header/>
   <soap:Body>
      <ex:GetResource>
         <ex:ResourceId>1</ex:ResourceId>
      </ex:GetResource>
   </soap:Body>
</soap:Envelope>

→ 이 XML 형식의 SOAP 메시지는 서버에 GetResource 요청을 보내기 위해 사용된다. SOAP는 이러한 형식화된 메시지를 통해 서비스 간에 데이터를 주고받는다.

 

▶ REST와 SOAP의 차이점


구분 REST SOAP
프로토콜 주로 HTTP 사용 다양한 프로토콜 사용 가능 (HTTP, SMTP, FTP 등)
데이터 형식 JSON, XML, HTML 등 여러 형식 지원 XML 형식만 지원
메시지 구조 단순하고 가벼운 메시지 구조, HTTP 메서드 기반 엄격한 XML 메시지 구조와 WSDL을 통한 인터페이스 정의
상태 관리 무상태성 (서버가 상태를 저장하지 않음) 상태 유지 가능 (복잡한 트랜잭션 관리에 유리)
보안 기본적으로 HTTPS 사용, OAuth 같은 외부 인증 체계 지원 WS-Security 표준을 통해 높은 보안성 제공
성능 경량, 빠른 응답 상대적으로 느리고 무거운 XML 처리
사용 사례 웹 애플리케이션, 모바일 앱, 경량 서비스 은행, 보험, 금융 시스템 등 보안과 트랜잭션이 중요한 서비스

 

▶REST와 SOAP의 장단점

 

▷ REST의 장점

→ 간단하고 가벼운 구조:

REST는 HTTP 기반이므로 웹 애플리케이션에서 쉽게 사용할 수 있으며, JSON과 같은 경량 데이터를 사용해 처리 속도가 빠르다.

→ 확장성:

REST는 무상태성이기 때문에 확장성과 유연성이 뛰어나며, 클라우드 환경에서 적합하다.

→ 다양한 데이터 형식 지원:

REST는 JSON, XML, HTML 등 다양한 데이터 형식을 지원해 다양한 클라이언트와 쉽게 통신할 수 있다.

 

▷REST의 단점

→ 보안 제한:

기본적으로 보안 기능을 제공하지 않으며, 보안을 위해서는 별도의 HTTPS 설정이나 인증 시스템을 구축해야 한다.

→복잡한 트랜잭션 처리 어려움:

무상태성으로 인해 여러 요청을 하나의 트랜잭션으로 묶어 처리하는 것이 어렵다.

 

▷SOAP의 장점

→ 보안성:

SOAP는 WS-Security와 같은 표준을 통해 강력한 보안을 제공한다. 특히 금융 서비스와 같은 보안이 중요한 시스템에 적합하다.

→ 트랜잭션 처리:

SOAP는 상태를 유지할 수 있어 복잡한 트랜잭션이나 세션 관리를 처리할 수 있다.

→ 프로토콜 독립성:

HTTP 외에도 다양한 프로토콜을 지원하기때문에, 네트워크 환경에 따라 유연하게 사용할 수 있다.

 

▷SOAP의 단점

→무거운 구조:

SOAP는 XML 기반으로 작동하므로 메시지가 무겁고, 처리가 상대적으로 느리다.

→ 복잡성:

WSDL을 통해 상호작용을 정의해야 하므로, REST에 비해 설정이 복잡하고 개발 시간이 오래 걸릴 수 있다.

 

▶결론

REST와 SOAP는 각각의 용도와 상황에 맞게 사용될 수 있는 웹 서비스 통신 프로토콜이다. REST는 단순하고 가벼우며, 웹 애플리케이션이나 모바일 환경에서 빠르고 유연하게 사용할 수 있다. 반면 SOAP는 엄격한 메시지 구조와 보안이 필요한 시스템, 특히 금융 서비스와 같이 보안과 트랜잭션 관리가 중요한 곳에서 유용하다.  REST는 가볍고 빠르며, API 개발에 적합한 반면, SOAP는 보안과 상태 관리가 중요한 서비스에 적합하다는 것을 배웠다😆