레지덴셜 프록시 풀에 대한 대부분의 설명은 이를 창고처럼 들리게 만든다. 선반 위에 놓인 채 나눠주기를 기다리는 대량의 주소들이라는 식이다. 이런 사고방식은 잘못된 것이며, 실제 운영상 놀라운 결과를 낳는다. 풀은 재고가 아니기 때문이다. 풀은 계속해서 참여하고 이탈하는 실제 가정 연결들의 모집단이며, 숙련된 팀들이 풀의 동작에 대해 혼란스러워하는 거의 모든 것은 바로 이 하나의 사실에서 비롯된다.
여기서는 풀이 실제로 어떻게 구성되는지, 새로고침이 기계적으로 무엇을 의미하는지, 그리고 이를 염두에 두고 설계해야 할 결과들을 다룬다.
풀은 어떻게 만들어지는가
레지덴셜 풀의 주소들은 실제 사람들의 가정용 인터넷 연결에 속해 있으며, 이는 데이터센터 대역을 구매하듯 프로바이더가 단순히 이를 구매할 수 없다는 것을 의미한다. 이들은 제공받아야 하는 것이다.
주된 메커니즘은 소프트웨어를 통한 참여다. 사람들은 애플리케이션을 설치하거나, 혹은 그 안에 내장된 SDK를 설치하며, 그 대가로 연결의 일부를 공유하는 조건으로 무언가를 제공받는다. 광고 없는 등급, 유료 기능, 소액 지급, 서비스 접근권 등이다. 해당 기기가 온라인 상태이고 충분히 유휴 상태일 때, 이 기기는 네트워크를 대신하여 요청을 처리할 수 있다. 프로바이더는 해당 SDK를 내장하는 개발자들과 관계를 유지하며, 이러한 관계가 풀의 지리적, 네트워크적 형태를 결정한다. 이것이 총량이 비슷한 두 프로바이더가 특정 국가에서 상당히 다른 모습을 보일 수 있는 이유다. 이러한 조율의 윤리성, 그리고 이를 감사하는 방법은 프로바이더가 IP를 윤리적으로 확보하는 방법에서 다룬다.
명심해야 할 결론은 이렇다: 풀의 구성은 어느 지역에서 어떤 앱이 인기 있는지에 종속된다. 이는 고르게 분포되어 있지 않고, 중앙에서 계획되지도 않으며, 그런 앱들이 사용자를 얻고 잃음에 따라 변화한다.
”새로고침”이 실제로 의미하는 것
풀은 프로바이더와 무관한 이유들로 인해 끊임없이 회전한다.
사람들이 앱을 닫거나, 휴대폰을 주머니에 넣거나, 집을 나서거나, 잠자리에 들면 기기는 오프라인이 된다. 라우터가 재시작되거나 ISP의 임대가 만료되면 가정용 연결은 새로운 주소를 받게 되며, 따라서 같은 가정이 내일은 다른 주소로 나타날 수 있다. 참여자들은 탈퇴하고, 새로운 참여자들이 합류한다. 이에 더해, 프로바이더 스스로도 평판이 나빠졌거나 신뢰할 수 없는 동작을 보이는 주소들을 제거한다.
이 중 어느 것도 유지보수 기간이 아니다. 이것은 정상 상태이며, 배경에서 지속적으로 일어나고 있다. 그렇기에 레지덴셜 풀은 재고보다는 흐름으로 모델링하는 것이 더 적절하다.
풀 크기는 가용성이 아니다
이것이 실질적인 핵심이며, 여기서 헤드라인 숫자들이 오해를 불러일으킨다.
발표되는 풀 수치는 대체로 누적치다. 일정 기간 동안 네트워크가 관측한 주소들이다. 실제 경험을 결정하는 것은 동시 가용성이며, 이는 요청한 국가에서, 적용한 필터 조건으로, 지금 이 순간 몇 개의 개별 주소가 서비스를 제공할 수 있는지를 의미한다. 이 두 숫자는 자릿수 단위로 차이가 나며, 여러분의 작업을 제약하는 것은 오직 후자뿐이다.
세 가지 요소가 이를 더 좁힌다. 지리: 전 세계 수치는 여러분의 시장에 대해 아무것도 말해주지 않으며, 이는 국가별 가용성에서 다루는 논지다. 필터: 도시나 ASN을 추가하면 적격 집합이 크게 줄어든다. 모든 조건에 부합하는 주소만 자격을 얻기 때문이다. 그리고 시간: 풀은 인간 활동을 따르기 때문에, 같은 국가라도 현지 저녁 시간에는 새벽 4시보다 더 깊은 풀을 가진다.
결론은, “풀이 얼마나 큰가”는 유용한 방식으로 답하기 거의 불가능한 반면, “내 필터로, 내 동시성으로, 내가 실행하는 시각에 실제로 몇 개의 개별 주소를 얻는가”는 20분 안에 측정 가능하며, 이것이 실제로 중요한 숫자라는 것이다.
이탈이 설명하는 다섯 가지 동작
풀을 재고가 아닌 모집단으로 모델링하고 나면, 그렇지 않으면 당혹스러웠을 일련의 동작들이 명백해진다.
고정 세션이 이따금 일찍 종료된다. 10분 세션을 요청했는데 4분 만에 끝났다면, 이는 기저의 기기가 오프라인이 되었기 때문이다. 고정 세션은 일정 기간 동안 주소를 유지하려는 최선의 노력이지, 인프라에 대한 임대 계약이 아니다. 그렇지 않다고 가정하는 코드는 간헐적으로 깨진다. 고정 세션 대 로테이팅에서 다루듯, 이를 오류로 취급하지 말고 변화를 감지하여 시퀀스를 재시작하는 정상적인 이벤트로 처리해야 한다.
같은 주소가 다시 나타난다. 로테이션은 중복 없이 목록을 순회하는 것이 아니라 매번 독립적으로 선택하는 방식이므로, 반복은 예상되는 일이며, 좁은 필터가 적격 집합을 축소시킬 때 더욱 빈번해진다. 이는 결함이라기보다는 산술적인 결과이며, IP가 로테이션되지 않는 문제에서 다루는 원인 중 하나다.
주소마다 성능이 다르다. 이들은 각자의 대역폭, 혼잡도, 가정 내 사용 패턴을 가진 소비자 연결이므로, 지연 시간은 데이터센터 인프라보다 훨씬 넓은 분포를 가진다. 백분위수가 이를 정직하게 표현하는 방법이다. 평균은 실제로 여러분의 스케줄에 영향을 미치는 꼬리 부분을 숨긴다.
가용성은 하루 동안 변동한다. 같은 시장에서 20시에는 성공하고 04시에는 어려움을 겪는 작업은 대체로 대상의 변화가 아니라 하루 주기의 풀 깊이를 보고 있는 것이다.
같은 작업의 두 번 실행 결과가 다르다. 다른 주소, 다른 네트워크, 다른 평판. 어느 정도의 변동성은 내재적이며, 모든 변동을 회귀로 취급하는 것은 많은 조사 시간을 낭비하는 일이다.
모집단을 위한 설계
이 위에 무언가를 구축하는 사람에게 실질적으로 의미하는 바는 다음과 같다.
주소는 일회용으로, 라우트는 여러분이 관리하는 단위로 취급하라. 여러분은 특정 주소를 선택한 적이 없고 그것을 유지할 수도 없으므로, 상태 추적은 대규모로 프록시 상태를 모니터링하는 방법과 프록시 매니저 구축하기에서 다루는 모델처럼 라우트와 세션 수준에서 이루어져야 한다.
작업을 재개 가능하고 멱등적으로 만들라. 세션이 시퀀스 중간에 사라질 수 있다면, 시퀀스는 작업을 중복시키거나 기록을 손상시키지 않고 재시작 가능해야 한다.
TTL은 신중하게 선택하라. 긴 TTL은 보장이 아니라 요청일 뿐이며, 소비자 연결에서 한 시간을 요구하면 흐름 중간에 끊길 상황을 자초하는 것이다. 흐름이 실제로 필요로 하는 만큼만 요청하라.
마케팅 수치를 읽는 대신 실제 유효 풀을 측정하라: 실제 필터 조건 하에서 수백 개의 종료점(exit)을 샘플링하고, 개별 주소와 조직 수를 세고, 실행하는 시간대에 이를 반복하라. 헤드라인이 아니라 이 숫자가, 실제로 필요한 프록시 IP 개수에서 다루는 논리와 함께, 동시성 및 분산 결정을 이끌어야 한다.
그리고 모집단을 염두에 두고 일정을 짜라. 작은 시장을 위한 무거운 작업을 그 지역의 야간 시간대에 실행하는 것은 아무 이유 없이 풀과 싸우는 일이다.
외부에서 볼 때 좋은 풀 관리란 무엇인가
프로바이더의 내부를 감사할 수는 없지만, 그 효과는 관찰 가능하다. 실행하는 시간대 전반에 걸쳐 일관된 성공률은 풀이 단순히 총량이 크다는 것이 아니라 여러분의 시장에서 충분히 깊다는 것을 시사한다. 종료점 샘플에서 소비자 ISP 조직들이 폭넓게 분포되어 있다면 희석된 공급이 아니라 진정한 레지덴셜 공급을 시사하며, 이는 데이터센터 IP가 레지덴셜로 판매되는 것을 알아내는 방법에서 다루는 점검 방법이다. 조회 서비스가 보고하는 것뿐 아니라 대상이 실제로 믿는 것과 일치하는 지오로케이션은 지리적 라벨링이 잘 유지되고 있음을 시사한다. 그리고 자신의 소싱 방식을 불편함 없이 설명할 수 있는 프로바이더는 풀이 전반적으로 어떻게 관리되는지에 대해 무언가를 말해주고 있는 것이다.
결론
레지덴셜 풀은 재고가 아니라 모집단이다. 이는 구매가 아니라 참여를 통해 조립되며, 그 형태는 사람들이 실제로 사용하는 소프트웨어를 따르고, 기기가 오프라인이 되고, 주소가 재할당되고, 참여자들이 오고 가면서 끊임없이 회전한다. 바로 이 하나의 속성이 고정 세션이 일찍 종료되는 이유, 주소가 반복되는 이유, 지연 시간이 크게 변동하는 이유, 가용성이 하루 동안 움직이는 이유, 그리고 동일한 두 번의 실행이 다른 결과를 만들어내는 이유를 설명한다. 이를 염두에 두고 설계하라: 주소를 일회용으로 취급하고, 라우트별로 상태를 추적하고, 시퀀스를 재개 가능하게 만들고, 흐름에 맞는 TTL을 선택하고, 여러분을 제약하는 것과는 다른 무언가를 설명하는 헤드라인 수치를 믿는 대신 여러분 자신의 필터로 여러분 자신의 시간대에 유효 풀을 측정하라.
그 풀 위에 레지덴셜 프록시가 자리하고 있으며, 195개국을 아우르고 국가, 지역, 도시, ASN 필터를 제공하고, GB당 요금제를 통해 자신의 유효 가용성을 측정하는 데 드는 비용은 테스트에 사용된 대역폭만큼만 발생한다.