SOAP API와 REST API 차이점

● API(Application Programming Interface)란 무엇일까?
인터페이스는 특정 두 대상을 연결하거나 조작하기 위한 규칙과 규격을 나타내는 것으로 다양한 곳에 적용되고 있다.
IT 프로그램에서 인터페이스 역할을 하는 것이 있는데 이를 API라 한다.
APi는 소프트웨어 애플리케이션끼리 서로 소통하고 상호작용하기 위해 정의된 규약이나 프로토콜이다.
프로토콜이란 ?
컴퓨터 또는 전자기기 간의 원활한 통신을 위해 지키기로 약속한 규약
즉 시스템이 서로 통신하는 방식에 대한 일련의 규칙이다.
● REST API 란?
REST(Representational State Transfer)는 네트워크를 통해 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일이다.
REST API는 인터넷 식별자(URI)와 HTTP 프로토콜을 기반으로 한다.
이로인해 '단순함'이 핵심이라고 볼수 있으며, 데이터 포맷으로는 브라우저 간 호환성이 좋은 제이슨(JSON)을 사용한다.
REST API는 구축과 확장이 간단하지만, 크고 복잡하게 만들 수 있다.
이는 API를 어떻게 만들고, 무엇을 추가하고, 어떤 목적으로 설계되었는지에 따라 달려있따.
REST API는 클라이언트와 서버 사이에서 통신할 수 있게 하고, 아키텍처를 만들 수 있게 해준다.
REST API라면 클라이언트 - 서버 모델로 구축되었다는 것을 의미하며, 정보의 페이로드(실제 전달하려는 내용)가
두 지점 사이를 왕복하게 된다.
아키텍처(Architecture)란?
# 시스템 구성 및 동작 원리
# 구성 요소 간의 관계 및 시스템 외부 환경과의 관계
즉 서비스의 동작원리를 나타낸 것이다.
REST API는 단일 인터페이스를 사용한다.
이러한 이유로 해당 API를 사용하는 애플리케이션들이 동일한 경로를 통해 접속해야 하고, 방식이 단순하게 된다.
이러한 방식에는 장/단점이 존재하기 때문에 향후 개발 과정에서 어떤 영향이 발생하는지 충분한 상의가 필요하다.
REST는 웹에 최적화되어 있고, 데이터 포맷이 JSON이기 때문에 브라우저들 간에 호환성이 좋다.
또한, 그 성능과 확장성이 뛰어나지만 그 자체의 기능이 정지되거나 앱을 먹통으로 만들 수 있다.
REST로는 풀지 못하는 문제들을 해결하기 위해 그래프 QL과 같은 언어가 생겨났다.
● SOAP API란?
SOAP(Simple Object Access Protocol)는 그 자체로 프로토콜이며, 보안이나 메시지 전송 등에 있어서
REST보다 더 많은 표준이 정해져있기 때문에 조금 더 복잡하다.
이런 표준들로 인해 오버헤드가 많기는 하지만 보안, 트랜잭션, ACID(원자성, 일관성, 고립성, 지속성)을
준수해야 하는 보다 종합적인 기능이 필요한 조직에게는 적합한 방식이다.
하지만, SOAP는 웹 서비스 시나리오에 적용하기에는 좋지 않기 때문에 기업용 애플리케이션 등의 작업이 이상적이다.
ACID란 ?
데이터베이스 트랜잭션들이 안정적으로 수행된다는 것을 보장하기 위한 성질을 가리키는 약어
[성질 4가지]
원자성(Atomicity)
: 트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면, 모두 실행이 안되었는지를 보장하는 능력
예) 자금 이체는 성공할 수도 실패할 수도 있지만, 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것.
일관성 ( Consistency )
: 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것
예) 결성 제약이 모든 계좌는 잔고가 있어야 한다면, 이를 위반하는 트랜잭션은 중단
고립성 (Isolation)
: 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것
즉 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없다.
예) 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다
지속성(Durability)
: DBMS가 사용자에게 트랜잭션 커밋(commit) 응답을 했을 경우, 데이터베이스 객체에 대한 변경 사항이
디스크에 반영(flush) 되기 전 시스템 장애가 발생하여도 트랜잭션의 커밋은 보장되어야 한다는 속성
DBMS는 트랜잭션의 지속성을 제공하기 위해 log(작업에 대한 기록)를 관리한다.
※ 커밋으로 갱싱된 내용이 디스크에 반영되기 전 장애가 발생하면 시스템 재 구동 시 로그를 판독하여 변경된 내용 복구
트랜잭션(Transaction)이란?
데이터베이스 상태를 변경시키기 위해 수행하는 작업 단위
데이터베이스 상태 변경이란 SELECT, UPDATE, INSERT, DELETE등을 수행하는 것이다.
즉, DB에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것이다.
SOAP는 보안 수준이 엄격하다.
SOAP에서는 SSL도 지원하고 WS-Security라는 자체 표준의 보안 기능도 가지고 있다.
은행용 모바일 앱처럼 보안 수준이 높아야 하거나 신뢰할 수 있는 메시징 앱,
또는 ACID를 준수해야 하는 경우라면 SOAP 방식이 선호된다.
SOAP 표준에는 ACID 준수에 관한 사항이 있으며, ACID를 준수하기 때문에
데이터의 변형을 줄여주고, 데이터베이스와의 상호작용에 대해 사전에 정호가하게 정의하여 데이터의 무결성을 지켜준다.
주로 금융 정보 등의 민감한 데이터를 주고받을 때 사용된다.
※ REST API와 SOAP API 차이점
| 차이점 | SOAP | REST |
| 유형 | 프로토콜 | 아키텍처 스타일 |
| 기능 | 기능 위주 : 구조화된 정보 전송 | 데이터 위주 : 데이터를 위해 리소스 접근 |
| 데이터 포맷 | XML만 사용 | 일반 텍스트, HTML, XML, JSON등 다양한 포맷 허용 |
| 보안 | WS-Security와 SSL 지원 | SSL과 HTTPS 지원 |
| 대역폭 | 상대적으로 더 많은 리소스아 대역폭 필요 | 상대적으로 리소스가 적게 필요하고 무게가 가볍다. |
| 데이터 캐시 | 캐시를 사용할 수 없다. | 캐시를 사용할 수 있다. |
| 페이로드 처리 | 엄격한 통신 규약을 갖고 있으며, 모든 메시지는 보내기 전에 알려져야 한다. |
미리 알릴 필요 없다. |
| ACID 준수 | 자체적인 ACID 기준이 있어서 데이터 손상을 줄여준다. |
ACID 준수와 관련된 내용이 없다. |