공공데이터포털에서 데이터를 고를 때, 무료인지 자동승인인지만 보고 신청하지 않으셨나요?
저도 그랬습니다. 비용 무료, 심의 자동승인, 하루 1만 건. 세 줄이 다 초록불이라 바로 신청했어요. 그런데 막상 화면을 만들려고 조건표를 열어보니 거르고 싶은 항목이 거기 없었습니다. 다 만들고 나서야 지역 조건이 없다는 걸 알았고, 걸러내는 로직을 통째로 다시 짰습니다.
공공데이터 신청하는 법을 알려주는 글은 많은데, 신청하기 전에 이 데이터로 도구가 되는지 판정하는 기준을 말하는 글은 못 봤습니다. 그래서 제가 밟은 순서를 판정표로 정리했습니다. 이용 조건 세 줄이 아니라 조건표 안쪽을 여는 네 가지 질문입니다.
공공데이터로 뭔가 만들어보려는 비개발자를 위해 씁니다.
이용 조건 세 줄은 통과 조건이지 선택 기준이 아니다
상세 페이지에 있는 비용·심의유형·트래픽은 신청이 되느냐를 말합니다. 만들 수 있느냐는 다른 층입니다. 세 줄이 다 초록불이어도 조건표가 비어 있으면 도구는 안 나옵니다.
둘을 섞으면 신청 5분 뒤에 시작해서 하루를 버립니다. 저는 그 하루를 버렸습니다.
신청 전에 던지는 네 질문
첫 질문은 범위를 정합니다. 둘째는 설계를 정합니다. 셋째는 공수를 정합니다. 넷째는 포기할 것을 정합니다.
네 개가 각각 다른 걸 결정하기 때문에 순서를 바꾸면 헛수고가 생깁니다. 셋째부터 보면 만들 수 없는 데이터에 시간을 씁니다.
질문 1 — 거르고 싶은 항목이 조건표에 있는가
가장 먼저 볼 것이고, 가장 많이 빠뜨리는 것입니다. 활용명세에서 응답 필드를 열어 내가 화면에서 입력받을 항목이 실제로 있는지 확인합니다.
제가 쓴 데이터는 나이·성별·소득 구간·가구 형태가 다 있었습니다. 그런데 사는 곳이 없었어요. 사람들이 정부 혜택을 찾을 때 가장 먼저 넣는 조건이 지역인데 그게 없습니다.
상세 페이지의 활용명세에 스키마가 공개돼 있습니다. 신청 없이도 필드 이름과 설명을 볼 수 있어요. 값의 모양은 승인 후에나 보입니다.
기관 이름으로 지역을 대신 판단하는 우회
없는 항목을 다른 필드로 대신 판단해야 합니다. 저는 소관기관 이름에 내 동네 이름이 들어가는지로 지역을 판단했는데, 이건 우회지 해결이 아닙니다. 뒤에서 이 우회가 어떻게 새는지 적었습니다.
질문 2 — 서버가 조건 검색을 실제로 해주는가
문서에 파라미터가 적혀 있는 것과 그게 먹는 것은 다릅니다. 신청 전에는 못 부르니, 승인 직후 제일 먼저 이걸 확인합니다.
확인법은 간단합니다. 조건을 하나 붙여 부르고 응답의 총 건수를 봅니다. 조건 없이 부른 값과 같으면 무시된 겁니다.
왜 이게 무서운가
에러가 안 납니다. 상태 코드도 200이고 형식도 정상입니다. 저는 다섯 가지 조합을 바꿔가며 붙였는데 총 건수가 한 번도 안 움직였고, 한참 동안 제 문법을 의심했습니다.
질문 3 — 검색 한 번에 몇 번을 부르는가
이 숫자가 하루 한도와 만나는 지점이 도구의 수명입니다. 나눗셈 한 번이면 나옵니다.
| 확인할 것 | 내 경우 |
|---|---|
| 엔드포인트 수 | 2개 (목록 + 조건) |
| 전체 건수 ÷ 한 쪽 크기 | 10,968 ÷ 1,000 = 11쪽 |
| 검색 1회당 호출 | 22번 |
| 개발계정 하루 한도 | 10,000 |
| 버티는 검색 횟수 | 454회 |
표에서 이상한 건 마지막 줄입니다. 454라는 값의 단위가 방문자가 아니라 버튼을 누른 횟수거든요. 한 사람이 조건을 세 번 바꿔 누르면 세 번으로 셉니다. 그래서 체감보다 훨씬 빨리 닿습니다.
질문 4 — 필드 값이 사람이 읽는 모양인가
스키마에 필드가 있어도 값이 이상하면 거기서 시간이 갑니다. 실제 응답 몇 건을 눈으로 보는 게 문서 열 장보다 빠릅니다.
제가 쓴 데이터는 대상 구분 값이 여러 개를 기호로 이어 붙인 모양이었습니다. 그 필드를 안 보고 넘기면 기업 대상 사업이 개인 결과에 섞입니다. 그리고 조건 묶음마다 "해당사항없음"이라는 값이 따로 있어서, 그걸 어떻게 볼지 정하지 않으면 결과가 3.6배 흔들립니다.
코드보다 해석을 정하는 데 시간이 간다
값의 모양이 이상한 데이터는 코드가 아니라 해석을 정하는 데 시간이 갑니다. 저는 이 데이터에서 화면 만드는 시간보다 값을 읽는 시간이 길었습니다.
네 질문을 표로
| 질문 | 확인 위치 | ❌ 이면 |
|---|---|---|
| 거를 항목이 있나 | 활용명세 응답 필드 | 다른 필드로 우회 설계 |
| 조건 검색이 먹나 | 승인 후 첫 호출 | 전량 수집으로 전환 |
| 검색당 호출 수 | 전체 건수 ÷ 쪽 크기 × 엔드포인트 | 실시간 호출 포기 |
| 값의 모양 | 실제 응답 몇 건 | 해석 규칙 먼저 정하기 |
❌가 하나도 없으면 실시간 호출로 가도 됩니다. 하나라도 걸리면 수집해서 파일로 두는 쪽이 편합니다. 저는 네 개 중 셋이 걸렸습니다.
그래서 전량 수집 방식이 됐습니다. 결과적으로 그 방식이 인증키 노출 문제까지 없앴어요.
그래서 이 판정표를 통과한 데이터인가
짚을 것이 있습니다. 제가 쓴 데이터는 네 질문 중 셋에서 걸렸습니다.
거를 기준(지역)이 없었고, 조건 검색이 안 먹었고, 값의 모양이 이상했습니다. 통과한 건 세 번째 질문뿐인데 그마저도 하루 454회라는 낮은 값이었습니다.
그래도 만들었습니다. 우회할 방법이 다 있었거든요. 판정표의 용도는 탈락시키는 게 아니라 각오할 것을 미리 아는 겁니다. 저는 몰라서 다 만든 다음에 뒤집었고, 알았으면 처음부터 그렇게 짰을 겁니다.
우회한 곳에서 무엇이 샜나
지역을 기관 이름으로 판단한 우회가 양쪽으로 샙니다. 이건 제가 나중에 세어보고 알았습니다.
한 자치구 조건으로 돌려 세어보니 지역으로 분류된 항목의 절반 가까이가 다른 자치구 공단 사업이었습니다. 분류상 기초자치단체로 안 잡히는 기관들이라, 광역 이름 하나만 걸리면 통과해버립니다.
반대 방향도 있습니다. 동 단위 사업은 기관 이름에 동 이름이 안 들어가서 놓칩니다. 우회는 우회라서 두 방향으로 다 틀립니다.
무료·자동승인이 알려주지 않는 것
공공데이터를 소개하는 글에서 자주 보이는 문장이 있습니다. "무료이고 자동승인이라 누구나 바로 쓸 수 있습니다."
신청까지는 맞는 말입니다. 그런데 도구를 만드는 관점에서는 아무것도 알려주지 않는 문장입니다. 무료이고 자동승인인데 조건표가 비어 있는 데이터가 실제로 있고, 제가 쓴 게 그중 하나였습니다.
정리
네 질문을 다시 접으면 하나가 남습니다. 공공데이터는 조건표가 곧 그 데이터의 능력입니다. 이용 조건 세 줄은 문을 열어주고, 조건표는 그 안에서 뭘 할 수 있는지를 정합니다.
그래서 다음에 데이터를 고르실 때는 비용·심의유형을 본 다음 활용명세를 한 번 열어보시길 권합니다. 거기서 내가 입력받고 싶은 항목을 찾을 수 있으면, 나머지는 다 우회할 수 있는 문제입니다.
이 판정표를 실제로 굴려 웹앱까지 만든 과정은 영상으로 정리해뒀습니다.


