현재 우리의 서비스의 TPS가 500이라고 해도 타 서비스의 TPS가 200이라면 결국 우리의 TPS는 200이 된다.
이렇게 서비스 간에 TPS의 차이가 발생할 때 어떻게 대처해야 할까?
상대 서비스의 TPS에 맞춰서 우리의 TPS를 조절해서 타 서비스에 요청을 보내야 한다. 즉, 상대 측으로 가는 요청을 제한해서 보내야 한다.
TPS를 조절하지 않는다면 타 서비스에 부하가 발생해 응답 시간은 계속 지연되면서 장애가 발생할 것이고,
해당 서비스를 사용하는 우리 서비스에도 장애가 전파되기 때문이다.
이러한 현상을 방지하기 위한 대표적인 처리율 제한 방식으로 Bulk Head 방식과 Rate Limiter 방식이 있다.
그렇다면 각 서비스 간의 TPS간 차이가 발생한다면 어떤 방식을 사용해야할까? 우선 TPS란 초당 처리할 수 있는 트랜잭션 수이기 때문에 이것은 일정 기간에 해당한다. 따라서 Rate Limiter를 통해서 처리율을 제한하자.
그렇다면 1초당 200개의 요청을 처리하도록 설정하는 것도 좋지만, 아래 사항들을 추가로 고려하면 더 좋다.
1. 해당 서비스를 사용하는 서비스들은 얼마나 있을까?
만약 또 다른 서비스에서도 동시에 200개를 제한한다면 해당 서비스는 1초에 400개의 요청을 처리해야 하기 때문에 본인의 TPS를 초과한다.
그렇기 때문에 해당 서비스를 사용하는 또 다른 서비스들과 TPS 비율을 조율해서 200개 보다 적은 수를 설정하는 것이 안전하다.
2. 동시에 처리할 수 있는 처리량은 어떻게 될까?
1초당 200개를 처리할 수 있다고 해서 동시에 200개를 한번에 요청하면 위험할 수 있다.
따라서 Bulk Head도 추가로 적용해서 동시에 요청할 수 있는 수를 제한하는 것이 안전하다.