댓글 검색 목록

[javascript] GraphQL을 API 게이트웨이로 사용하여 마이크로 서비스 모니터링

페이지 정보

작성자 운영자 작성일 20-09-08 21:13 조회 734 댓글 0

GraphQL의 모니터링 기능을 사용하면 문제로 인해 중요한 마이크로 서비스가 중단되기 전에 문제를 조기에 감지 할 수 있습니다.


https://opensource.com/article/20/8/microservices-graphql


마이크로 서비스GraphQL은 빵과 버터와 같은 훌륭한 조합입니다. 그들은 둘 다 스스로 훌륭하고 함께 더 좋습니다. 중요한 서비스를 실행하기 때문에 마이크로 서비스의 상태를 아는 것이 중요합니다. 문제를 진단하기 전에 중요한 문제가 발생할 때까지 기다리는 것은 어리석은 일입니다. GraphQL이 문제를 조기에 감지하는 데 많은 노력이 필요하지 않습니다.


GraphQL in Microservices 


마이크로 서비스의 GraphQL


일상적인 상태 확인을 통해 서비스를 보고 테스트하여 비즈니스, 고객 또는 프로젝트에 영향을 미치기 전에 문제에 대한 조기 알림을 받을 수 있습니다. 말하기는 쉽지만 상태 확인을 한다는 것이 실제로 무엇을 의미합니까?


서비스 점검을 설계 할 때 고려하는 요소는 다음과 같습니다.


서버 상태 확인 요구 사항 : 


  1. 내 마이크로 서비스의 가용성 상태를 이해해야 합니다.
  2. 서버 부하를 관리하고 싶습니다.
  3. 내 마이크로 서비스의 종단 간 (e2e) 테스트를 원합니다.
  4. 정전을 예측할 수 있어야 합니다.

Service health in microservices 

마이크로 서비스의 서비스 상태


서버 상태 확인 방법 


이론적으로 확인할 수 있는 항목이 거의 무한하기 때문에 상태 확인을 작성하는 것은 까다로울 수 있습니다. 저는 작게 시작하고 가장 기본적인 테스트 인 핑 테스트를 실행하는 것을 좋아합니다. 

이것은 단순히 응용 프로그램을 실행하는 서버를 사용할 수 있는지 여부를 테스트합니다. 그런 다음 가장 중요한 서버 요소에 대해 생각하면서 특정 문제를 평가하기 위해 테스트를 진행합니다. 갑자기 사라지면 재앙이 될 일을 생각합니다.


  1. Ping 검사 : Ping은 가장 간단한 모니터 유형입니다. 응용 프로그램이 온라인 상태인지 확인합니다.
  2. 스크립팅 된 브라우저 : 스크립팅 된 브라우저는 더 고급입니다. Selenium과 같은 브라우저 자동화 도구를 사용하면 사용자 정의 모니터링 규칙 세트를 구현할 수 있습니다.
  3. API 테스트 : API 테스트는 API 엔드 포인트를 모니터링 하는 데 사용됩니다. 이는 API 응답을 기반으로 모니터링 계획을 정의 할 수 있는 ping 검사 모델의 고급 버전입니다.

GraphQL로 상태 확인 


일반적인 REST 기반 마이크로 서비스에서는 상태 확인 기능을 처음부터 빌드해야 합니다. 시간 집약적 인 프로세스이지만 GraphQL에서는 걱정할 필요가 없습니다.


웹 사이트에 따르면 :


"GraphQL은 API를 위한 쿼리 언어이자 기존 데이터로 이러한 쿼리를 수행하기 위한 런타임입니다. GraphQL은 API의 데이터에 대한 완전하고 이해하기 쉬운 설명을 제공하고 클라이언트가 필요한 것을 정확히 요청할 수 있는 권한을 제공합니다. 시간이 지남에 따라 API를 더욱 쉽게 발전시키고 강력한 개발자 도구를 사용할 수 있습니다. " 


GraphQL 마이크로 서비스를 부트 스트랩 하면 마이크로 서비스의 상태를 모니터링 하는 프로비저닝도 제공됩니다. 이것은 숨겨진 보석입니다.


위에서 언급 했듯이 GraphQL 엔드 포인트를 사용하여 ping 검사 뿐만 아니라 API 테스트를 수행 할 수 있습니다.


Apollo GraphQL Server는 마이크로 서비스 및 서버 상태에 대한 정보를 반환하는 기본 엔드 포인트를 제공합니다. 그다지 복잡하지 않습니다. 서버가 실행 중이면 상태 코드 200을 반환합니다.


기본 엔드 포인트는 <server-host> /. well-known / apollo / server-health입니다.


Health Check with GraphQL 

GraphQL로 상태 확인



고급 상태 확인 


경우에 따라 기본 상태 확인만으로 시스템의 무결성을 보장하지 못할 수 있습니다. 예를 들어, 밀접하게 결합 된 시스템은 시스템의 상태를 보장하기 위해 더 많은 비즈니스 로직이 필요합니다.


Apollo GraphQL은 서버를 정의하는 동안 onHealthCheck 함수를 선언하여 이 사용 사례를 관리하기에 충분히 효율적입니다.


* Defining the Apollo Server */
const apollo = new ApolloServer({
  playground: process.env.NODE_ENV !== 'production',
  typeDefs: gqlSchema,
  resolvers: resolver,
  onHealthCheck: () => {
    return new Promise((resolve, reject) => {
      // Replace the `true` in this conditional with more specific checks!
      if (true) {
        resolve();
      } else {
        reject();
      }
    });
  }
}); 


onHealthCheck 메서드를 정의하면 서버가 준비되었는지 확인하고 오류가 있으면 거부하는 promise를 반환합니다.


GraphQL을 사용하면 API 모니터링이 더 쉬워집니다. 또한 서버 인프라에 사용하면 확장 성이 높아집니다. GraphQL을 새 인프라 정의로 채택하려면 내 GitHub 저장소에서 예제 코드 및 구성을 참조하십시오.



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.