toplogo
Sign In

렌더러의 톱니파 수수께끼 해결: 지연 시간 문제 해결 과정


Core Concepts
새로운 버전의 렌더러 서비스 배포 후 발생한 지연 시간 문제를 다양한 모니터링 도구와 분석 기법을 활용하여 근본 원인을 찾아내고 해결한 과정을 소개합니다.
Abstract
이 글은 Typeform의 핵심 서비스인 렌더러 서비스에서 발생한 성능 문제를 해결하는 과정을 설명합니다. 새로운 버전의 렌더러 서비스를 배포한 후 응답 시간에 이상한 톱니파 패턴이 나타났습니다. 이 문제를 해결하기 위해 다음과 같은 과정을 거쳤습니다: 메트릭스와 트레이싱 데이터를 분석하여 문제의 징조를 발견했습니다. 렌더러 서비스가 폼 정의를 가져오는 API 호출에 예상보다 긴 시간이 소요되는 것을 확인했습니다. 런타임 메트릭스를 추가로 수집하여 분석한 결과, CPU 사용량과 이벤트 루프 지연이 증가하는 것을 발견했습니다. 이를 통해 코드 내부에 비싼 객체 생성 작업이 있을 것으로 추정했습니다. Datadog 프로파일러를 사용하여 문제가 발생하는 시점과 그렇지 않은 시점의 코드 실행 패턴을 비교 분석했습니다. 그 결과 trackPrivateForm 함수가 성능 병목 지점인 것으로 확인되었습니다. trackPrivateForm 함수 내부를 살펴본 결과, 매번 새로운 RudderstackAnalytics 인스턴스를 생성하는 것이 문제의 원인이었습니다. 이를 해결하기 위해 RudderstackAnalytics 인스턴스를 함수 외부에 생성하도록 변경했습니다. 이와 같은 과정을 통해 렌더러 서비스의 지연 시간 문제를 해결할 수 있었습니다. 이 경험은 시스템 성능 관리의 중요성과 다양한 모니터링 및 분석 도구의 활용 방법을 보여줍니다.
Stats
렌더러 서비스가 폼 정의 API 호출에 103ms 소요되었지만, API 자체는 6ms만 소요되었습니다. 지연 시간 증가 기간 동안 CPU 사용량과 이벤트 루프 지연이 증가했습니다. 메모리 사용량은 안정적이었습니다.
Quotes
"Tools like Datadog help us track important metrics, like how fast our systems respond to requests. But how do you dig deeper and find a solution when those numbers start acting strange?" "Ultimately, this experience reinforced the importance of continuously improving our systems and staying vigilant in monitoring their health."

Deeper Inquiries

새로운 버전의 렌더러 서비스 배포 후 발생한 지연 시간 문제를 해결하는 과정에서 어떤 다른 접근 방식을 고려해볼 수 있었을까요?

이번 문제 해결 과정에서 다른 접근 방식으로는 A/B 테스팅을 고려해볼 수 있었습니다. 새로운 버전 배포 이후에 발생한 문제를 해결하기 위해 이전 버전과 새 버전을 동시에 운영하면서 성능 및 지연 시간을 비교하는 A/B 테스트를 수행할 수 있었습니다. 이를 통해 어떤 변경 사항이 문제를 유발하는지 명확히 확인하고, 더욱 정확한 대응 방안을 마련할 수 있었을 것입니다.

이번 사례에서 사용된 모니터링 및 분석 도구 외에 어떤 다른 도구나 기법을 활용할 수 있었을까요?

이번 사례에서 사용된 도구들 외에도 Distributed Tracing을 활용할 수 있었습니다. Distributed Tracing은 여러 서비스 간의 호출 관계를 추적하고 각 호출의 성능을 측정하는 데 유용한 도구입니다. 이를 통해 렌더러 서비스와 다른 서비스 간의 통신 문제나 성능 저하를 식별하고 해결하는 데 도움이 될 수 있었습니다.

이번 경험을 통해 Typeform 팀이 향후 시스템 성능 관리에 어떤 변화를 줄 수 있을까요?

Typeform 팀은 이번 경험을 통해 시스템 성능 관리에 대한 더욱 심층적인 접근을 채택할 수 있을 것입니다. 더 많은 모니터링 도구와 자동화 기술을 도입하여 실시간으로 시스템 상태를 파악하고 문제를 조기에 발견할 수 있도록 노력할 것입니다. 또한, 지속적인 성능 튜닝과 최적화를 통해 사용자 경험을 향상시키고 안정적인 서비스 제공을 위해 노력할 것입니다.
0
visual_icon
generate_icon
translate_icon
scholar_search_icon
star