API 서버의 가용성 테스트 방법

운영 또는 클라우드 환경에 사용할 API 서버를 개발 또는 생성하고 있습니까?이 시리즈의 네 번째 부분에서 API 서버의 가용성을 테스트하여 번거로운 작업을 수행할 때 초당 얼마나 많은 요청을 처리할 수 있는지 알아보도록 하겠습니다.
이것은 매우 중요한 조치입니다. 특히 생산 환경에 있어서 가장 원하지 않는 것은 API 서버가 최고치에 달하고 자원을 빈번하게 방출하지 않기 때문에 요청이 줄을 서는 것입니다.

간략하게 설명하다


본고에서 저는 참고NodeJS를 하겠지만 언급한 대부분의 이론과 원칙은 어떠한 플랫폼과 환경에도 응용할 수 있습니다.

YouTube에서 동영상 보기


어떤 기준 테스트 도구를 사용합니까


테스트에 사용할 도구의 이름은 AutoCannon 입니다.그것은 완전히 NodeJS로 작성된 것으로 Apache Benchmark, Artillery, K6, Wrk 등과 매우 비슷하다. 이것은 좋은 소식이다. 왜냐하면 당신은 자동 스캐닝을 사용하여 본문을 따를 필요가 없기 때문이다.기본 테스트 도구가 HTTP 요청에 대한 부하 테스트를 수행할 수 있고 초당 평균 요청 수를 확인할 수 있다면 시작할 수 있습니다.
즉, AutoCannon을 사용하려면 이를 전 세계에 NPM 모듈로 설치하면 됩니다.npm i -g autocannon

API 서버의 가용성 테스트 방법


우선 로컬 환경에서 이 예시를 실행하려면 온라인 Source Code Repo 을 참조하십시오.NodeJS만 설치하면 됩니다.
아래의 코드 세션은 가방을 설정하는 것 외에 거의 99퍼센트가 당신이 원하는 위치에 도달하게 합니다.json, NODE_ENV를 Production, PORT를 6000으로 설정합니다 (문제를 해결하려면 제공된 소스 코드 Repo 및 포함된 비디오의 예제 코드를 참조하십시오.)응용 프로그램에 다음 내용을 추가합니다.js 파일.
'use strict'

require('dotenv').config()

const Express = require('express')
const App = Express()
const HTTP = require('http')
const BCrypt = require('bcryptjs')

// Router Setup
App.get('/pulse', (req, res) => {
  res.send('')
})

App.get('/stress', async (req, res) => {
  const hash = await BCrypt.hash('this is a long password', 8)
  res.send(hash)
})

// Server Setup
const port = process.env.PORT
const server = HTTP.createServer(App)

server.listen(port, () => {
  console.log('NodeJS Performance Optimizations listening on: ', port)
})
이것은 매우 간단한 Express 서버로 두 가지 경로를 공개했습니다.
  • /펄스
  • /응력
  • /pulse 단점은 업무 논리를 포함하지 않고 빈 문자열을 응답으로 되돌려주는 매우 경량급 API를 표시합니다.이 단점을 처리할 때, 어떠한 지연의 원인도 있어서는 안 된다.
    한편,/stress 단점은 BcryptJS를 사용하여 암호를 암호화하고 산열합니다.이것은 매우 복잡한 과정이다. 왜냐하면 이것은 완전히 자바스크립트로 작성된 것이기 때문에 이벤트 순환을 심각하게 막을 수 있다.
    첫 번째 테스트에서는 AutoCannon을 사용하여/pulse 노드에 대한 부하 테스트를 실행하여 API 서버가 비어 있을 때 초당 얼마나 많은 요청을 처리할 수 있는지 확인합니다.절차는 다음과 같습니다.
  • Express Server 시작
  • node app
  • 자동 검색 테스트 실행
  • autocannon http://127.0.0.1:6000/pulse
  • 간단한 부하 테스트로 10개의 병렬 연결을 10초 동안 실행
  • 테스트가 실행되면 평균 초당 요청 수를 포함하는 보고서를 받을 수 있습니다.기계의 속도에 따라 15000~25000개의 요청이 달라져야 한다.

    이제 베이스라인 측정을 통해 API 서버가 과중한 작업을 수행할 때 어떻게 되는지 살펴보겠습니다.
  • Express 서버가 실행 중인지 확인
  • node app
  • 테스트를 위해 터미널 창 2개 열기
  • 창 1에서/응력 끝점에 대해 30초 동안 자동 스캔 실행
  • autocannon -d 30 http://127.0.0.1:6000/stress
  • 창 2에서/압력 테스트가 실행될 때/펄스 단점에 대해 자동 스캐닝을 실행합니다. 이전과 같습니다
  • autocannon http://127.0.0.1:6000/pulse
  • /압력 테스트가 실행될 때/펄스 테스트가 완료될 때까지 실행되는지 확인
  • 이 테스트가 실행된 후,/pulse 테스트의 초당 요청 수가 현저히 떨어지는 것을 보셔야 합니다.

    이것은 무서운 결과라고 상상할 수 있다. 가능한 한 빨리 처리해야 한다.

    이것은 현실 세계에서 무엇을 의미하는가


    이 예는 현실 세계에서 큰 의미가 없지만 환경에서 실행해야 할 테스트 형식에 템플릿을 제공합니다.API 서버가 최대 실행 상태인지 확인한 다음 서버에 속하는 경량급 API에 대한 로드 테스트를 수행해야 합니다.지연이 많지 않은 상황에서 처리할 수 있는지, 코드가 이벤트 순환을 잘 관리하지 못해서 막을 수 있는지 확인해야 합니다.

    나는 어떻게 이 문제를 해결해야 합니까?


    좋아, 좋은 소식이 있어. 처음에 언급한 바와 같이,''에 관한 시리즈 프로그램으로 바쁘다.내가 이미 발표한 내용과 곧 발표할 내용의 예시를 사용한 후, 나는/pulse 테스트의 초당 요청 수를 117개에서 4000여 개로 늘리는 데 성공했다.
    네가 하고 싶은 것은 나의 유튜브 채널을 방문하는 것이다. 왜냐하면 나는 먼저 그곳에서 모든 내용을 발표하고 거의 매주 발표하기 때문이다.이 시리즈에는 이미 4개의 동영상이 있는데 그 중 중요한 영상 중 하나는'Managing The Event Loop Phases'이다.
    나는 이 문장이 가치가 있다는 것을 증명하기를 바란다.더 많은 정보를 기대해주세요.😎
    건배!

    좋은 웹페이지 즐겨찾기