SOAP, RESTful, GraphQL : 올바른 통신 표준 선택

선택하기 전에 각각의 장점과 단점을 고려하여 정보에 입각 한 결정을 내립니다.

Unsplash에 Thomas Peham의 사진

새로운 애플리케이션 또는 모바일 앱, 웹 사이트, 게임, 최종 사용자와 상호 작용하는 무언가의 아키텍처를 설계하기 시작했습니다 . 아마도 타사 끝점 인 데이터베이스에서 정보를 요청하려면 서비스연결 (서버 측 또는 클라이언트 측)해야합니다 .

이 시점에서이 연결을 만드는 방법을 결정해야합니다. 요즘에는 SOAP, RESTful 또는 GraphQL 중에서 선택할 수있는 세 가지 주요 대안이 있습니다 . 불행히도 모든 사람이 그들 사이의 차이점을 이해하는 것은 아니지만 이것은 중요한 결정입니다. 그리고 그들은 아주 다릅니다.

SOAP (Simple Object Access Protocol)

SOAP는 세 가지 중 가장 오래된 것입니다. 1998 년에 Microsoft의 직원이 만든이 프로토콜 은 실제로는 컴퓨터 간에 정보를 교환하기위한 일련의 규칙에 불과하다는 것을 의미 합니다. 그것은 사용하는 XML을 통신 할 수있는 표준 형식으로.

본질적으로 교환되는 메시지를 이해할 수 있도록 규칙을 정의하므로 엄격한 표준을 따릅니다 . 영어, 일본어, 독일어와 같은 언어를 생각하면 사람들이 구와 문장을 말하고 이해할 수 있으려면 모든 언어가 설정된 규칙을 따라야합니다.

동시에 일반적으로 매우 안전한 것으로 간주되며 금융, 관공서, 의료 네트워크와 같이 높은 수준의 보안을 요구하는 대기업에서 여전히 사용하고 있습니다.

SOAP 전문가 :

  • 보안 ; 메시지 교환에 대한 엄격한 규칙.
  • HTTP, HTTPS, SMTP 등과 같은 여러 네트워킹 프로토콜 위에서 작동 할 수 있으므로 유비쿼터스 (범용).
  • XML 언어의 견고성 ; 전송되는 콘텐츠에 대한 메타 데이터를 첨부하는 것은 매우 간단합니다. 또한 HTML과의 유사성으로 인해 웹 개발자가 XML을 이해하도록하기위한 램프 업은 네임 스페이스, 봉투, 본문 등과 같은 몇 가지 개념을 고수하는 것만으로는 광범위하지 않습니다.
  • 이전 메타 데이터 항목에 추가하여 강력한 유형의 데이터 를 가질 수 있으므로 수집 된 정보에 대한 추가 확실성 을 확보 할 수 있습니다 .
  • 복잡성 , 시작하기위한 설정은 부담 스러울 수 있습니다.
  • XML 오버 헤드 : XML 문서의 장황함은 단점이 될 수 있습니다. 덧붙여서 큰 XML 파일을 구문 분석하면 시스템 속도가 느려질 수 있으며 시스템의 적절한 통신에는 올바른 형식의 XML 문서가 필요하며 대부분의 XML 구문 분석기는 잘못된 형식의 메시지에 대한 내성이 낮습니다.
  • 응답을 캐시 할 수 없습니다 .

나머지는 현재 까지 엔드 포인트 간의 통신을 위한 지배적 인 솔루션 입니다. 2000 년에 만들어졌습니다. 흥미롭게도 Apache HTTP Server의 공동 창립자 인 Roy Fielding 이 박사 학위 논문으로 아키텍처를 소개했습니다 .

서버에서 수행 할 수있는 작업은 POST , GET , PUTDELETE 와 같은 표준 HTTP 메서드를 활용합니다 . 이러한 메서드는 알려진 CRUD 작업 인 Create (POST), Read (GET), Update (PUT), Delete (DELETE)에 매핑 될 수 있으며 REST가 얼마나 잘 설계되었는지 보여줍니다.

마찬가지로 REST 는 작업 결과 를 전달 하기 위해 설정된 HTTP 응답 코드 ( 리소스를 찾을 수없는 경우 404, 성공한 경우 200 등)를 사용합니다.

REST 전문가 :이 아키텍처의 장점 목록은 길지만 다음과 같은 몇 가지 핵심 요소를 언급 할 수 있습니다.

  • Stateless이기 때문에 매우 빠르고 안정적 입니다.
  • Dr. Fielding의 박사 논문에서 제시된 바와 같이 그 정의는 매우 강력 합니다.
  • 응답 페이로드는 여러 가지 형식으로 제시 될 수있다 , 최근의 선호하는 방법입니다 XML, 일반 HTML 또는 텍스트, 또는 JSON, :.
  • 응답을 캐시 할 수 있습니다. 즉, 데이터 소스와 내보내는 서버 간의 왕복을 줄임으로써 성능을 높일 수 있습니다.
  • SOAP와 유사하게 복잡한 요청이 생성되어 발신자와 수신자간에 소집되지 않는 한 일반적으로 반환되는 데이터를 적절하게 제한 할 수 없습니다 . 많은 "추가"정보가 서버에서 수신됩니다.
  • '단순함'이 그 특성 중 하나이기 때문에 때때로 RESTful API는 극도로 관용적 이어서 엔지니어 가 통신 의 예측 불가능 성에 대해 불안감을 느끼게 합니다.
  • 이전 항목에 이어 데이터가 강력한 유형이 아닙니다. 즉, 추가 작업으로 클라이언트 측에서 콘텐츠의 유형 확인 및 유효성 검사를 수행해야합니다 .

Facebook 은이 쿼리 언어를 설계하고 2015 년에 대중에게 공개했습니다 . 이는 단일 쿼리에서 초당 수백만 행의 데이터 를 검색 하는 문제 , 여러 다른 서버에서 가져올 수있는 데이터 , 따라서 시스템 성능이 가장 큰 관심사 였습니다.

흥미로운 퀴즈 정보는 그 이름이 Graph Theory 로 알려진 실제 수학적 개념에서 비롯되었다는 것입니다. Graph Theory 는 요소 ( 또는 vertices 라고도 함)의 관계 와 그 연결 또는 가장자리를 고려 합니다. GraphQL의 로고는 실제로 " 평면 그래프 " 의 표현 으로, 평평한 표면 (다이어그램)에 그릴 때 가장자리가 교차하지 않고 그릴 수있는 그래프입니다. 그래프 이론에 관심이있는 경우 Richard J. TrudeauIntroduction to Graph Theory 를 선택해야합니다. 매일 많은 내용과 순수 수학 응용 프로그램 및 예제가 포함 된 훌륭한 읽기 자료입니다.

GraphQL 전문가 :

  • GraphQL의 주요 장점은 필요한 요소 만 검색 할 수 있다는 것 입니다. 쿼리 언어이기 때문에 쿼리 내에서 필요한 요소를 매핑하고 정확히 해당 요소를 가져올 수 있습니다. 오버 헤드가 없습니다 .
  • 리턴 된 데이터는 데이터의 무결성을 보장하는 강력한 유형 (SOAP 사용)이 될 수 있습니다 .
  • 데이터의 "수퍼 페처"역할을하고 해당 엔드 포인트가 다른 위치에서 데이터를 검색하고 한 번에 반환하도록하여 서버에서 클라이언트 로의 왕복을 최소화합니다 .
  • "오직"쿼리 언어이기 때문에 GraphQL 은 기능을 발휘할 수있는 프레임 워크가 필요합니다 . 그렇기 때문에 GraphQL이 Apollo, Helios 또는 Relay와 같은 클라이언트와 페어링되는 것을 볼 수 있습니다.
  • 결과대한 캐싱 이 없으므로 타사 라이브러리를 사용하여 피할 수 있습니다.
  • GraphQL은 결국 언어이기 때문에 개발자는 새로운 구문을 배워야합니다 .

탐색 할 수있는 더 많은 주제 :

자바 스크립트 테스팅 : Jest Spies and Mocks 는 행동 기반 개발이 프로젝트에 적합합니까? JavaScript를 사용하여 데이터를 적절하게 저장 : 스스로에게 물어볼 6 가지 질문

추가 읽기 :

LinkedIn , Medium , GitHub 에서 저를 찾으십시오 .

Suggested posts

여러 VPC를 사용하여 GCP Cloud DNS를 온 프레미스로 확장

여러 VPC를 사용하여 GCP Cloud DNS를 온 프레미스로 확장

Cloud DNS는 Google Cloud의 관리 형 DNS 서비스이며이 블로그를 통해 비공개 호스팅 영역과 작업 할 것입니다. 최근 작업 중 하나에서 모바일 결제 플랫폼을 온 프레미스에서 GCP로 마이그레이션했습니다.

마이크로 서비스 VS API : 서로 어떻게 다릅니 까?

마이크로 서비스 VS API : 서로 어떻게 다릅니 까?

마이크로 서비스 대 애플리케이션 프로그래밍 인터페이스 (API). 둘 다 소프트웨어 개발에서 뚜렷한 역할을합니다.

Related posts

"실용적인 프로그래머"의 5 가지 필수 사항

역대 베스트셀러 코딩 북의 요점

"실용적인 프로그래머"의 5 가지 필수 사항

Pragmatic Programmer는 1999 년에 처음 출판되었으며 이후 역대 최고의 프로그래밍 책으로 선정되었습니다. 저자 Andy Hunt와 David Thomas는 Agile Manifesto의 원저자 중 하나였으며 몇 가지 심각한 자격을 가지고 있습니다.

대규모 GraphQL 쿼리 공격으로부터 보호

공격자가 공개적으로 사용 가능한 GraphQL 인터페이스를 사용하여 사이트를 스크랩하거나 서비스 거부 공격을 실행하는 방법에 대해 알아보십시오. 이들은 4 가지 방법 중 하나로이를 수행 할 수 있습니다. 단일 대형 쿼리를 신중하게 구성하여 실행하고, 관련 데이터를 가져올 수있는 병렬 쿼리를 많이 작성하고, 일괄 요청을 사용하여 많은 쿼리를 연속적으로 실행하고, 마지막으로 많은 요청을 보냅니다.

기술 인터뷰의 사회적 구성 요소

코딩 문제는 스트레스가 많지만 스트레스에 대한 당신의 반응은 당신의 기술적 능력보다 더 크게 말합니다.

기술 인터뷰의 사회적 구성 요소

기술 업계의 직책을 위해 인터뷰 할 때 일반적으로 제안을 고려하기 전에 최소한 3 차례의 인터뷰를 거치게됩니다. 라운드는 일반적으로 다음과 같습니다. 그렇게 생각하면 잘못된 것입니다.

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자를 만드는 비 기술적 인 것들 나는이 기사를 작성하는 것을 한동안 미루고 있습니다. 나는 그것을 작성할 자격이 있다고 생각하지 못했습니다. 오늘은 쓸 때라고 생각했습니다.