집 >
웹 프론트엔드 >
JS 튜토리얼 >
그래프 QL 게이트웨이 구축 : 모든 데이터 소스를 결합, 스티치 또는 병합하십시오.
그래프 QL 게이트웨이 구축 : 모든 데이터 소스를 결합, 스티치 또는 병합하십시오.
Jennifer Aniston
풀어 주다: 2025-02-08 10:10:09
원래의
459명이 탐색했습니다.
코어 포인트
GraphQL 게이트웨이는 기존 API 게이트웨이와 그래프QL의 장점을 결합하여 소프트웨어 엔지니어가 프론트 엔드 효율을 유지하면서 여러 데이터 소스에서 데이터를 얻을 수 있습니다.
백엔드, 즉 프론트 엔드 (BFF) 아키텍처 패턴은 프론트 엔드의 요청 수를 줄여 API 게이트웨이에 단일 요청을 허용하여 프로세스를 단순화 한 다음 각 백엔드 서비스에서 데이터를 가져옵니다. 결합합니다.
GraphQL은 효율적인 데이터 수집, 모든 요청에 대한 단일 엔드 포인트 및 프론트 엔드가 각 요청에 필요한 데이터 만 선택할 수있는 유연한 쿼리를 포함하여 많은 장점을 BFF에 제공합니다.
GraphQL 게이트웨이 설정을위한 권장 프레임 워크에는 Hasura, Stepzen 및 GraphWeaver가 포함됩니다. 이러한 프레임 워크는 여러 데이터 소스 연결, 라우팅, 배치 처리, 보안, 크로스 데이터 소스 필터링 및 확장 성과 같은 여러 기능을 제공합니다.
이 기사는 프론트 엔드 응답을 신속하게 유지하면서 여러 데이터 소스에서 데이터를 가져 오는 방법과 GraphQL 게이트웨이를 사용하는 잠재적 솔루션을 논의합니다.
우리는 소프트웨어 엔지니어로서 여러 시스템에서 데이터를 구성 해야하는 과제에 직면 해 있습니다. 단일 페이지조차도 여러 서비스의 데이터를 렌더링해야합니다.
데이터는 CRM에서 금융 시스템, SAAS 플랫폼에서 데이터베이스에 이르기까지 어디에나 있습니다. 모든 비즈니스가 많은 SaaS 플랫폼을 구매 한 다음 모든 비즈니스에서 통일 된 비즈니스보기를 얻을 수 있기를 바랍니다. 우리는이 문제에 직면하고 모든 것을 정리해야합니다.
GraphQL 게이트웨이는 기존 API 게이트웨이와 그래프 QL의 장점을 결합합니다.
우리는 먼저 API 게이트웨이의 장점에 대해 논의한 다음 GraphQL이 어떻게 맞는지 확인합니다. 이 기사를 계속 읽으십시오. 우리는 자체 API 게이트웨이를 구축하기위한 프레임 워크를 다룰 것입니다.
API 게이트웨이의 장점
해커로부터 공개 API를 보호하는 것은 전천후 직업입니다. 시간이 지남에 따라 조직은 서비스 지향 아키텍처에서 마이크로 서비스에 이르기까지 많은 API를 만들도록 진화했습니다. 조직은 이러한 API를 인터넷에 직접 배치하는 대신 추가 보안 계층을 추가하는 경향이 있습니다.이 API는 이러한 모든 API보다 앞서 있으며 데이터에 대한 액세스는 항상 동일한 인증 규칙을 따릅니다.
그들은 API 게이트웨이를 사용하여이를 수행합니다.
Kong 또는 Apigee와 같은 제품은 중앙 위치에서 내부 API를 노출시킵니다. API 키 관리, 요금 제한 및 모니터링과 같은 기능을 갖춘 역전 프록시 역할을합니다.
API 게이트웨이를 사용하면 각 서비스에 액세스하고 연결을 모니터링하며 액세스를 기록 할 수있는 사람과 대상을 제어 할 수 있습니다.
최근에 응용 프로그램은 API 게이트웨이 및 기타 외부 SAAS 제공 업체의 데이터를 결합해야합니다. 이는 이전 중앙 집중식 도구 (우리의 규칙을 준수해야 함)가 이제 정기적으로 우회되었음을 의미합니다.
우리가 회사를위한 웹 애플리케이션을 구축하고 있다고 가정합니다. 우리의 임무는 사용자 프로필 페이지를 만드는 것입니다. 로그인 프로세스 중에 여러 시스템의 데이터를 결합해야합니다.
Salesforce CRM : 표정 및 성과 같은 일반 고객 데이터를 저장합니다.
주문 : 가장 최근의 주문 단위는 조직 내에서 주문 시스템에 있습니다.
알림 서비스 : 알림 설정 및 최근 메시지는 Node.js 서비스에 연결된 응용 프로그램 별 데이터베이스에 있습니다.
클라이언트는 아래 그림과 같이 데이터를 얻기 위해 세 가지 별도의 요청을 발행해야합니다.
위의 이미지에서 웹 클라이언트는 세 가지 별도의 API 요청을 보내고 결과를 프론트 엔드 코드로 결합해야합니다. 여러 요청을 보내면 응용 프로그램의 성능에 영향을 줄 수 있으며이 데이터를 결합하면 코드의 복잡성이 증가 할 수 있습니다. 또한 여러 응용 프로그램이있는 경우 모든 응용 프로그램이 모든 백엔드에 대해 알아야하며 서비스의 단일 API 변경으로 인해 모든 응용 프로그램에 대한 업데이트가 발생할 수 있습니다.
우리는 더 잘할 수 있습니다. 이상적으로는 요청을 3에서 1로 줄이려고합니다. 백엔드 서비스 요청을 조정하는 서비스 인 새로운 서비스를 만들 수 있습니다. 이 아이디어에는 이름이 있습니다 : BFF 모드.
백엔드, 즉 프론트 엔드 (BFF) 아키텍처 모드를 사용하면 프론트 엔드가 단일 요청을 발행 할 수 있습니다.
그러나 어떻게 작동합니까? 이 패턴을 자세히 살펴 보겠습니다.
BFF 모드의 장점
BFF 모드를 사용하여 응용 프로그램은 API 게이트웨이에 단일 요청을 보냅니다. 그런 다음 BFF 서비스는 각 백엔드 서비스에서 데이터를 요청하고 결합합니다. 마지막으로, 데이터가 필터링되고 프론트 엔드에 필요한 데이터 만 반환하여 네트워크를 통해 전송되는 데이터의 양이 줄어 듭니다.
위의 이미지에 표시된 것처럼, 우리는 요청을 조정하기 위해 스택에 추가 레이어를 소개합니다.
사용자 프로파일 엔드 포인트는 프로필 페이지의 응용 프로그램에서 요구하는 데이터를 반환합니다. 세 가지 요청을 하나로 줄이면 이전 성능 문제가 해결되었습니다.
그러나 우리는 아직 끝나지 않았습니다.
기업은 모바일 앱을 출시하기로 결정합니다. 모바일 앱에는 프로필 페이지도 있지만이 화면에는 프로필 정보가 훨씬 적습니다.
이 시점에서 모바일 팀에는 두 가지 옵션이 있습니다. 팀은 웹 팀의 엔드 포인트를 사용할 수 있으므로 데이터를 과도하게 페치합니다 (모바일 앱에 필요한 더 많은 데이터를 얻습니다). 또 다른 옵션은 모바일 팀에서 자신의 BFF를 만드는 것입니다.
기대에 따르면, 모바일 팀은 응용 프로그램에 대한 좋은 성능을 원했기 때문에 자신의 BFF를 만들기로 결정했습니다.
위 그림에서 볼 수 있듯이 상황이 복잡해지기 시작했으며 이제 두 가지 새로운 문제가 있습니다.
각 팀은 그들이 만든 각 응용 프로그램에 대한 새로운 BFF 서비스를 만들어야하므로 각 팀이 느려지고 표준화하기가 어렵습니다.
각 BFF는 안전을 보장하기 위해 침투 테스트가 필요합니다.
이러한 문제를 어떻게 해결합니까?
각 응용 프로그램이 필요한 데이터를 선택할 수있는 솔루션이 필요하며 회사의 모든 응용 프로그램에서 사용하는 단일 API 여야합니다.
BFF가 성숙함에 따라 많은 개발자들이 휴식 대신 그래프 QL을 사용하려고 시도했습니다.
이 기술이 어떻게 도움이 될 수 있는지 봅시다.
bff 를 통한 GraphQL의 장점
GraphQL에는 BFF에 이상적인 기술이되는 많은 장점이 있습니다.
효율적인 데이터 수집. GraphQL을 사용하면 클라이언트가 필요한 데이터를 정확하게 요청할 수 있습니다. 이는 API에서 전송 된 데이터를 줄임으로써 성능을 향상시킵니다.
<.> 단일 엔드 포인트. GraphQL은 게이트웨이를 통해 많은 엔드 포인트를 노출시키는 대신 모든 요청에 단일 엔드 포인트를 사용합니다. 이는 유지 보수 및 버전 제어의 필요성을 단순화합니다.
유연한 쿼리. 클라이언트는 필드와 관계를 단일 요청으로 결합하여 쿼리를 구축 할 수 있습니다. 이를 통해 프론트 엔드 개발자는 데이터 수집을 최적화하여 성능을 향상시킬 수 있습니다. 또한 프론트 엔드 변경의 요구 사항이 변경되면 어떤 식 으로든 백엔드를 변경하지 않고 다른 데이터를 얻도록 업데이트 할 수 있습니다.
프런트 엔드는 이제 각 요청에 필요한 데이터 만 선택할 수 있습니다.
이제 두 개의 응용 프로그램을 동일한 GraphQL Server에 연결하여 두 번째 BFF 서비스의 필요성을 줄일 수 있습니다.
이제 우리는 조직의 모든 응용 프로그램에 대해 BFF를 공유 할 수 있습니다. 또한 침투를 테스트 해야하는 단일 종점이 있습니다.
그러나 우리는 또 다른 새로운 문제를 소개했습니다! 우리는 여전히 API 게이트웨이와 GraphQL BFF의 두 가지 시스템을 관리해야합니다.
두 사람을 그래프 QL 게이트웨이로 병합하면 어떻게됩니까?
다음, GraphQL 게이트웨이가 어떻게 작동하는지 봅시다.
그래프 QL 게이트웨이 란 무엇입니까?
GraphQL 게이트웨이는 API 게이트웨이를 GraphQL API와 결합하여 두 기술의 최상의 결과를 얻습니다.