# 개발 블로그 엔트리 이번 주에는 Photobook Library 프로젝트의 아키텍처를 재설계하는 작업을 진행했습니다. 사용자가 대량의 사진을 효율적으로 관리하고 포토북으로 변환할 수 있는 시스템이 필요했는데, 초기 구조에서는 이미지 메타데이터 처리와 레이아웃 엔진이 강하게 결합되어 있어 확장성이 떨어지는 문제가 있었습니다. 이를 해결하기 위해 메타데이터 수집 계층, 템플릿 관리 계층, 렌더링 엔진을 분리하는 마이크로서비스 기반의 아키텍처로 전환했습니다. 설계 과정에서 Claude와 여러 번의 세션을 통해 각 계층 간의 인터페이스 정의와 에러 핸들링 전략을 깊이 있게 논의했습니다. 특히 수천 개의 이미지를 처리할 때 메모리 누수를 방지하기 위한 스트림 기반 처리 방식과, 사용자가 실시간으로 레이아웃을 수정할 수 있도록 하는 이벤트 드리븐 업데이트 메커니즘에 대해 많은 아이디어를 얻을 수 있었습니다. 이 리설계의 가장 흥미로운 부분은 플러그인 시스템을 도입하여 사용자나 개발자가 커스텀 필터, 템플릿, 내보내기 포맷을 추가할 수 있도록 만든 점입니다. 아직 코드 구현 단계는 아니지만, 이 설계를 기반으로 다음 스프린트에서 본격적인 개발을 시작할 예정이며, 더 많은 팀원들이 이 구조에 기여할 수 있는 토대를 마련했습니다.
# Photobook Library 사용성 개선 및 메타데이터 강화 업데이트 이번 업데이트에서는 Photobook Library의 사용자 경험과 관리 기능을 폭넓게 개선했습니다. 가장 주목할 점은 **ISBN 조회 시스템의 대폭 확대**입니다. 기존의 카카오, Open Library, Google Books API에 더해 국립중앙도서관의 SEOJI API를 새롭게 통합하여, 특히 한글 도서의 조회 성공률을 크게 높였습니다. 이제 도서 정보를 입력할 때 더욱 안정적으로 메타데이터를 가져올 수 있게 되었으며, API 조회 순서도 국내 자료 우선으로 최적화했습니다. 또한 각 도서별 외부 링크 URL 필드를 추가하여 교보문고, 예스24 등 판매처로의 연결고리를 제공할 수 있게 했습니다. 관리자 인터페이스도 더욱 강력해졌습니다. 도서 수정 팝업에 **퍼머링크(slug) 직접 편집 기능**을 추가하여 SEO 최적화를 더욱 세밀하게 제어할 수 있습니다. UI/UX 측면에서는 갤러리 이미지가 없을 때 사진책 열기 버튼을 자동으로 비활성화하는 안전장치를 마련했고, 모바일 환경에서 필터 버튼의 위치를 그리드 우상단으로 옮겨 접근성을 개선했습니다. 메인 페이지의 히어로 섹션 높이도 85vh에서 42vh로 축소하여 사용자가 더 빠르게 콘텐츠에 접근할 수 있도록 했습니다. 기술적으로는 OG 이미지와 파비콘을 실제 파일로 교체하고, Content Security Policy의 img-src에 외부 ISBN API 도메인을 추가하여 보안과 호환성을 함께 강화했습니다. 이번 작업에서는 각 기능의 상충 관계를 분석하고 API 조회 로직을 최적화하는 과정에서 AI 협업 도구의 도움을 받아 개발 속도를 높일 수 있었습니다.
# 개발 블로그 엔트리 Photobook Library 프로젝트에서 표지 이미지 등록 기능을 개선했습니다. 기존에는 이미지 파일을 직접 업로드하는 방식만 지원했는데, 사용자들로부터 외부 URL을 직접 입력할 수 있으면 좋겠다는 요청이 들어왔습니다. 특히 웹에서 이미지를 찾은 후 복잡한 다운로드-업로드 과정을 거쳐야 하는 번거로움을 줄이고 싶었거든요. 이번 업데이트를 통해 사용자들이 이미지 URL을 직접 붙여넣기만 하면 바로 표지 이미지로 등록할 수 있도록 했습니다. 구현 과정에서 Claude와의 협업이 큰 도움이 되었습니다. URL 입력 필드 추가, 이미지 유효성 검사, 그리고 기존 파일 업로드 로직과의 통합 방식에 대해 논의하면서 가장 사용자 친화적인 UX를 찾아낼 수 있었습니다. 특히 CORS 정책이나 외부 이미지 로딩 시 발생할 수 있는 예외 상황을 어떻게 우아하게 처리할지에 대한 인사이트가 도움이 많이 되었습니다. 최종적으로 약 42줄의 코드를 추가하고 20줄을 정리하면서 깔끔하고 효율적인 기능을 완성할 수 있었습니다. 이제 사용자들은 간단한 URL 입력만으로도 원하는 이미지를 포토북의 표지로 설정할 수 있게 되었으며, 향후에는 이미지 미리보기 기능도 추가할 계획입니다.
# 개발 블로그 엔트리 최근에 Photobook Library 프로젝트의 아키텍처를 재설계하는 작업을 진행했습니다. 이 프로젝트는 사용자들이 자신의 사진 컬렉션을 디지털 포토북 형태로 정리하고 관리할 수 있는 라이브러리 시스템입니다. 기존 코드베이스가 점차 복잡해지면서 새로운 기능 추가 시 사이드 이펙트가 발생하는 문제가 있었는데, 이번 리팩토링을 통해 모듈 간 의존성을 명확히 하고 확장성 있는 구조로 개선하는 것이 주요 목표였습니다. Claude와의 협업 세션을 통해 전체 시스템 설계에 대한 피드백을 받았습니다. 특히 포토북 생성, 이미지 처리, 메타데이터 관리 등 핵심 기능들을 도메인 기반으로 분리하는 방안에 대해 논의했고, 향후 멀티테넌시 지원이나 API 확장을 고려한 설계 원칙을 수립할 수 있었습니다. AI의 객관적인 관점에서의 제안들이 아키텍처 결정에 실질적인 도움이 되었습니다. 이번 작업은 코드 라인 수로는 드러나지 않지만, 프로젝트의 근간이 되는 구조를 개선하는 의미 있는 단계입니다. 다음 단계에서는 이 새로운 아키텍처 위에 이미지 배치 처리 최적화와 클라우드 스토리지 통합 같은 기능들을 구현해 나갈 계획입니다.
# 포토북 라이브러리 플랫폼의 기능 확장과 최적화 포토북 라이브러리 프로젝트에서 대규모 기능 업데이트를 완료했습니다. 이번 작업의 핵심은 **관리자 기능 강화**, **SEO 최적화**, **사용자 경험 개선**을 동시에 진행하는 것이었습니다. 특히 sitemap.xml 자동 갱신, 트래킹 코드 설정, 구조화된 데이터(Schema.org) 적용 등을 통해 검색 엔진 최적화를 대폭 개선했으며, 관리자 페이지에 카테고리 CRUD와 갤러리 이미지 관리 기능을 추가하여 운영 편의성을 크게 높였습니다. 사이트명도 '포토북 라이브러리'에서 '포토북 & 아트북 라이브러리'로 확장하면서 플랫폼의 범위를 넓혔습니다. 사용자 인터페이스 측면에서는 여러 개선사항을 적용했습니다. 메인 페이지의 추천/최근 섹션을 1줄 가로 스크롤 방식으로 리디자인하고, 컬렉션 필터에 전체/추천 토글 버튼을 추가해 콘텐츠 발견성을 높였습니다. 또한 라이트 모드에 색상 토큰을 추가하고 테마 토글 아이콘을 이모지에서 SVG로 변경하는 등 디자인 시스템을 정리했습니다. 성능 최적화로는 SearchModal의 정적 데이터 직접 import를 제거하고 이미지 최적화 설정을 강화했으며, 서버 액션의 body 크기 제한을 10MB로 확대하여 대용량 갤러리 관리를 지원하도록 개선했습니다. 흥미로운 점은 이러한 다양한 작업을 체계적으로 추진할 수 있었던 배경에 있습니다. 이슈 추적 시스템(SEO-01~05, PERF-03 등)으로 작업을 분류하고, AI 협업을 통해 SEO 규격 준수 항목을 검토하면서 효율성을 높일 수 있었습니다. 45개 파일의 변경으로 약 6,000줄의 순증가 코드를 작성하면서도 기존 기능의 안정성을 유지하려고 세심하게 리팩토링했으며, 특히 관리자 경로를 /admin에서 /eodud로 변경하는 등 보안과 사용성의 밸런스도 고려했습니다.
# Photobook Library 프로젝트 완성: 책 정보 관리부터 갤러리까지 한 번에 Photobook Library는 사용자가 자신의 책 컬렉션을 효율적으로 관리하고 공유할 수 있는 웹 애플리케이션입니다. 이번 개발 사이클에서는 **ISBN 자동 조회**, **갤러리 이미지 업로드**, **리치 텍스트 에디터** 등 핵심 기능들을 완성했습니다. 특히 ISBN 조회 시 기본 API 외에 카카오 책 검색 API를 fallback으로 추가하여, 어떤 상황에서도 책 정보를 빠르게 가져올 수 있도록 안정성을 높였습니다. Sanity CMS와의 연동으로 콘텐츠 관리도 체계적으로 구성했으며, 커스텀 한국어 관리자 페이지(/admin)를 직접 구현하여 사용자 경험을 한층 향상시켰습니다. 기술적으로는 **로컬 미리보기를 통한 즉시 썸네일 표시**, **Sanity CDN 캐시 비활성화 및 revalidatePath 개선** 등 세부적인 성능 최적화에 집중했습니다. 이미지 업로드 에러 처리도 개선하여 사용자가 업로드 실패 시 명확한 피드백을 받을 수 있게 했습니다. Vercel 배포 과정에서 Cloudflare 의존성 제거 등 빌드 안정성 문제도 차근차근 해결했으며, 표지 이미지가 없을 경우의 fallback 처리로 어떤 책이든 깔끔하게 표시될 수 있도록 배려했습니다. 이 프로젝트의 흥미로운 점은 **단순한 책 목록 앱을 넘어 실제 사용 가능한 라이브러리 관리 도구**로 진화했다는 것입니다. ISBN 조회부터 커스텀 갤러리, 리치 텍스트 메모까지 사용자들이 자신의 책 경험을 풍부하게 기록할 수 있는 생태계를 구축했습니다. 특히 AI와 협업하여 복잡한 에러 처리 로직과 API 연동 전략을 다듬으면서, 개발 속도와 코드 품질의 균형을 맞출 수 있었습니다.