Fault Tolerance

장애가 없는 서비스를 만들 수는 없다. 장애가 나더라도 쉽게 복구 가능한 장애 내성을 가진 서비스를 만드는 것이 중요하다.

  • 장애 내성을 가진 서비스를 만들기 위한 노력
    • 로깅
    • 성능 테스트
    • 부하 테스트
    • 스트레스 테스트
    • 권한 관리
      • 계정, DB, 설정 파일 등

Load Test

  • 현재 시스템이 어느 정도의 부하를 견디는지
  • 한계치에서 병목이 발생하는 지점은 어디인지
  • 한계치를 확인함으로써
    • 우리의 서비스가 어느정도 트래픽까지 괜찮은지 알 수 있음
    • 한계점을 넘어설 때 어떤 증상이 나타나는지 알 수 있음
    • 장애 발생시에 어떻게 대응하고 복구해야 할지 계획할 수 있음
  • k6, nGrinder 등의 도구를 사용할 수 있다.
    • 어떤 도구를 사용하던 아래 세 가지 요건이 충족되는게 중요하다.
    • a. 시나리오 기반 테스트
    • b. 동시 접속자 수, 요청 간격, 최대 처리량 등 부하 조정이 가능
    • c. 부하 테스트 서버 Scale out 지원

smoke

smoke test 를 통해 소프트웨어 개발자는 자신이 만든 빌드의 유효성을 확인할 수 있다. 다른 공식 테스트가 완료되기 전에 스모크 테스트 단계를 구현함으로써 이후 테스트 단계에서 시간이나 리소스가 낭비되지 않도록 할 수 있다. smoke test 는 빌드가 공식 테스트를 수행할 준비가 되었는지 여부를 나타내는 지표이기 때문에 중요하다.

  • VUser 1 ~ 2 로 구성
  • 최소한의 부하로, 테스트 시나리오 오류를 검증
  • 최소 부하 상태에서 시스템 오류가 없는지 확인

load

  • 서비스의 평소 트래픽과 최대 트래픽으로 구성
  • 기능이 정상 동작하는지 검증
  • 배포, 인프라 변경(scale out, DB failover)시 성능 변화 확인

stress

  • 점진적으로 부하가 증가하도록 구성
  • 최대 사용자, 최대 처리량 등 한계점을 확인
  • 스트레스 테스트 이후 시스템이 수동 개입 없이도 복구 되는지 확인