분산형 스케줄링 서비스 설계: 고가용성과 수평 확장성
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

분산형 스케줄링 서비스 설계

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

소프트웨어 엔지니어, DevOps 프로페셔널, 자동화 플랫폼 개발자

난이도: 중급 이상 (분산 시스템 설계, 고가용성 아키텍처 이해 필요)

핵심 요약

  • 고가용성(High Availability): Redis 분산락과 MongoDB 복제 세트를 통해 단일 고장 지점 제거
  • 수평 확장성(Horizontal Scalability): 노드 추가로 처리량 증가, NodeJS - TypeScript 비동기 I/O 활용
  • 일관성(Consistency): Redis Redlock 알고리즘MongoDB 강력한 일관성 모델 결합

섹션별 세부 요약

1. 고가용성 문제 해결

  • 복제 세트 기반 MongoDB로 데이터 복제 및 고가용성 보장
  • Redis 분산락으로 중복 작업 방지
  • 노드 고장 시 다른 노드 자동 대체

2. 기술 스택 구성

  • MongoDB: 유연한 스키마, 복제 세트 지원
  • Redis: 분산락, 가벼운 큐 처리
  • NodeJS - TypeScript: 비동기 I/O, 타입 안전성 제공

3. 시스템 레이어 구조

  • 스케줄링 레이어: 리더 선출(Leader Election)으로 스케줄링 결정
  • 실행 레이어: 워커 노드가 잠금 획득 후 작업 실행
  • 회복 레이어: 일일 검증 스윕, 지수 백오프 재시도, 수동 오버라이드

4. 핵심 설계 패턴

  • 리더-팔로워 모델: ZooKeeper/etcd 또는 Redis 기반 리더 선출
  • 최종 일관성(Eventual Consistency): 장애 발생 시 일관성 복구
  • 인터페이스 정의: IDistributedCronService를 통한 컴포넌트 간 계약 정의

5. 작업 처리 흐름

  • 시간 창 검사(Hourly Window Check): MongoDB에서 다음 1시간 내 작업 추출
  • 작업 실행: Redis 잠금 획득 후 postToSocialMedia() 호출
  • 재시도 메커니즘: 3회 즉시 재시도, 1s/5s/10s 지수 백오프

결론

  • 기존 서비스 활용: Redis, MongoDB 등 기존 서비스를 사용해 복잡한 조정 로직 구현
  • 최종 일관성 수용: 완전한 일관성 필요 시점이 아닌 경우 최종 일관성 전략 적용
  • 장애 대비 설계: 모든 레이어(네트워크, 노드, 외부 API)에서 실패 대비 전략 고려
  • 확장성 보장: 워커 노드 수평 확장으로 수백만 개 스케줄링 처리 가능