pile·
백엔드·pinterest-engpinterest-eng·

대규모 URL 정규화 — Pinterest 콘텐츠 중복 제거를 지원하는 MIQPS

문제대규모 URL에서 추적용 query parameter와 콘텐츠를 바꾸는 parameter를 구분하지 못해 중복 제거 품질이 흔들렸다.

접근MIQPS 알고리즘으로 도메인과 parameter pattern별 URL을 묶고, 렌더링 콘텐츠 fingerprint로 중요한 parameter만 보존했다.

결과중립 parameter를 제거하면서도 콘텐츠 의미가 바뀌는 URL은 유지하는 URL normalization 체계를 만들었다.

pinterest-eng
pinterest-eng 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 백엔드·stackoverflow-blogstackoverflow-blog·

    C++26 Reflection 으로 만드는 컴파일 타임 Map 과 컴파일 타임 가변 변수

    문제C++ 컴파일 타임에는 상태를 수정할 수 없어 mutable 변수나 키-값 맵을 표현하기 어렵다.

    접근C++26 리플렉션의 substitute, is_complete_type, define_aggregate 세 함수로 incomplete template specialization 을 저장소로 사용한다. 조건부로 type 을 complete 시켜 타입 시스템에 상태를 인코딩한다. compile-time ticket counter, immutable map, mutable variable 세 구현을 보인다.

    결과meta::info 를 키와 값으로 모두 쓰는 다형적 저장 구조를 얻고, 전처리기로는 불가능했던 stateful metaprogramming 이 가능해진다. 단일 pair 는 불변이며 mutable 은 여러 기법 조합으로 달성한다.

    #cpp#reflection#metaprogramming+1
  2. 백엔드·네이버페이네이버페이·

    Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록

    문제Spring Data JDBC 의 Composite ID 적용을 위해 Spring Boot 3.5 → 4.0.1 업그레이드 시 Spring Batch, Kotlin, Jackson 등 전체 스택 메이저 전환 필요.

    접근Spring Boot 4 / Spring Batch 6 / Spring Framework 7 / Kotlin 2.3 / Jackson 3 / Kotest 6 / Gradle 9 / ojdbc11 순차 업그레이드. Composite ID 는 Persistable 인터페이스로 구현, JdbcDefaultBatchConfiguration 상속으로 메타데이터 저장.

    결과기술 부채 해결 + 장기 유지보수성 개선. 운영 DB 접근 정책 충돌을 사전 식별해 안정적 배포 달성.

    #kotlin#spring#spring-boot+3
  3. 백엔드·twilio-engtwilio-eng·

    2026년 개발자를 위한 이메일 API 서비스 5선

    문제애플리케이션에서 대량 이메일을 안정적으로 보내려면 API의 보안, 전달률, 확장성, 분석 기능을 함께 평가해야 한다.

    접근Email API와 SMTP의 차이를 설명하고, SendGrid 등 주요 서비스를 전달률, 웹훅 분석, 인증, 비용 기준으로 비교한다.

    결과개발자는 트랜잭션 메일과 마케팅 자동화 요구에 맞춰 확장 가능한 Email API 제공자를 선택할 수 있다.