안녕하세요. 아이들나라 Backend 팀 주니어 개발자 정연재입니다. 😊 저는 입체북 서비스를 오픈 하기 전 진행했던 성능 테스트, 부하 테스트와 튜닝 과정과 느낀점에 대해 공유하는 글을 작성하고자 합니다.

📌 입체북 서비스란, 아이들나라 책 읽어주는 TV 에서 더욱 생생하게 영어동화를 즐길 수 있는 서비스입니다. 3D로 책을 볼 수 있으며 360도 회전, 영어 단어 찾기 등 다양한 효과를 지원합니다. 📚

들어가기에 앞서

야심차게 준비한 입체북 서비스를 출시하기 2달 전 무렵, 저에게 성능테스트라는 업무가 주어지게 되었습니다. 실제로 오픈하는 서비스인 만큼 무거운 책임감을 느꼈습니다.

성능 테스트가 대략적으로 무엇인지, 무엇을 확인하기 위함인지에 대한 개념은 있었지만 구체적인 지식은 거의 없었기에 “어디서부터 시작해야 할지”, “성능이 좋다는 것은 어떤 것을 의미하는지”, “어떤 도구를 사용할지” 등 많은 생각들이 들었습니다.

업무를 주셨던 파트 리더님께서는 저를 배려하여 충분히 서치하고 알아갈 시간을 주셨고, 팀 내 성능 테스트 경험자들이 많다고 언제든지 궁금한 거 있으면 물어보라고 말씀주셔서 자신감을 가지고 성능 테스트를 진행할 수 있었습니다. 😊

본격적인 성능 테스트 과정에 대해 글을 작성하기 전 제가 알아보았던 성능 테스트란 무엇인지, 목적, 용어에 대해 설명드리도록 하겠습니다.

성능 테스트란?

성능 테스트란 시스템 구성 요소가 특정 상황에서 어떤 성능을 보이는지 확인하기 위해 수행되는 테스트입니다. 아래의 그림은 성능 테스트와 그 하위집합에 대한 그림입니다. 성능테스트는 부하테스트(load testing), 스트레스 테스트(stress testing) 등을 포함하고 있는 상위 집합으로 매우 광범위하게 사용되는 용어입니다.

성능 테스트가 왜 필요할까요?

좋은 서비스일수록 사용자가 증가하게 됩니다. 사용자가 계속해서 증가하다 특정 시점에 몰리게 될 경우 응답 속도에 대한 지연이 발생하고 더 나아가 서버에 장애가 발생하게 될 수 있습니다. 장애가 발생한다면 사용자에게는 안좋은 경험을 심어주게 되며, 서비스 신뢰도는 낮아지게 될 것 입니다.

이러한 상황을 방지하기 위해서 성능테스트를 통해 현재 우리 서비스가 수용할 수 있는 최대 사용자 수응답 속도처리량 등을 측정하고, 측정한 값이 목표로 한 성능에 부합하는지 사전에 확인합니다.

만약 테스트 결과가 목표한 성능에 부합하지 않는다면 왜 성능이 나오지 않는지, 병목이 발생한 지점이 어디인지를 파악하고 이를 개선함으로써 서비스가 정상적으로 제공될 수 있도록 가용성을 높이는 작업을 하기 위함입니다.

따라서 저는 성능 테스트를 진행하며 확인하고자 하는 목적을 다음과 같이 정의하였습니다.