배경 및 목표

잡플래닛과의 연동이 단방향(자사 → 잡플래닛)이어서, 잡플래닛에서 자체적으로 공고 상태를 변경해도 감지할 수 없었습니다. 예를 들어 잡플래닛에서 공고를 마감 처리했는데 자사 시스템에서는 여전히 “게시 중”으로 표시되는 등, 양쪽 공고 상태가 불일치하는 상황이 지속될 위험이 있었습니다.

graph LR
    subgraph problem["❌ 단방향 연동의 한계"]
        G["자사: 게시 중"] -.->|"감지 불가"| J["잡플래닛: 마감 처리"]
    end

목표

  • 단방향 연동으로 감지 못하던 외부 데이터 변경을 주기적으로 반영한다.
  • 정합성 오류를 조기에 발견해 빠르게 대응한다.

해결 방법과 해결 후보군

후보군 비교

방식설명한계
실시간 양방향 동기화변경 즉시 반영외부 웹훅 의존, 구현·결합도 큼
조회 시마다 외부 확인조회 때 외부 대조매 조회 외부 호출 → 지연·부하
주기 배치 대조 (채택)주기적으로 비교·업데이트준실시간이나 외부 결합 없이 안정적

1. 주기적 정합성 배치 구축

Spring Batch를 활용하여 주기적으로 잡플래닛 API에서 공고 데이터를 조회하고, 자사 DB의 공고 상태와 비교하는 배치를 구축했습니다.

@Component
class ExternalPlatformSyncBatch(
    private val externalClient: ExternalPlatformClient,
    private val entityRepository: EntityRepository,
    private val slackNotifier: SlackNotifier
) {
    fun syncStatus() {
        val externalEntities = externalClient.fetchAll()
        val internalEntities = entityRepository.findAllLinked()
        
        externalEntities.forEach { external ->
            val internal = internalEntities.find { it.externalId == external.id }
            if (internal != null && internal.status != external.status) {
                internal.updateStatus(external.status)
                slackNotifier.notify(
                    "상태 불일치 감지: ${internal.title}" +
                    " (자사: ${internal.status} → 외부: ${external.status})"
                )
            }
        }
    }
}

잡플래닛 측의 공고 상태(게시 중, 마감, 삭제 등)와 자사 시스템의 공고 상태를 대조하여, 불일치가 발견되면 자사 DB를 잡플래닛 상태에 맞게 업데이트합니다.

2. Slack 알림 대응 체계

상태 불일치가 발견되면 어떤 공고가 어떤 상태에서 어떤 상태로 변경되었는지를 Slack 채널로 자동 알림하도록 했습니다. 운영팀이 변경 사항을 빠르게 인지하고, 필요시 고객사에 안내하거나 추가 조치를 취할 수 있는 대응 체계를 마련했습니다.

sequenceDiagram
    participant Batch as 정합성 배치
    participant Ext as 잡플래닛 API
    participant DB as 자사 DB
    participant Slack as Slack
    loop 4시간마다 실행
        Batch->>Ext: 공고 데이터 조회
        Ext-->>Batch: 공고 목록 + 상태
        Batch->>DB: 자사 공고 상태 조회
        Batch->>Batch: 양측 공고 상태 비교
        alt 상태 불일치 발견
            Batch->>DB: 자사 공고 상태 업데이트
            Batch->>Slack: 변경 내용 알림
        end
    end

결과

지표결과
상태 정합성양측 불일치 해소
대응 체계Slack 알림 자동화
사용자 영향잘못된 공고 상태 노출 방지

모니터링

  • 배치 실행별 불일치 감지 건수와 업데이트 건수를 관측한다.
  • 불일치 발생 시 Slack 알림으로 즉시 대응한다.