Netflix에서 'latency monkey'라고 부르는 도구를 개발함. 하류 서비스가 느려지는 것을 감지하는 것이 서비스가 사용 불가능할 때 감지하는 것보다 훨씬 어려움. 이 도구는 패킷을 일정 비율로 떨어뜨려 재전송을 유도하고, 이로 인해 패킷이 지연되거나 순서가 뒤바뀌게 함. 네트워크 접근에 대한 오류 처리 코드에서 많은 문제를 발견함.
인터넷 어플리케이션을 작업하는 모든 소프트웨어 엔지니어는 이와 같은 도구를 일상적으로 사용해야 함. QUIC과 TCP 모두 필요하며, DNS를 포함한 모든 UDP를 캐치할 수 있어야 함. 개발자들이 고성능 컴퓨팅 환경을 사용하지 않으면 웹앱의 90%가 사라질 것이라고 확신함.
많은 앱들이 간헐적인 네트워크 연결 상태에서 성능이 떨어짐. 앱 개발자들이 시뮬레이션된 간헐적 연결성을 테스트함으로써 다른 이들을 도울 수 있음. 많은 앱들이 이메일 클라이언트처럼 '발송 대기함' 기능이 부족함. 재난 구호 상황에서 일반적인 연결 문제를 시뮬레이션하기 위한 참조 toxiproxy '테스트 케이스 변조기'를 누가 개발할 수 있을지에 대한 질문이 있음.
Mac에서는 내장 도구를 사용하여 비슷한 작업을 수행할 수 있음. 네트워크 연결 속도를 시뮬레이션하기 위한 명령어 예시 제공.
Mac에서 느린 네트워크를 시뮬레이션하고자 할 때 Network Link Conditioner를 발견함. 프록시 설정이나 기타 설정 없이 사용할 수 있으며, Xcode 추가 도구에서 설치해야 함.
오랫동안 활동하지 않았지만, 'comcast'라는 이름이 많은 것을 시사함.
Windows에서 사용해본 비슷한 도구로 'clumsy'가 있음.
FreeBSD에도 'dummynet'이라는 기능이 있어서 ipfw의 일부로 지연, 대역폭 제한, 큐 크기, 패킷 손실을 주입할 수 있음. MacOS에서와 같은 기능임.
첫 직장에서 매니저가 FreeBSD IPFW 방화벽을 설정하여 ICMP 응답을 느리게 만들었던 일을 잊을 수 없음. 누군가가 핑을 보낼 때마다 응답 시간이 가장 높게 보였음. 그 매니저는 장난꾸러기였음.
Hacker News 의견
tc
명령어를 사용하여 특정 인터페이스에 지연을 추가하는 방법을 배웠고, 이는 Docker 컨테이너에서도 잘 작동함. 이미 많은 시스템에 설치되어 있을 수 있음.tc qdisc add dev eth0 root netem delay 100ms