핵심 요약

  • 1996년 Duane Wessels는 마지막 상용화 이전 Harvest Cache Daemon 버전에서 코드를 분기해 독립 브랜치를 Squid로 명명했고, 7월에 1.0.0을 공개했습니다.
  • Squid 초기 변경 사항은 지속적인 유지보수에서 비롯된 연속성을 보여줍니다. 조건부 HTTP 요청, HTTPS 객체 처리, 서비스 중단 없이 디스크 캐시를 재구축하는 기능이 추가되었습니다.

연구 프로젝트는 끝날 수 있지만, 프로젝트의 도구는 여전히 요청에 응답하고 있었습니다. 1996년 Harvest의 웹 캐시가 바로 이 현실적인 문제에 직면했습니다. Harvest는 객체 캐시를 포함한 여러 구성 요소를 개발했지만, 일부 프로젝트 멤버는 산업계로 옮겨갔고, 그와 동시에 별도로 NSF 자금을 지원받은 캐시 연구가 진행되기 시작했습니다. Harvest에 참여했던 Duane Wessels는 새로운 배포와 연구를 지원할 공개 사용 가능한 소프트웨어가 필요했습니다. 그는 나중에 기술 회고에서 마지막 상용화 이전 Harvest 버전에서 개발을 이어가고, 이 브랜치를 상용화 파생 경로와 구별하기 위해 Squid로 명명했다고 기술했습니다.

이번 분기에는 명확한 운영 목적이 있었습니다. 캐시는 사용자와 원격 웹 서버 사이에 위치해 인기 객체의 복사본을 저장하며, 반복 요청이 더 가까운 위치에서 처리되도록 합니다. Harvest는 캐시 계층 구조도 지원했습니다. 이러한 수요는 연구실에만 국한되지 않았습니다. 1996년 뉴질랜드 배포에 관한 논문은 Harvest Cache가 1995년 10월에 상용 운영을 시작했으며, 이듬해 2월까지 한 대의 서버가 뉴질랜드와 세계 다른 지역 간 인터넷 트래픽의 약 5%에 해당하는 트래픽을 처리했다고 밝혔습니다. 이는 특정 지역의 한 운영자 추산이며, 전 세계 채택률로 삼을 수 없습니다.

Squid의 첫 버전은 원본 그대로의 소스 코드에 이름만 붙인 것이 아니었습니다. 1996년 4월 19일자 1.0 베타 변경 기록은Harvest cached-1.4.pl3을 기반 버전으로 명시하고, 새로 추가된If-Modified-Since요청, SSL 객체 지원, 캐시가 계속 서비스하는 동안 디스크 저장소를 백그라운드에서 재구축하는 기능을 기록했습니다. 이러한 변화는 프록시 서버의 일상적 요구에 대응합니다. 저장된 객체의 갱신 여부 확인, 더 많은 연결 유형 처리, 저장소 유지보수 중에도 서비스를 멈추지 않는 것입니다. Squid 1.0.0은 같은 해 7월에 정식 공개되었습니다.

Wessels의 이후 회고에 따르면, 다음 1년 동안 프로젝트는 코드 기여, 패치, 기능 제안, 버그 보고를 흡수했습니다. 변경 기록은 이 과정을 더 구체적으로 보여줍니다. 수정 사항이 버전마다 이어서 공개되었고, Squid는 Harvest 캐시 노드와의 호환성도 계속 처리했습니다. 1997년 RFC 2186은 ICP(인접 캐시 간에 질의와 히트 결과를 빠르게 교환하는 프로토콜)를 문서화하며, Harvest의 계층 캐시 작업에서 비롯되었다고 명시합니다. 분기는 코드를 바꿀 수 있지만, 다른 캐시가 이해할 수 있는 협업 방식은 그대로 유지되었습니다.

Squid의 출발점은 구체적인 연속성의 형태를 보여줍니다. 운영자가 캐시를 계속 운영하려고 해도 Harvest라는 프로젝트 이름이 그대로 존속될 필요는 없었습니다. 유지보수자는 잘 알려진 코드를 가져와 독립 브랜치를 공개하고, 실제 운영에서 마주친 문제에 따라 수정할 수 있습니다. 이것이 장기 유지보수를 보장하지는 않습니다. 새 프로젝트에는 여전히 인력, 자금, 서로 호환되는 배포가 필요합니다. 그러나 연구 성과가 지속적으로 버전을 공개할 수 있는 소프트웨어 유지보수 주기로 진입하도록 만들었습니다.

출처