개발 slecs

포스트 등록 시 자격 요건을 자동 추출하도록 개선

목차

새 포스트가 INSERT될 때 관련 자격 요건(eligibility)을 자동으로 추출하는 기능을 추가했다. 이전에는 포스트 생성 후 별도 단계에서 수동으로 자격 요건을 판별하거나, 일관성 없게 처리되곤 했는데, 이를 데이터 삽입 시점으로 당겨서 자동화한 작업이다.

왜 INSERT 시점에 자동화해야 했나

정부 규제 시스템(gov domain)에서 자격 요건은 단순한 메타데이터가 아니다. 사용자가 특정 서비스나 지원금에 접근할 수 있는지를 판단하는 핵심 로직이기 때문에, 정확성과 일관성이 곧 규제 준수와 직결된다.

포스트를 등록하는 시점에 자격 요건을 동시에 추출하면:
- 오류 방지: 등록 직후 별도 배치나 수동 작업을 빼먹을 위험이 없음
- 데이터 일관성: 포스트가 생성되는 바로 그 순간, 그 시점의 규정에 따른 자격을 정확히 캡처
- 사용자 경험: 포스트가 시스템에 들어오는 즉시 검색/필터링 대상이 될 수 있음
- 감사 추적: 언제 어떤 자격 기준으로 분류되었는지 원점에서부터 기록

구현: 데이터 삽입 파이프라인에 규칙 엔진 삽입

gov/db.py에서 POST INSERT 트리거나 ORM 훅(hook) 시점에 eligibility 추출 로직을 탑재했다. 이는 다음과 같은 패턴을 따른다:

# 의사 코드
def insert_post(post_data):
    # 1. 포스트 레코드 생성
    post = create_post_record(post_data)

    # 2. INSERT 직후, eligibility 규칙 엔진 실행
    eligibility = extract_eligibility(post)

    # 3. eligibility 관계 저장
    link_eligibility_to_post(post, eligibility)

    return post

이렇게 하면 포스트 생성 트랜잭션 내에서 자격 요건까지 원자적으로(atomically) 처리된다.

실무 고려사항들

이 작업을 진행하면서 몇 가지 트레이드오프를 마주했다:

고려사항 자동 추출 수동 처리
정확성 규칙 엔진에 의존 인간의 판단 개입 가능
속도 동기(INSERT 시) → 느릴 수 있음 비동기 배치 → 지연 가능
유지보수 규칙 변경 시 코드 수정 필요 사람이 유연하게 대응
감시 자동이므로 오류 감지 어려움 명시적 로그, 리뷰 가능

성능을 염두에 두어 eligibility 추출 로직을 캐싱하거나, 복잡한 규칙은 비동기 큐로 분리하는 옵션도 검토했지만, 현 단계에서는 INSERT 시점의 동기 처리로 먼저 정확성을 보장하기로 결정했다. 나중에 병목이 드러나면 그때 최적화할 수 있다.

팀과의 논의 포인트

이 기능을 통해 팀과 논의했던 부분:

  • 규칙의 소유권: eligibility 추출 규칙을 누가 정의하고 유지할 것인가? (도메인 담당자 vs 개발팀)
  • 예외 처리: 규칙이 판단 불가능한 경우(예: 새로운 포스트 유형)를 어떻게 처리할 것인가?
  • 감사 로그: 추출된 자격 요건이 변경되거나 재계산될 때를 어떻게 기록할 것인가?
  • 테스트 전략: 수십 개의 자격 요건 조합을 모두 검증하는 테스트를 어떻게 효율적으로 짤 것인가?

특히 규칙 엔진이 복잡해질 수 있다는 우려가 있었기에, 초기에는 명확한 규칙만 자동화하고, 판단이 필요한 케이스는 플래그를 달아서 수동 리뷰 대상으로 분류하기로 했다.

회고

이번 작업은 "단순해 보이는 자동화"도 실은 설계와 협의의 산물이라는 걸 다시 느꼈다. eligibility 추출 하나만 해도, 정확성·성능·유지보수성·규정 준수를 모두 고려해야 한다. 특히 정부 규제 영역에서는 "뭔가 자동화하는 것"보다 "자동화의 책임을 명확히 하는 것"이 더 중요했다.

앞으로 비슷한 규칙 기반 자동화를 다룰 때는, 초기부터 예외/오류 경로를 설계하고, 규칙 변경 시 영향 범위를 추적할 수 있는 구조를 마련해둬야겠다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.