← ProjectsCASE STUDY

01 / 청년정책알리미

다른 기관의 정책을,
하나의 기준으로

기관별 정책 데이터를 공통 기준으로 정리하고, 추천 결과의 정확성을 확인하면서 반복 조회를 개선했습니다. 데이터 수집부터 다른 PC에서의 실행까지 연결했습니다.

2026.06.17 ~ 2026.08.27 · 오픈소스 팀 프로젝트

내 역할
3인 팀 · 팀장·데이터파트
공통 스키마·API 계약·산출물 통합·검증
공개 데이터
정책 2,051건 · 별도 API Key 없이 초기 설치
핵심 개선
지역 조건 N+1 조회 → 일괄 조회
추천 응답 14.845초 → 1.386초
문제 해결 과정 보기 ↓

MEASURED RESPONSE TIME

추천 결과를 기다리는 시간

일괄 조회 적용 전14.845 s
일괄 조회 적용 후1.386 s
0 s동일한 시간 축15 s

응답 시간 90.7% 단축

같은 PC·DB·요청 조건의 수정 전후 관찰값
측정 당시 개발 DB 3,273건 · 대구광역시·25세 조건

01 / Background

정책을 모은 뒤에도, 같은 기준으로 읽는 문제가 남았습니다.

청년정책은 기관마다 필드와 조건 표현이 달랐습니다. 정책을 한곳에 모아도 지역·연령·신청 상태의 의미가 다르면 검색과 추천 결과를 같은 기준으로 설명하기 어려웠습니다.

저는 팀장·데이터파트로서 공통 스키마와 API·데이터 계약을 정하고, 담당자별 결과물을 DB–API–화면으로 연결해 확인했습니다. 팀원 간 역할을 나누고 Git PR 검토와 통합·실행 검증을 함께 진행했습니다.

원문부터 화면까지, 정책의 의미를 같은 기준으로 유지
원문부터 화면까지, 정책의 의미를 같은 기준으로 유지
데이터파트와 팀 통합에서 다룬 처리 흐름을 요약한 개념도입니다. · 크게 보기 ↗

02 / Data Contract

근거가 있는 조건과, 확인이 필요한 조건을 구분했습니다.

원문에 근거가 없는 값을 실제 자격조건처럼 해석하면 추천 결과도 달라집니다. 일부 데이터에서는 연령 근거가 없는 0세~0세 값이 실제 제한으로 처리되는 문제를 확인했습니다.

발견

값은 있지만, 조건의 근거가 없음

연령 placeholder가 신청 가능한 나이처럼 구조화되어 판정에 영향을 줌

정리

원문을 보존하고 확인 필요로 구분

식별된 631건의 근거 없는 숫자 경계를 해제하고 정규화·재적재

기관별 필드를 공통 스키마로 맞추고 자격조건·중복·결측을 검수했습니다. 값이 없거나 확인되지 않은 상태를 추측으로 채우지 않고, 원문 근거와 함께 구분해 전달했습니다.

이 기준을 데이터 모델, API 응답과 화면의 안내 문구까지 연결했습니다. 산출물을 합친 뒤에는 필드명이 같은지와 함께 빈 값·확인 필요 상태가 같은 의미로 해석되는지도 점검했습니다.

03 / Query Improvement

전체 정책을 평가하자, 14.845초의 반복 조회가 드러났습니다.

추천 결과에서 다른 지역이나 마감 정책이 남고, 뒤쪽에 적재된 지역 정책이 평가 대상에서 빠지는 문제를 확인했습니다. 검색과 추천의 조건 판정을 맞추고 전체 승인 정책을 평가하도록 변경하자, 응답에 약 14.845초가 걸렸습니다.

원인을 따라가 보니 정책마다 지역 근거와 행정구역 정보를 다시 읽는 N+1 조회가 있었습니다. 평가 대상과 최종 응답 개수를 구분하고, 대상 정책의 지역 근거·행정구역 정보를 일괄 조회한 뒤 메모리에서 판정하도록 바꿨습니다.

정책별 반복 조회 → 필요한 근거를 일괄 조회

수정 전

정책마다 DB에 다시 요청

  1. 정책 하나 선택
  2. 지역 근거·행정구역 조회
  3. 판정 후 다음 정책에서 반복

수정 후

함께 읽고, 정책별로 판정

  1. 평가할 정책 ID 전체 확인
  2. 지역 근거·행정구역 일괄 조회
  3. 메모리에서 정책별 조건 판정
조회 경로의 변경을 요약한 개념도입니다. 전체 평가 범위와 조건 판정 기준을 유지하며 반복 조회를 줄였습니다.

MEASURED RESPONSE TIME

추천 결과를 기다리는 시간

일괄 조회 적용 전14.845 s
일괄 조회 적용 후1.386 s
0 s동일한 시간 축15 s

응답 시간 90.7% 단축

같은 PC·DB·요청 조건의 수정 전후 관찰값
측정 당시 개발 DB 3,273건 · 대구광역시·25세 조건

측정 당시 개발 DB 3,273건에서 같은 PC·요청 조건으로 수정 전후를 비교했습니다. 대구광역시·25세 조건의 결과 34건이 모두 지역 조건과 일치하고, 마감 정책이 포함되지 않는 것도 함께 확인했습니다.

04 / Delivery & Validation

다른 PC에서도 같은 데이터로 시작할 수 있도록 정리했습니다.

개발 환경에서만 실행되는 결과로 끝나지 않도록 공개 데이터셋과 설치·검증 절차를 구성했습니다. 공개 정책 2,051건을 별도 API Key 없이 초기 설치하고, Docker 기반 Windows 환경에서 서비스를 시작하도록 연결했습니다.

공개 데이터셋→DB 초기 설치→API·화면 연결→별도 PC 실행

다른 PC에서 설치·실행을 확인하고 결과물과 시연 영상을 제출했습니다. PR 검토와 함께 실제 DB–API–화면에서 데이터의 의미와 동작이 이어지는지를 통합 검증했습니다.

05 / Takeaway

오추천에서 출발해, 반복 조회의 위치까지 추적하기