4.5MB 벽을 넘어서: Vercel Blob을 경유지로 쓰는 대용량 업로드 우회기
Vercel 서버리스의 4.5MB 제한을 우회하기 위해 Vercel Blob을 경유지로 사용하는 2단계 전송 구조를 도입했습니다. 클라이언트에서 Blob으로 직접 업로드 후 서버가 SFTP로 옮기는 방식으로 최대 30MB 이미지 업로드를 지원하게 됐습니다.
Vercel 서버리스의 4.5MB 제한을 우회하기 위해 Vercel Blob을 경유지로 사용하는 2단계 전송 구조를 도입했습니다. 클라이언트에서 Blob으로 직접 업로드 후 서버가 SFTP로 옮기는 방식으로 최대 30MB 이미지 업로드를 지원하게 됐습니다.
쇼핑몰 G의 헤더 작업을 통해 간단해 보이는 UI가 실제로는 얼마나 많은 케이스를 고려해야 하는지 경험한 날. 디테일이 쌓여 완성도가 된다는 걸 다시 한번 배웠습니다.
하루에 세 개 프로젝트, 23개 커밋. 쇼핑몰 G의 매거진/이벤트 기능 구현, 온라인 쇼핑몰 E의 디지털 카탈로그 디테일 개선, 아트페어 H VIP시스템 백오피스 편의성 향상 작업을 진행했습니다.
토요일 오후, 쇼핑몰 H 관리시스템에서 이미지 링크가 안 먹는다는 제보를 받았습니다. 분명 링크를 넣었는데 클릭해도 아무 반응이 없다고요. 코드를 뜯어보니 범인은 확장의 이었습니다. href 속성을 로 반환하고 있었는데, 정작 태그로 래핑하는 조건문은 를 체크하고 있었던 거죠. 결과적으로 래핑 조건이 영원히 false가 되는 클래식한 버그였습니다. 구조로
Prep이 QANote로 리브랜딩되며 GitHub App 토큰 기반의 진짜 봇으로 진화했고, 쇼핑몰 G 헤더와 WYSIWYG 에디터 개선 작업이 동시에 진행된 금요일의 기록입니다.
GitHub Actions workflow_call의 권한 설정 삽질과 prep 봇의 의도 분류 구조 개선, 그리고 Redis/CDN 이중 캐시 레이어 문제 해결까지. 인프라를 제대로 깔아둔 하루.
CDN과 Redis 캐시 레이어를 재정비하고, 콘텐츠 즉시 반영 기능을 추가했습니다. 안전한 캐시 퍼지를 위해 scanStream과 UNLINK를 도입했고, 개인정보 암호화 로직도 개선했어요.
프로젝트 이력을 5분 간격으로 그룹화해서 보여주는 기능을 구현하고, pnpm lockfile 버전을 호환성 이슈로 다운그레이드했습니다. 권한 분기 처리와 스크롤 기반 UI 개선도 함께 진행했어요.
오늘은 바톤 매뉴얼 프로젝트에서 꽤 많은 일이 있었습니다. 코드 라인만 봐도 +23k/-11k니까요. 물론 이 숫자가 전부를 말해주진 않지만, 오늘 하루 팀이 어디에 집중했는지는 확실히 보여줍니다. 수정 내역을 기록한다는 것 가장 눈에 띄는 작업은 카테고리와 게시물의 수정 내역 추적 기능이었습니다. 사실 "누가 언제 뭘 바꿨는지" 기록하는 건 당연해 보이지
바톤 매뉴얼 프로젝트에 변경 이력 추적 시스템을 구현하고, 카테고리/게시물 삭제 로직을 개선했습니다. 1분 단위 히스토리 그룹화와 before_content 저장으로 데이터 변경을 추적할 수 있게 되었습니다.
검색 정렬 기본값 변경이 생각보다 복잡했던 이유와, 히스토리 기능을 과감히 제거한 이야기. 그리고 새 프로젝트 아트페어 웹사이트의 시작.
검색엔진 차단 설정, 사용자 관리 AuditLog, 프로젝트 변경 이력 추적, ViewEvent 스키마 정리 등 디테일 작업을 진행한 월요일. 화려하진 않지만 프로젝트를 견고하게 만드는 하루였습니다.
일요일 아침, 레포지토리에 알림이 떴습니다. 이 열일하고 있더라고요. 온라인 쇼핑몰 T에서 Shopify 테마 동기화 커밋이 2건 들어왔습니다. 둘 다 로, 아주 작은 변경이에요. 아마 운영팀에서 직접 Shopify 어드민에서 뭔가 수정하신 것 같습니다. Shopify 테마 개발의 재미있는 점: 코드 에디터 말고도 변경이 들어오는 경로가 있다는 것 저희는
조회수 추적 시스템을 봇 필터링과 중복 방지 로직으로 개편하고, 집계 테이블 대신 원본 이벤트 직접 쿼리 방식으로 전환해 PV/UV 이중 지표와 시간대별 통계를 제공하게 됐습니다.
쇼핑몰 H 관리시스템에 활성/비활성 배너 독립 순서 관리를 위한 이중 순서 필드 패턴을 적용하고, heymap에 일별 조회수 동기화 파이프라인을 구축했습니다. 세션 실시간 검증 강화와 CSV 포맷팅 개선도 함께 진행했습니다.
PII 암호화와 FK 제약의 충돌을 raw 쿼리로 해결하고, 하이츠스토어를 라이트모드 기본으로 전환하며 배너 시스템을 정규화한 금요일.
사내 프로젝트 관리 도구에 CRUD 기능과 드래그 앤 드롭 카테고리 관리 기능을 추가했습니다. 실제로 쓸 만한 도구가 되어가는 과정이 재밌네요.
회사 전용 프로젝트 관리 도구에 구글 로그인 연동과 권한 제어를 구현하고, 프로젝트 CRUD 기능을 처음부터 끝까지 완성한 하루. 내부 도구라고 대충 만들 수 없다는 마음으로 차근차근 쌓아가는 중입니다.
iOS 환경에서 모달 배경 스크롤을 막는 방법을 정리했습니다. position: fixed와 스크롤 위치 저장/복원 로직으로 해결했어요.
테스트 코드의 반복되는 Mock 설정을 공통 유틸리티로 리팩토링하고, 여러 프로젝트의 실무 작업을 진행한 하루. 테스트 코드도 결국 코드라는 당연한 진리를 다시 한번 새깁니다.