Skip to content

성능 향상 요소 #102

@WithFortuna

Description

@WithFortuna

졸업 프로젝트 EconoEasy에서 뉴스 기사 수집·요약 파이프라인의 백엔드를 설계했습니다. 핵심 난제는 MongoDB(기사 상태)와 Redis(작업 큐)를 동시에 갱신해야 하는 구조에서, 한쪽만 성공하고 다른 쪽이 실패하는 부분 실패를 어떻게 다룰 것인가였습니다. 예를 들어 MongoDB에 '처리 중'으로 기록됐지만 Redis 큐 등록이 실패하면, 해당 기사는 영원히 처리되지 않는 고아 상태가 됩니다. 단일 DB의 트랜잭션으로는 해결할 수 없는 문제였기에 Saga 패턴 기반의 보상 트랜잭션 서비스를 직접 설계했습니다. 실패 유형(상태 동기화 실패, 큐 등록 실패, 완료 처리 실패)별로 롤백 규칙을 정의하고, 최대 3회 지수 백오프 재시도 후에도 실패하면 운영 알림을 발행하도록 구현했습니다. 여기에 5분 주기의 일관성 검사 배치를 추가하여 불일치 상태를 자동으로 감지·복구하고, Redis 분산 락으로 배치 중복 실행을 방지했습니다. 결과적으로 두 저장소 간 eventual consistency를 자동으로 보장하는 체계를 완성했고, 수동 개입 없이도 파이프라인이 장애에서 스스로 복원되는 구조를 구축할 수 있었습니다.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions