본문 바로가기

Computer/일반

관심을 가져보자 - SOAP, REST, GraphQL

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