비공개 에셋을 어떻게 내려줄 것인가 - 프록시, presigned URL, CloudFront, WAF
외부에 열면 안 되는 파일을 브라우저까지 어떻게 가져올까. 서버 프록시, presigned URL, CloudFront signed URL, OAC와 WAF를 누가 접근을 확인하는가라는 하나의 축으로 비교했다. 프록시가 파일을 통째로 읽는다는 오해는 200MB 파일로 직접 재서 확인했다.

외부에 열면 안 되는 파일을 브라우저까지 어떻게 가져올까. 서버 프록시, presigned URL, CloudFront signed URL, OAC와 WAF를 누가 접근을 확인하는가라는 하나의 축으로 비교했다. 프록시가 파일을 통째로 읽는다는 오해는 200MB 파일로 직접 재서 확인했다.

Parquet 없이 JSONL만으로 조회가 되는지 S3 위에서 실험했다. Range 이진탐색, 키값 이진탐색, B-tree, LSM tree를 직접 지어 왕복 수와 시간을 쟀다. 조회는 되지만 결론은 Parquet다. 이유는 속도가 아니라 유지보수성이다.

열끼리 모아 저장하는 이유부터 덩어리·청크·페이지와 꼬리의 목차까지 Parquet 파일의 안쪽을 따라간다. min/max와 블룸 필터가 덩어리를 거르고, HTTP Range가 그 조각만 집어오는 과정을 애니메이션 일곱 개로 정리한다.

1만 건이 넘는 같은 분류의 알림톡을 그룹 하나로 묶어 보내는 기능을 붙이자, batch 서버가 청크로 잘라 던진 job들이 비동기로 소비되기 시작했다. 그 위에서 그룹은 하나, 발송은 한 번을 지키는 waiting-children의 자리와, 경합 다섯을 하나씩 막고 불변식으로 검증한 과정을 정리했다.

S3에 쌓아둔 발송 이력 JSON은 그대로 질의하기 어렵다. 서버리스 질의, 분석 플랫폼 적재, Parquet 변환, Iceberg 네 안을 상시 인프라·조회 비용의 모양·최신성 기준으로 저울질하고, 매일 새벽 Parquet로 최신화하는 구조를 고른 이유를 정리한다.