이 글은 Rust로 업타임 체커를 구축하는 과정을 상세히 설명하며, 저자가 reqwest에서 순수 hyper로 전환한 이유를 설명합니다. 저자는 업타임 프로버는 성능 최적화가 아닌 상세한 통찰력이 필요한 고유한 HTTP 클라이언트라고 주장합니다. 핵심 교훈은 연결 풀링을 비활성화하는 것인데, 이는 필수적인 연결 및 TLS 핸드셰이크 시간을 숨기기 때문입니다. 이 글은 단일하고 정보가 부족한 오류 대신 타이밍 데이터를 오류 유형 내에 직접 포함시킬 것을 옹호합니다. 이 접근 방식은 DNS, TCP 또는 TLS와 같은 실패 지점을 정확하게 식별할 수 있게 합니다.논의된 중요한 보안 조치는 호스트 이름뿐만 아니라 확인된 IP 주소를 필터링하여 서버 측 요청 위조(SSRF)를 차단하는 것으로, 내부 또는 민감한 클라우드 메타데이터 엔드포인트에 대한 액세스를 방지합니다. 저자는 또한 문자열 기반 오류 구문 분석을 피하고 대신 특정 오류 유형으로 다운캐스팅하여 정확하고 실행 가능한 실패 이유를 제공할 것을 강조합니다. 이를 통해 만료된 인증서와 호스트 이름 불일치와 같은 문제에 대해 사용자에게 명확한 메시지를 전달할 수 있습니다. 궁극적으로 일반 애플리케이션에는 reqwest가 권장되지만, 요청 자체가 제품이고 모든 측면에 대한 세분화된 제어가 필요한 경우에는 순수 hyper가 정당화됩니다. 저자는 이러한 상세한 프로빙이 Uptimepage라는 업타임 모니터링 서비스의 핵심 가치라고 언급합니다.
reqwest에서 순수hyper로 전환한 이유를 설명합니다. 저자는 업타임 프로버는 성능 최적화가 아닌 상세한 통찰력이 필요한 고유한 HTTP 클라이언트라고 주장합니다. 핵심 교훈은 연결 풀링을 비활성화하는 것인데, 이는 필수적인 연결 및 TLS 핸드셰이크 시간을 숨기기 때문입니다. 이 글은 단일하고 정보가 부족한 오류 대신 타이밍 데이터를 오류 유형 내에 직접 포함시킬 것을 옹호합니다. 이 접근 방식은 DNS, TCP 또는 TLS와 같은 실패 지점을 정확하게 식별할 수 있게 합니다.논의된 중요한 보안 조치는 호스트 이름뿐만 아니라 확인된 IP 주소를 필터링하여 서버 측 요청 위조(SSRF)를 차단하는 것으로, 내부 또는 민감한 클라우드 메타데이터 엔드포인트에 대한 액세스를 방지합니다. 저자는 또한 문자열 기반 오류 구문 분석을 피하고 대신 특정 오류 유형으로 다운캐스팅하여 정확하고 실행 가능한 실패 이유를 제공할 것을 강조합니다. 이를 통해 만료된 인증서와 호스트 이름 불일치와 같은 문제에 대해 사용자에게 명확한 메시지를 전달할 수 있습니다. 궁극적으로 일반 애플리케이션에는reqwest가 권장되지만, 요청 자체가 제품이고 모든 측면에 대한 세분화된 제어가 필요한 경우에는 순수hyper가 정당화됩니다. 저자는 이러한 상세한 프로빙이 Uptimepage라는 업타임 모니터링 서비스의 핵심 가치라고 언급합니다.