1. 성능(performance)
시스템이 요청을 얼마나 빠르고 안정적으로 처리할 수 있는지를 정의하는 요구사항입니다.
응답 시간, 처리량(TPS), 지연 시간 같은 속도와 관련된 품질이 여기에 포함됩니다. 예를 들어 ‘API 응답은 500ms 이내여야 한다’, ‘초당 1,000건의 요청을 처리할 수 있어야 한다’ 같은 조건이 성능 요구사항입니다. 성능 요구사항이 중요한 이유는, 기능이 정상 동작하더라도 응답이 느려지는 순간 사용자에게는 ‘장애’로 인식되기 때문입니다. 개발 단계에서는 문제없어 보이지만, 실제 트래픽이 몰리는 순간 가장 먼저 드러나는 것이 성능 문제입니다.
2. 확장성(scalability)
사용자 수나 데이터 양이 증가했을 때 시스템이 구조적으로 이를 감당할 수 있는지를 정의하는 요구사항입니다. ‘트래픽이 10배로 늘어났을 때 서버를 수평 확장해 대응할 수 있는가’, ‘데이터가 1억 건으로 늘어나도 쿼리 성능이 유지되는가’와 같은 질문이 여기에 해당합니다. 확장성 요구사항은 단일 테스트 환경에서는 거의 드러나지 않습니다. 잘 돌아간다는 판단이 가장 쉽게 깨지는 영역이기도 합니다. 용이의 사례처럼, 라운드 로빈이 동작하는 것처럼 보여도 동시 요청 상황에서는 전혀 다른 결과가 나올 수 있습니다.