API(application programming interface) 란 "컴퓨터나 컴퓨터 프로그램 사이의 연결"이라고 위키피디아에서는 정의하고 있었다.
이런 API 는 작게는 컴퓨터 프로그램이었지만 이제는 '서비스' 간에 연결을 지원해 주고 있다.
SOAP는 SOA(Service-oriented architecture) 개념을 구현, REST는 ROA(Resource-oriented architecture)의 개념을 구현했다.
SOA 든 ROA 든 상호 데이터를 주고 받기위한 개념인데 최근 대형시스템에서 뿐만 아니라 소형시스템에서도 뜨거운 개념이 MSA(Micro Service Architecture)이다.
이는 SOA -> ROA -> MSA 로 변화하는 것 같지만 핵심은 "상호 (데이터를) 주고받는 것: Interface"이다.
"재사용"은 "데이터의 재사용"의 요구를 구현하고 활용하면서 시스템들이 상대적으로 Micro 화 하고 복잡하고 딱딱했던 설정은 유연하고 간단해진 차이가 있다.
최근 Spring에서도 GraphQL을 지원하게 된 뉴스레터(구체적으로는 IntelliJ IDEA 2023.3 EAP 5 뉴스레터)를 보고 GraphQL 이 무엇인지 간단하게 알아보다가 관심을 가져보자는 개기로 글을 남겨본다.
SOAP | REST | GraphQL | |
특징 | W3C 에서 관리하는 표준 | HTTP 프로토콜을 이용하는 아키텍처 방식 | 페이스북에서 시작된 밴더기술 |
구성 | WSDL 을 기준으로 구성 | URI 와 HTTP Method(POST, GET, PUT, DELETE, PATCH 등)을 사용 | REST 와 유사하나 엔드 포인트가 1개만 존재하고 원하는 데이터 속성만 전달 |
SOAP: Simple Object Access Protocol
- 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
- 흔히 WS(Web Service)를 통한 상호 데이터 인터페스
- 표준인 WSDL(Web Services Description Language)를 통해서 작성된 XML 명세에 의해서 구성
REST: Representational State Transfer
- 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식
- HTTP 프로토콜을 이용해서 json 혹은 xml 방식의 데이터를 주고받는 방식
GraphQL:
- 페이스북이 모바일 앱을 재구성하기 위해 노력하던 2012년 개발되어 2015년 오픈소스로 공개된 데이터 쿼리 언어
[참고]
GraphQL 공식 사이트: https://graphql.org/
GraphQL과 REST 차이: https://hahahoho5915.tistory.com/63
SOAP, REST, GraphQL, gRPC 비교 https://bangu4.tistory.com/167