여러 봇의 SEO 생성 실패를 공통 폴백으로 안정화
목차
여러 봇(블로그, 정부, 금융, 보험, 복권, 폼팩)에서 사용하는 SEO 생성 기능에 폴백 로직을 추가했다. 이전까지는 SEO 생성이 실패하면 그냥 실패로 끝나거나 예상 밖의 에러가 발생하는 경우가 있었는데, 이번에 공통 모듈에 폴백 메커니즘을 심으면서 각 봇이 좀 더 견고하게 동작하도록 만들었다.
SEO 생성, 왜 실패할까?
SEO 제목이나 설명을 자동으로 생성하는 기능은 실제 서비스에서 여러 지점에서 깨질 수 있다. API 타임아웃, 외부 서비스 에러, 모델 응답 포맷 오류, 때론 콘텐츠 자체가 너무 짧거나 이상한 경우도 있다. 특히 우리처럼 여러 도메인의 봇이 함께 동작할 때는 각 봇이 처한 상황이 다르므로, 같은 실패 상황도 각각 다르게 대응해야 할 수 있다.
초기에는 각 봇(blog, gov, money, insurance, lotto, formpack)에서 SEO 생성 실패를 개별적으로 처리했다. 그런데 코드를 보니 "실패했을 때 뭔가 대체할 텍스트를 사용하자"라는 기본 개념은 모든 봇에서 필요했다. 이걸 각 봇마다 반복해서 짜는 건 유지보수 관점에서 악수였다.
공통 모듈로 폴백 로직 통합
blog/common.py에 폴백 처리를 만들고, 필요한 봇들(특히 gov/db.py 같은 데이터 계층)에서 참조하도록 구조를 잡았다. 이렇게 하면:
- 일관성: 모든 봇이 동일한 폴백 전략 사용
- 유지보수성: 폴백 로직을 한 군데서만 관리 가능
- 확장성: 새로운 봇이나 모듈이 추가될 때도 같은 방식 적용 가능
| 항목 | 변경 전 | 변경 후 |
|---|---|---|
| SEO 생성 실패 처리 | 각 봇마다 별도 로직 | blog/common.py 폴백 함수 |
| 코드 중복 | 높음 | 낮음 |
| 폴백 전략 변경 시 | 모든 봇 수정 필요 | 공통 모듈만 수정 |
폴백 메커니즘의 역할
# 개념적 구조 (실제 구현은 다를 수 있음)
def seo_generate_with_fallback(content, title, metadata):
try:
return generate_seo(content, title, metadata)
except SomeException:
return apply_fallback(title, metadata)
폴백의 목표는 간단하다: SEO 생성이 실패해도 서비스가 멈추지 않도록 무언가 그럴듯한 텍스트라도 제공하는 것이다. 원제목 사용, 기본 템플릿 적용, 메타데이터에서 추출한 키워드 조합 같은 방식들이 있다. 완벽한 AI 생성 SEO는 아니지만, 빈 텍스트나 에러 메시지를 노출하는 것보다는 훨씬 낫다.
팀 관점에서의 판단
이런 공통 로직화는 언뜻 간단한 수정처럼 보이지만, 팀 관점에서 생각해볼 게 있다:
- 온보딩: 새로운 팀원이 SEO 실패 처리 방식을 학습할 때, "공통 모듈 함수 하나"만 이해하면 된다
- 버그 수정: 폴백 로직에 버그가 있으면, 한 곳 고치면 모든 봇에 적용된다
- 신뢰도: 검증과 모니터링도 한 곳에 집중할 수 있어서, 더 깔끔한 로깅과 알림 설정이 가능
다만 각 봇의 특수성이 있다면 (예: blog는 폴백을 항상 적용하되 gov는 특정 케이스만) 그걸 설정으로 분리할 수 있도록 확장성 있게 만드는 게 중요하다.
회고
이 작업은 작아 보이지만 "흩어진 로직을 모으기"의 전형이다. 여러 모듈에 겹치는 부분이 있으면 언젠가는 이걸 정리해야 하는데, 그 타이밍을 잘 잡는 게 중요하다. 각 봇의 SEO 처리가 어느 정도 안정화되었을 때 이렇게 공통화하는 게 의미 있다. 아직 자주 변하는 로직을 너무 일찍 공통화하면 오히려 반복 수정이 많아진다.
또 이런 "폴백" 같은 defensive 로직은 처음 코드 짤 때 고민이 덜 되는 부분인데, 실제 운영하면서 "아, 이게 없으면 진짜 문제네" 하는 순간이 온다. 그 시점에 빠르게 대응하고 여러 지점에 일관되게 적용하는 게 프로덕션 서비스의 안정성을 높인다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.