[책 후기] 아마존 웹 서비스 부하 테스트 입문 읽기2(5장 ~ 9장)

mylime·2024년 8월 19일
1
post-thumbnail

아마존 웹 서비스 부하테스트 입문 시리즈



서론

1장 ~ 4장에 이어 오늘 5장부터 9장을 읽고 내용을 정리해보려고 한다.



5장. 부하테스트 계획

5장에서는 부하테스트 계획을 수립하는 방법에 대해 알려준다. 제대로 부하테스트를 하기 위해서 결정해야할 내용들은 다음과 같다고 한다.

  • 일정
  • 부하테스트 목적
  • 전제 조건 정리
  • 목푯값
  • 사용할 부하 테스트 도구
  • 부하 테스트 환경
  • 부하 테스트 시나리오

책에서는 위와 같은 내용을 결정할 때 유의해야할 사항, 명확하게 정해야하는 것들에 대한 기준을 상세하게 알려주었다. 부하테스트 일정은 여유롭게 잡아야한다거나, 사용자수나 데이터건수 등 성능에 많은 영향을 주는 요건에 대한 영향력을 확인해야한다는 것 등의 가이드도 잡아주었다. 또한 성능 목푯값을 설정할 때 필요한 수치를 구하는 법, 발생할 수 있는 문제점과 해결법도 말해준다.


읽다보니 생각보다 부하테스트를 시작하기 전 고려해야할 사항, 준비해야할 것들이 많다는 걸 알게되었다. 이전에 내가 JMeter를 통해 대충 부하만 발생시키고 HTML 보고서를 분석하려고 했던건 정말 잘못된 행동이라는 것도 깨달았다. 과학 실험을 할 때 무작정 실험하지 않고 계획을 세우고 하듯, 부하테스트도 계획이 정말 중요하다는 걸 알게되었다.



6장. 부하 테스트 준비

6장에서는 부하테스트를 위한 테스트 환경이나 도구, 관련 시스템 조율 등에 대한 준비과정을 알려준다.


부하 테스트 시 대상 환경을 실제 서비스와 비슷하게 제대로 구축해야한다는 건 알고있었지만, 부하 테스트 도구 자체를 테스트해야한다는 건 생각도 못했다. 또한 외부 시스템 연동을 위한 stub을 구성하는 것도 좋은 팁이었던 것 같다.



7. 부하 테스트 실행 1: 테스트 실행과 병목 현상 확인

이제 드디어 부하테스트를 실행하나 했는데, 아직 전체에 대한 부하 테스트를 하는 것은 추천하지 않는다고 했다. 생각해보니 작은 병목지점을 찾아야하는데 전체 로직에 대해 테스트하면 어느 부분인지 찾기는 굉장히 어려울 것 같았다. 부하 테스트의 목적은 병목 지점을 찾아내고 시스템을 개선해나가는 것이라고 하였으니 잘게 나눠서 테스트하는 게 옳은 방법이었다.


이 책에서 제시한 부하테스트의 구체적인 단계는 다음과 같다.

  1. 도구와 환경의 검증
  2. 웹 프레임워크 검증
  3. 참조계(조회) 성능 검증
  4. 갱신계 성능 검증
  5. 외부 서비스 연동 성능 검증
  6. 시나리오 테스트
  7. 스케일 업/아웃 테스트 준비
  8. 스케일 업/아웃 테스트
  9. 한계 성능 테스트

책에서는 이 단계들을 상세하게 설명해준다. 테스트 할 부분을 잘게 쪼개고, PDCA 사이클을 돌리고 회귀 테스트를 반복하면서 문제점을 발견해나가는 게 인상적이었다. 이 책을 읽기 전, 전체 로직을 후루룩 테스트하고 바로 병목지점을 찾아내 고치려고 한 내 자신이 부끄러웠다..


이 챕터를 읽고나니 부하테스트를 할 때 생각이상으로 시간이 많이 든다는 게 체감이 됐다. 테스트를 하는 건 그렇다고 쳐도, 언제 어디서 발생할 지 모르는 에러도 해결해야한다면 짧은 시간으로는 부족할 것 같았다. 부하 테스트는 여유롭게 진행해야한다는 말이 이해가 됐다.



8. 부하 테스트 실행2: 원인 분석과 시스템 개선 작업

8장에서는 7장의 과정에서 발견한 다양한 병목상황에 대한 해결책을 제시하고, 시스템 전체를 개선하기 위한 Action을 알려준다. 이 챕터의 표만 봐도 부하테스트를 위해 CS 지식이 중요하다는 걸 알 수 있다. 해결 과정을 지금 당장 공감하기는 힘들었지만, 나중에 부하테스트를 하면서 다시 책을 꺼내보고 표를 참고하면 도움이 많이 될 것 같았다.


책을 읽다보면 도움이 되는 칼럼이 몇몇 등장하는데, 8장 칼럼에 나오는 DB 마스터-슬레이브 구성이 너무 흥미로웠고 더 공부해보고 싶었다.



9. 부하테스트 보고서 작성

부하테스트의 목푯값과 전제 조건을 만족했는지 여부도 중요하지만, 그 전에 다음과 같은 항목을 먼저 확인해야한다고 한다.

  • 부하테스트 대상 시스템에 부하가 집중되었는가?
  • 병목은 확인되었는가?
  • 시스템은 정상적으로 확장되었는가?
  • 확장에 대한 특성은 파악했는가?

모든 항목에 문제가 없으면 그 때 부하테스트 보고서를 작성하면 된다고 한다. 그 뒤에는 보고서에 들어갈 항목을 소개해준다. 보고서는 알기 쉽게 작성하는 것이 중요하다고 하며, 부하테스트의 특성상 시스템 모니터링 결과가 오해를 낳을 수 있기 때문에 조심해야한다고 경고한다.



마치며...

9장까지 읽으니 어느정도 부하테스트에 대한 감을 잡을 수 있었지만, 제대로 부하 테스트를 하기 위해서는 공부를 더 많이 해야겠다는 생각이 들었다. 특히 운영체제, 네트워크 등 기초 CS지식이 더욱 탄탄해야함을 느꼈다. 부하테스트를 통해 단순히 데이터베이스 쿼리나 코드 성능을 개선할 수도 있지만 TCP 포트부족, Https에서 오는 병목, Keep-Alive 설정 등 다른 여러 구간에서 문제가 발생할 수 있었고 이를 해결하려면 어떻게 동작하는지 제대로 알고 있어야했다. 부하테스트를 위해 읽기 시작한 책이지만 웹 서비스 전반에 대한 이해도가 높아진 것 같다.


나머지 챕터는 적용 예시인데, 마저 읽은 후 작은 것부터 하나하나 적용해봐야겠다. 어떤 기술이든 익숙해지는 게 중요하니까!

profile
깊게 탐구하는 것을 좋아하는 백엔드 개발자 지망생 lime입니다! 게시글에 틀린 정보가 있다면 지적해주세요. 감사합니다. 이전블로그 주소: https://fladi.tistory.com/

0개의 댓글