개발
코드 / 아키텍처 / 디버깅
-
PDF 변환 API의 메타데이터를 동적으로 전환한 이유
PDF 변환 API의 페이지마다 다른 메타데이터를 동적으로 생성하도록 시스템을 재설계했다. 기존 정적 메타데이터에서 벗어나 데이터베이스 기반의 동적 생성 방식으로 전환하면서 설정 파일들도 함께 정리했다.
읽기 → -
SEO 메타데이터를 DB로 옮겨 배포 없이 운영팀이 직접 수정
DB 드리븐 SEO 메타 데이터 패턴(getSiteSeo)을 구현했다. 정적 하드코딩에서 동적 관리로 전환하는 작업이었다.
읽기 → -
채용공고별 SEO 메타 태그를 DB에서 동적으로 주입하도록 개선
취업 정보 사이트의 각 채용공고마다 검색 엔진이 인식할 수 있는 동적 SEO 메타 태그를 DB에서 직접 가져오도록 구조를 개선했다.
읽기 → -
Astro 정적 사이트에 DB 기반 SEO 메타 관리 도입
Astro 기반 정적 사이트에 데이터베이스 기반 SEO 메타 패턴을 도입했다. getSiteSeo 함수로 메타 정보를 중앙화하고, 런타임에 동적으로 로드하는 구조를 만들게 됐는데, 이게 생각보다 흥미로운 트레이드오프 경험이었다.
읽기 → -
Astro SEO 메타데이터를 DB 연동으로 전환해 비개발자도 관리
최근 Astro 프로젝트에서 **정적 SEO 메타데이터를 DB-driven 패턴으로 전환**하는 작업을 했다. 커밋은 작아 보이지만, 이 변경이 팀의 SEO 관리 방식과 배포 파이프라인에 영향을 주는 꽤 중요한 리팩터링이었다.
읽기 → -
SEO 메타데이터를 DB로 중앙화해 팀 간 협업 개선
SEO 메타데이터를 정적으로 관리하는 대신 데이터베이스에서 동적으로 가져오도록 개선했다. Astro 설정과 Base 레이아웃을 수정해서 공용 라이브러리(@hedvion/common/seo_db.mjs)를 통해 메타 정보를 중앙화했는데, 이 과정에서 몇 가지 팀 관점의 의사결정이 있었다.
읽기 → -
AdSense 도메인 심사 통과를 자동으로 감지해 알림 발송
AdSense 사이트의 상태를 주기적으로 체크해서, READY 상태로 변할 때 자동으로 알려주는 시스템을 만들었다. 단순해 보이지만 운영 입장에서는 꽤 필요한 자동화였다.
읽기 → -
SEO 메타 태그를 DB 기반으로 전환해 동적 주입 실현
SEO 메타 태그 관리를 하드코딩에서 DB 기반으로 옮겼다. Astro 설정 레이어와 레이아웃 컴포넌트에 공통 패키지를 연결해서, 페이지별로 필요한 메타 데이터를 동적으로 주입하는 시스템을 만들었다.
읽기 → -
SSR 빌드 안정화를 위해 mysql2를 번들에서 제외한 이유
Vite 기반 SSR 프로젝트에서 mysql2를 번들에서 제외하도록 설정을 수정했다. 번들링 오류를 막기 위한 작업인데, SSR과 SEO의 맥락에서 꽤 중요한 변경이라 정리해본다.
읽기 → -
SEO 메타 태그를 데이터베이스로 전환해 배포 없이 즉시 반영
동적 서비스의 메타데이터 관리는 늘 난제다. 내가 이번에 진행한 건 기존의 하드코딩된 SEO 메타 태그를 데이터베이스 기반으로 전환하는 파일럿 작업이다. 정적 사이트 생성(SSG) 프레임워크인 Astro 환경에서 런타임 데이터를 활용해 메타 정보를 관리하는 방식으로 전환했으니, 그 과정과 배운 점들을 정리해본다.
읽기 → -
SEO 크롤링 DB 부하를 인메모리 캐시로 줄인 과정
SEO 메타데이터나 사이트맵 같은 정적에 가까운 데이터들을 매번 DB에서 조회하는 게 병목이 되고 있었다. 특히 검색 엔진 크롤러나 사용자 요청이 몰릴 때 DB 압력이 심해지더라. 그래서 SEO 관련 DB 모듈에 인메모리 캐시를 덧붙이기로 했다.
읽기 → -
CMS SEO 백필 스크립트를 안전한 마이그레이션으로 만드는 법
CMS의 사이트 메타정보 중 SEO 필드가 누락되어 있어서, 이를 한 번에 채워주는 백필 스크립트를 작성했다. 언뜻 간단해 보이는 작업이지만, 1회성 데이터 마이그레이션이라는 특성 때문에 설계 단계부터 신경 써야 할 게 많았다.
읽기 → -
SEO 메타 정보를 DB에서 동적으로 관리하는 구조로 전환
SEO 메타 정보를 데이터베이스에서 동적으로 가져오는 헬퍼 함수를 Python과 JavaScript로 각각 구현했다. 정적인 메타 정보 관리에서 벗어나 확장성 있는 구조로 개선하는 작업이었다.
읽기 → -
블로그 서브도메인 통합과 301 리다이렉트로 URL 단절 방지
개인 블로그의 정보 아키텍처를 정리하면서 6개의 포스트를 blog.hedvion 도메인에서 www/insights 경로로 옮겼다. 이 과정에서 nginx 설정에 301 리다이렉트 규칙들을 추가해 기존 링크들이 깨지지 않도록 처리했는데, 단순해 보이는 작업이지만 안고 있는 배경과 고려사항들이 생각보다 많더라.
읽기 → -
Discord 알림을 Embed 형식으로 전환해 가시성 개선
Discord 알림 시스템의 메시지 가시성을 개선하기 위해 사이트 온보딩과 메타 체크 두 모듈의 알림을 일반 텍스트 포맷에서 discord_embed 형식으로 전환했다.
읽기 → -
22개 이커머스 사이트 메타 태그를 AI로 자동 감시한 방법
한 이커머스 서비스의 경우 여러 도메인과 런딩페이지를 동시에 운영하면서 각 사이트의 메타 태그가 검색 최적화 기준을 만족하는지 확인하는 게 점점 부담이 됐다. 손으로 하나하나 확인할 수 없는 규모가 되자, 결국 자동화된 SEO 감시 도구를 만들기로 결정했고 이게 meta-check.py다.
읽기 → -
daily-bible 모듈에 TypeScript strict 모드 타입
daily-bible 모듈의 서버 응답 처리 부분에서 TypeScript strict 모드 빌드를 통과하기 위해 res.json() 반환값의 타입을 명시적으로 캐스팅했다.
읽기 → -
SEO 모니터링 사이트 설정을 단일 모듈로 중앙화한 이유
들어가면서, 최근 한 refactor 작업으로 SEO 모니터링 시스템의 설정 관리를 다시 정리했다. _lib/gsc_submit.py와 seo-monitor/daily-report.py에 흩어져 있던 하드코딩된 SITES 목록을 sites.py 헬퍼 모듈로 통합하는 작업이었다. 작은 작업처럼 보이지만, 이 과정에서 팀 코드 관리의 질과 유지보수 비용에 대해
읽기 → -
사이트맵 포스트 URL을 ID 기반 경로로 정규화해 SEO 신호 명확화
사이트맵의 포스트 URL을 기존 /{slug}/ 형식에서 새로운 /p/{id}/ 형식으로 정규화했다. 작은 변경처럼 보이지만, SEO 관점에서는 사이트의 URL 신호를 명확히 하는 중요한 작업이었다.
읽기 → -
디스코드 리뷰 링크를 ID 기반 경로로 교체해 장기 안정성 확보
review_loop 에서 Discord 에 보내는 원문 링크의 URL 형식을 legacy slug 방식에서 새로운 ID 기반 경로(/p/{id}/)로 변경했다. 작은 수정 같지만 이 과정에서 URL 마이그레이션의 관점과 팀 도구의 안정성을 다시 생각하게 됐다.
읽기 →