피카밈 개발기
가벼운 가챠형 밈 서비스 뒤에 실무 수준 백엔드를 의도적으로 설계한 1개월 풀스택 기록. 토이 프로젝트에도 Clean Architecture·DDD를 적용한 이유, 분산 락 기반 하트 동시성 제어, Redis 캐시·Rate Limiting·OAuth2 디버깅까지 기술적 선택과 실패를 솔직하게 담았습니다.
Pet-Pass 실패 후 피카밈을 시작한 이유. 백엔드 개발자가 풀스택을 선택한 배경과 3가지 원칙.
Clean Architecture와 Gradle 멀티모듈로 레이어를 나눈 설계 결정. AI 협업 시 도메인 계층 규칙을 강제한 방법.
BASIC 하트는 Redis, SPECIAL 하트는 JPA — 저장소 분리 이유와 Redisson 분산 락 구현기.
HttpOnly Cookie 로그아웃이 5차에 걸쳐 깨진 이유. 크로스 오리진 Set-Cookie, host-only 쿠키, JSESSIONID까지.
완성된 밈 이미지를 R2에 즉시 저장하지 않는 Lazy Upload 전략. 비용 발생 시점 자체를 설계한 이야기.
STATELESS 정책 적용 시 OAuth2 state가 사라지는 이유. CookieOAuth2AuthorizationRequestRepository 구현기.
Cloudflare 뒤에서 Redis 토큰 버킷으로 Rate Limiting을 구현한 이유. CF-Connecting-IP 기반 저속 공격 방어 전략.
미션 시스템 도입 후 터진 버그 4가지. 새 기능은 기존 시스템과의 접점에서 깨진다는 교훈.
한국어 서비스에 영어를 추가할 때 번역 책임을 어디에 둘 것인가. Spring MessageSource vs 클라이언트 사전 방식 트레이드오프.
Redis @Cacheable 어노테이션 뒤에 숨은 AOP 프록시, self-invocation 함정, 제네릭 타입 직렬화 문제.
Cloudflare Polish(Lossy)와 R2 커스텀 도메인 전환으로 코드 변경 없이 이미지 전송 용량을 절반으로 줄인 사례.
Railway 무료 플랜 종료 9일 전 OCI 이관 전 과정. OOM 방어, GHCR CI/CD, Nginx+SSL까지 6단계.
피카밈 1개월 개발 회고. TASK 60+개, BUG 7개, PR 100+개 — 반복하지 않을 것들과 AI 협업의 솔직한 평가.