도커 자체 호스팅


Bencher 란?

Bencher는 지속적인 벤치마킹 툴 스위트입니다. 성능 저하 문제로 인해 사용자에게 영향을 받은 적이 있나요? Bencher가 그런 일이 발생하지 않도록 막아줄 수 있습니다. Bencher를 이용하면 성능 저하를 사전에 감지하고 방지할 수 있습니다.

  • 실행: 자신이 선호하는 벤치마킹 툴을 사용해 로컬 또는 CI에서 벤치마킹을 실행하세요. bencher CLI는 당신의 기존 벤치마크 하네스를 감싸고 그 결과를 저장합니다.
  • 추적: 벤치마크 결과를 시간 경과에 따라 추적합니다. Bencher 웹 콘솔을 이용해 소스 브랜치, 테스트베드, 메트릭 종류를 기준으로 결과를 모니터링, 쿼리, 그래프로 나타낼 수 있습니다.
  • 탐지: CI에서 성능 저하를 탐지합니다. Bencher는 최첨단, 커스터마이즈 가능한 분석 도구를 사용해 제품 출시 전에 성능 저하를 감지합니다.

기능 회귀를 막기 위해 단위 테스트가 CI에서 실행되는 것처럼, 성능 회귀를 막기 위해 Bencher로 벤치마크를 CI에서 실행해야 합니다. 성능 버그 역시 버그입니다!

Bencher는 오픈 소스이며 자체 호스팅이 가능합니다. Bencher 클라우드를 사용하는 데 관심이 있다면 Bencher 클라우드 퀵 스타트 튜토리얼을 확인해 보세요. 하지만 이 튜토리얼에서는 도커를 사용한 Bencher 자체 호스팅에 대해 설명하겠습니다.


레포지토리 클론하기

이 튜토리얼을 원활하게 진행하려면 git이 설치되어 있어야 합니다. git이 설치되어 있는지 확인하세요.

실행: git --version

다음과 비슷한 결과를 볼 수 있어야 합니다:

$ git --version
git version 2.37.3

버전 번호가 다른 것은 괜찮습니다. 이 명령이 동작하는 것이 중요합니다. 그렇지 않다면 git을 설치하는 지침을 따르세요.


git이 설치되어 있다면 이제 Bencher 레포지토리를 클론할 수 있습니다.

실행: git clone --branch v0.3.18 https://github.com/bencherdev/bencher.git

다음과 비슷한 결과를 볼 수 있어야 합니다:

$ git clone https://github.com/bencherdev/bencher.git
Cloning into 'bencher'...
remote: Enumerating objects: 24752, done.
remote: Counting objects: 100% (7363/7363), done.
remote: Compressing objects: 100% (2396/2396), done.
remote: Total 24752 (delta 4862), reused 7274 (delta 4785), pack-reused 17389
Receiving objects: 100% (24752/24752), 4.92 MiB | 12.43 MiB/s, done.
Resolving deltas: 100% (16108/16108), done.

Bencher UI 및 API 서버 실행

이 튜토리얼에서 UI 및 API 서버를 실행하려면 docker이 설치되어 있어야 합니다. docker이 설치되어 있는지 확인하세요.

실행: docker --version

다음과 비슷한 결과를 볼 수 있어야 합니다:

$ docker --version
Docker version 20.10.17, build 100c701

버전 번호가 다른 것도 괜찮습니다. 이 명령이 동작하는 것이 중요합니다. 그렇지 않다면 docker을 설치하는 지침을 따르세요.


docker이 설치되어 있다면 이제 UI와 API 서버를 실행할 수 있습니다.

실행: docker compose up -d

다음와 비슷한 결과를 볼 수 있어야 합니다:

$ docker compose up -d
[+] Running 16/16
 ⠿ bencher_ui Pulled                                           5.9s
 ...
 ⠿ bencher_api Pulled                                          6.3s
 ...
[+] Running 3/3
 ⠿ Network bencher_default      Started                        0.1s
 ⠿ Container bencher_ui         Started                        0.8s
 ⠿ Container bencher_api_local  Started                        0.4s

다시 한 번, 출력 결과가 다른 것은 괜찮습니다. 이 명령이 동작하는 것이 중요합니다.


그 다음, 두 개의 도커 컨테이너가 모두 실행 중인지 확인합니다.

실행: docker ps

다음과 비슷한 결과를 볼 수 있어야 합니다:

$ docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED              STATUS              PORTS                                           NAMES
1d2ed7c7481e   bencherdev/bencher-ui:latest          "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:3000->80/tcp, :::3000->80/tcp           bencher_ui
7a8590d7021a   bencherdev/bencher-api-local:latest   "/api"                   About a minute ago   Up About a minute   0.0.0.0:61016->61016/tcp, :::61016->61016/tcp   bencher_api_local

여전히, 출력 결과가 다른 것은 괜찮습니다. 이 명령이 동작하는 것이 중요합니다.


Bencher API 서버 로그

Bencher API 서버 로그를 확인해 봅시다.

실행: docker compose logs bencher_api

API 서버에 이메일/SMTP가 아직 설정되어 있지 않으므로, 튜토리얼 후반부에서 얻게 될 인증 코드들이 서버 로그에 표시될 것입니다.


Bencher 호스트 설정

bencher CLI의 기본 호스트는 Bencher 클라우드입니다(예: https://api.bencher.dev). 그러므로 당신의 호스트네임을 설정해야 합니다. 가장 쉬운 방법은 BENCHER_HOST 환경 변수를 사용하는 것입니다.

실행: export BENCHER_HOST=http://localhost:61016

그런 다음 실행: echo $BENCHER_HOST

다음를 볼 수 있어야 합니다:

$ echo $BENCHER_HOST
http://localhost:61016


🐰 축하합니다! Bencher 자체 호스팅 설정을 마쳤습니다! 🎉 이제 Bencher 자체 호스팅과 함께 퀵 스타트 튜토리얼을 진행할 수 있습니다.


계속하기: 퀵 스타트 ➡

🤖 이 문서는 OpenAI GPT-4에 의해 자동으로 생성되었습니다. 정확하지 않을 수도 있고 오류가 있을 수도 있습니다. 오류를 발견하면 GitHub에서 문제를 열어주세요.