2024/12 3

[Test] 부하 테스트 (feat. JMeter)

1. 성능 테스트란? 프로젝트가 마무리되는 시점에서 다양한 성능 테스트를 통해 서버의 내구도를 확인하고 싶었습니다. 우선, 성능 테스트란 API 요청이 많은 상황에서 서버가 어떻게 동작하는지 확인하는 테스트 입니다.  시스템이 서비스가 정상적으로 제공할 수 있는 상태인 가용성을 높이기 위해 성능 테스트를 실시합니다. 또한, "초당 1000건의 요청 처리 + 모든 조회 요청을 1초 이내로 응답"과 같은 목표치를 달성하기 위해서도 성능 테스트를 진행할 수 있습니다. 이번 블로그에서는 2. 성능 테스트 지표성능 테스트에서 주의 깊게 봐야 할 지표는 크게 "처리량"과 "응답 시간"입니다. "처리량"은 초당 처리하는 작업의 수 (TPS: Transactions Per Second) 입니다. 처리량은 서브시스템 중..

Test 2024.12.21

[Infra] 모니터링 서버 구축 (feat. Prometheus, Grafana)

1.  모니터링 서버 도입 목적프로젝트 진행 중에는 대규모 트래픽이 발생하지 않아 모니터링의 필요성을 크게 느끼지 못했습니다. 그러나 최근 JMeter를 활용해 가상의 트래픽을 발생시켜 성능을 측정한 결과, 특정 지점 이후 요청이 실패하는 문제가 발생했습니다. 이때 실패 원인을 정확히 파악할 수 없었고, 향후 대량 트래픽 상황에 대비하기 위해 모니터링 서버의 필요성이 대두되었습니다.기존에는 요청 실패 시 로그를 수작업으로 분석하여 문제를 확인하고 대응했지만, 이 과정은 시간이 오래 걸리고 비효율적이었습니다. 이러한 한계를 극복하고 실시간으로 시스템 상태를 파악하기 위해 모니터링 서버를 구축하고자 합니다. 이번 블로그에서는 모니터링 서버를 구축하는 과정과 이를 통해 유의미한 지표를 분석하는 방법을 소개하겠..

Infra 2024.12.21

[Infra] 데이터베이스 다중화

1. 데이터베이스 다중화의 개념데이터베이스 다중화는 여러 대의 데이터베이스 서버를 구성하여 시스템 전체의 성능 향상과 고가용성을 달성하는 기술입니다. 이는 MySQL Replication과 같은 "복제 기술"을 사용해 데이터를 여러 서버로 동기화 하는 방식으로 구현됩니다. "복제"는 한 서버의 데이터가 다른 서버로 동기화되는 것을 의미합니다. 특히, 소스 서버로부터 레플리카 서버로 데이터 복제가 이루어지는데, 소스 서버는 원본 데이터를 소유하고 있는 서버를 의미하며, 레플리카 서버는 복제된 데이터가 저장될 서버를 의미합니다. MySQL에서 데이터 복제가 일어나는 과정은 아래와 같습니다.2. 레플리케이션의 동작 원리소스 서버에서 발생하는 모든 변경사항(이벤트)은 "바이너리 로그 파일"에 순차적으로 기록됩니..

Infra 2024.12.20