도커 자체 호스팅
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 자체 호스팅과 함께 퀵 스타트 튜토리얼을 진행할 수 있습니다.