티스토리 뷰
어제 API에 대해서 정리했다.
API는 서로 다른 응용 프로그램의 데이터와 서비스에 연결하는 소프트웨어 및 매개체이다.
API의 구조에 대해 이야기할 때, 가장 대표적인 방식이 SOAP 방식과 REST 방식이다.
가장 큰 차이는
SOAP는 프로토콜이고, REST는 아키텍처라는 점이다.
그렇기 때문에 두 방식은 구성, 기능, 사용되는 상황이 서로 다르다.
REST API
REST(Representation State Transfer)는 네트워크를 통해 컴퓨터끼리 통신할 수 있게 해주는 아키텍처 스타일이다.
REST API는 웹 서비스 API라고 할 수 있다. URI와 HTTP 프로토콜을 기반으로 슈퍼 브라우저와 호환 가능한 방식인 JSON을 사용한다. REST API는 구축과 확장이 용이하다. 그래서 단순하게 또는 복잡하게 구성할 수 있다.
REST API의 장점
- HTTP 프로토콜로 인해 간단하다.
- 클라이언트-서버 통신 및 아키텍처를 용이하게 한다.
- 단일 균일 인터페이스 사용
- 웹에 최적화 (JSON)
- 뛰어난 성능과 확장성
다른 기술들과 마찬가지로 앱이 느려지거나 할 수 있다. 이 점을 해결하기위해 GraphQL과 같은 언어가 등장
SOAP API
SOAP(Simple Object Access Protocol)는 자체 프로토콜이며 REST 방식보다 더 많은 표준을 지켜야 하기 때문에 상대적으로 조금 더 복잡한 방식이다. 하지만 보안, 트랜젝션, ACID(Atomicity, Consistency, Isolation, Durability) 측면에서 포괄적인 기능이 필요한 조직에게 REST보다 더 좋은 선택지가 될 수 있다. SOAP 방식은 웹 서비스 보다 단일 엔터프라이즈 상황에 적절하다
SOAP API의 장점
- 더 엄격한 보안
- 안정적인 메시징 기능을 위한 Success/Retry 기능
- 기본적으로 ACID를 준수
REST API와 SOAP API의 차이
- SOAP API는 프로토콜인 반면, REST API는 아키텍처 스타일이다.
- SOAP API는 작업을 수행, REST API는 데이터 리소스에 엑세스
REST API는 보다 데이터 중심적이고, SOAP API는 기능 중심적으로 구조화된 정보를 전송.
REST는 일반 텍스트, HTML, XML, JSON 등 다양한 데이터 형식을 포함하기 때문에 데이터 전송에 아주 적합하고 브라우저 호환성도 뛰어나다. SOAP는 XML만 사용한다. - 보안
REST API는 HTTP 프로톨인 HTPPS 및 SSL의 보안을 사용한다. 그리고 SOAP는 SSL과 WS-security 방식을 제공하여 더 높은 수준의 보안을 보여준다. - 데이터의 양
SOAP는 사용하는 오버헤드가 좀 더 많지만 더 많은 데이터를 포함하고 있다. 반면 REST API는 상대적으로 적은 양의 데이터이지만 요청 시 필요한 오버헤드가 적다. - 캐싱
REST API 호출은 캐싱할 수 있지만, SOAP API는 캐싱 기능을 사용할 수 없다.
정리
사용 대상
REST API는 다음과 같은 사용자에게 적합하다.
- HTTP 및 JSON 데이터 형식을 사용하고, 비교적 적은 양의 데이터가 필요한 사용자
- 외부 라이브러리 호출에 대한 요구 사항이 적은 경우
- 캐싱 기능이 필요한 경우
SOAP API는 다음과 같은 사용자에게 적합하다.
- 보안 수준에 대한 요구사항이 있는 경우
- SOAP를 사용하고 있는 시스템과 통합해야 하는 경우
- ACID에 대한 요구 사항이 있는 경우
지금까지 SOAP와 REST API에 대해 정리해보았다.
설명 중에서도 모르는 개념과 단어들이 많이 있어 완벽하게 이해하진 못했지만
지나가다가 SOAP와 REST API 단어에 대해 일부 알게 된 것 같다.
참고
'지나가는 개념 정리' 카테고리의 다른 글
Repository Pattern 이란? (0) | 2022.02.08 |
---|---|
비즈니스 로직이란? (0) | 2022.02.08 |
API (0) | 2021.09.01 |
프레임워크(FrameWork)와 라이브러리(Library) (0) | 2021.08.31 |
SPA & Routing (0) | 2021.08.30 |
- Total
- Today
- Yesterday
- python
- 알고리즘
- 백준
- js
- 프로그래머스
- GraphQL
- reactrouter
- 문제풀이
- AxiosInterceptor
- Vue
- Transpiler
- v-for
- clean code
- bundler
- React.memo
- TypeScript
- 파이썬
- Vue.js
- 상호평가
- Preloading
- error
- SPA
- webpack
- redux-thunk
- redux
- Vuex
- React
- SOAP API
- Repository Pattern
- programmers
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |