공적마스크 개발 진행과정 (NIA)

코드포코리아
발행일 2023.07.28. 조회수 833

1 공적마스크 개발 추진 노력들

1.1 시민개발자(시빅해커)로 이뤄진 코로나19 공공데이터 공동대응의 데이터 공개 요청 : 공적마스크 등 코로나19 관련 공공데이터의 개방 요구

3월 4일 코로나19 확산 방지를 위해 시민개발자들로 구성된 '코로나19 공공데이터 공동대응'은 광화문1번가를 통해 코로나19와 관련된 공공데이터(환자 통계, 선별진료소 목록, 마스크 등 방호용품 정보 등) 개방을 요구하였다. 코로나19 관련 공공데이터가 제공이 되면, 시민개발자들이 국민들에게 좀 더 편리하게 코로나19 상황과 정보를 서비스로 제공할 수 있음을 제안한 것이다. (광화문1번가 '코로나19 및 감염병 관련 공공데이터 개방 제안', 코로나19 공공데이터 공동대응)

1.2 정부의 응답 : 시빅해커(시민개발자)의 요구에 ‘즉시 응답’

정부는 시민개발자들의 코로나19 공공데이터 개방에 신속하게 대응을 하였다.

먼저 한국정보화진흥원(원장 문용식, 이하 'NIA'라 한다)은 광화문1번가에 접수된 코로나19 관련 공공데이터 개방 요청에 대한 대응과 특히 공적마스크 데이터 개방을 즉시 추진하도록 NIA 공공데이터본부에서 지시하였다(3월4일). 이를 위하여 NIA 원장, 공공데이터본부, 디지털혁신기술단과 외부 개발전문가(경기도 임문영 국장, 한빛미디어 박태웅 이사회 의장, 다이나믹앤라이브 홍영훈 대표, 하다 권정혁 대표)로 긴급 회의를 개최하고 공적마스크 데이터 개방 및 활용 지원 시 고려사항을 논의하였다(3월5일 오전10시) 이 회의에서는 공적마스크가 매우 민감한 대국민 관심사이고 문제 발생 시 파급력을 감안하여 네 가지 주요 추진 사항을 결정 하였다.

① 개방 데이터는 판매 데이터 집계 및 전송 주기를 고려하여 오해를 줄 수 있는 마스크 재고 수량보다는 마스크 재고 수량의 범위를 구간화 하여 제공, ② 서비스 초기 어떤 변수가 발생할지 모름에 따라 시작은 베타서비스로 공지, ③ 서비스 준비 시간이 촉박하고 시급함을 고려하여 개발 및 관리가 수월한 웹 또는 모바일웹 기반 서비스 개발을 권고, ④ 메타데이터와 테스트용 샘플 데이터를 사전에 제공하여 우선 개발 준비를 할 수 있도록 지원

당일 오후, BH 디지털혁신비서관실은 관련하여 공적마스크 데이터 개방 및 맵 서비스를 위한 정부, 기업, 민간 회의를 긴급 개최하였다(3월5일 오후 2시). NIA는 시빅해커, 서비스기업, 클라우드 기업 등에 연락하여 회의를 참석하였다. 이날 정부, 약사회, 시빅해커, 개발자, 클라우드 기업 모두가 협업하여 현 상황을 해결하기로 의기투합하였다.

1.3 민간 클라우드 무상 제공 발표

NIA는 국내 클라우드 기업협의체인 ‘파스-타(PaaS-TA) 얼라이언스'와 협력하여 코로나19 웹·앱 서비스의 개발과 운영을 지원하는 파스-타 기반 클라우드 플랫폼과 네트워크 접속 폭주에도 탄력적으로 대응 가능한 클라우드 인프라를 무상지원 하겠다고 발표(3월6일)하였다. 이는 코로나19 확산으로 학생이나 일반인이 직접 개발·제공한 코로나19서비스들이 국민들의 큰 호응을 얻었지만 접속 폭주로 사이트 마비, 과다한 운영비용 발생 등의 문제가 발생하였다. 또한, 마스크 혼란을 줄이기 위한 공적마스크 판매정보와 시시각각 변화하는 확진자 수, 동선 등의 코로나19 정보를 국민들에게 장애 없이 제공하기 위해서는 클라우드 필요성이 급증하게 되었다.

이에 파스-타 얼라이언스는 긴급한 클라우드 수요에 대해 무상으로 클라우드 서비스를 전폭적으로 지원하여 코로나19 극복에 기여하겠다고 발표하였다. 이렇게 제공된 공적마스크 API 클라우드(NBP)는 서비스 오픈 후, 3주간(11일~31일) 총 5.7억회(571,013,946회)의 호출을 기록하며 전 국민의 폭발적 관심을 완벽하게 소화하였다. (최대 시간당 964만 회 호출(3.14, 09시~10시)되었고, 평균 응답속도는 0.05초) 이와 같이 공적마스크 API를 클라우드로 무상 제공하여 전국민의 호출에도 웹·앱 서비스가 원활하게 동작하도록 지원하였고 개발자용 클라우드 제공으로 시민개발자들이 비용 부담 없이 자율적으로 참여할 수 있도록 유도하고 장애 없는 서비스를 제공 할 수 있었다.

1.4 실시간 상황 공유 및 논의를 위한 온라인 소통 채널 운영

긴급하게 추진해야 하는 사안임에 따라 NIA는 이해관계자들과 실시간으로 의견을 소통하기 위하여 개발자, 전문가자문반, 약사회 등과의 톡방을 개설하고 현황과 자료, 의견 등을 공유하였다.

1.4.1 공적마스크 데이터 개방을 위한 개발자 톡방 개설

실시간으로 공적마스크 데이터의 개방 사항을 공지하고 활용을 지원하기 위하여 NIA와 개발자들간의 소통을 위한 SNS 톡방(톡방 명칭 : 마스크 데이터 오픈방)을 개설 하였다(3월6일). 우선 3월 5일 회의에 참석한 참석자들을 대상으로 하였다. 톡방을 통해 앱/웹 개발자들이 공적마스크 데이터 개방 시기에 맞추어 웹‧앱 서비스를 사전 준비 할 수 있도록 데이터 개방 항목을 사전 공지 하여 관련 의견을 청취하고 오픈 API 명세를 작성‧전달하였다. 특히 공적마스크 서비스 개발시 주의 사항(베타서비스 기간임을 명시, 5분이상 지연된 정보임을 명시 등)과 공적마스크 제도 안내, 약사 등 판매자분들께 감사인사 전하기 등을 함께 안내하였고 개발자들은 이를 충실하게 준수하였다. 이후 변경사항 등을 3차례의 안내문으로 공지하였으며 약국 주소 및 위치 정보 오류, 마스크 판매 현황 데이터 이상 등을 논의하고 정정하였다. 개발자 톡방은 당초 10여명이 참가 하였으나 이후 개발자들이 공적마스크 맵 서비스를 준비하는 주변의 다른 개발자들을 초대하며 최종 28명이 참여하여 정보를 실시간으로 공유하고 현안을 논의 하였다.

이 톡방에서 나눈 주요 대화는 공적마스크 개발 대화방에서 확인할 수 있다.

1.4.2 코로나19 공공데이터 공동대응 텔레그램에 씨빅해커들 모이기 시작

1.4.3 전문가 자문을 위한 대화방 개설

공적마스크 데이터 개방 및 서비스 개발은 매우 빠르게 진행되어야 함에 따라 시행착오를 없애기 위하여 NIA는 3월 4일 전문가 회의에 참여한 전문가들로 대화방을 개설 하였다(3월6일). 전문가 대화방을 통해 개방 데이터 항목, 오픈API 스웨거 명세, 오픈API 운영을 위한 클라우드 구조 등에 대한 준비 상황과 진행 상황을 공유하고 검토와 자문을 받았다.

1.4.4 BH, 기재부, 식약처, 심평원, 약사회가 참여하는 톡방에 NIA 참여 시작

처음으로 시행되는 공적마스크 5부제 제도의 운영을 위해 BH, 기재부, 식약처, 심평원, 약사회는 중복구매 확인 방법, 대리구매 절차 등 다양한 현장 상황과 애로사항 등을 공유하기 위해 톡방을 운영하고 있었다. 그러던 중 마스크 맵 서비스를 준비 중인 일부 테스트 사이트가 일반인들에게 개방되면서 잘못된 정보로 인해 일선 약국으로 마스크 판매 문의 등 관련 민원이 계속 발생하였다. 이에 약사회는 테스트 중인 맵 서비스로 인한 현장의 불만을 심평원에 전달하게 되었고 이에 NIA도 3월 8일부터 공적마스크 판매 관계자 톡방에 참여하게 되었다. NIA는 톡방에서 관련 상황을 설명하고 양해를 구함과 동시에 즉시 해당 사이트 개발자들에게 연락하여 해당 서비스를 내리도록 하였다. 이후 판매현장의 의견을 청취하고 개발자들에게 전달하며 판매처와 공적마스크 맵 서비스 개발자간의 연결자 역할을 수행하였다.

1.5 개발자, 이용자의 편의성을 고려한 공적마스크 API 개발

NIA는 건강보험심사평가원에서 제공하는 기본적인 공적마스크 판매정보에 대한 데이터를 제공받아 민간 개발자 요구사항 등을 수렴하여 공동으로 서비스 개발의 편의성 측면과 대국민이 공적마스크 판매정보를 쉽고 편리하게 이용할 수 있도록 공적마스크 데이터를 오픈API로 재가공하여 제공하였다. 우선 심평원은 5분단위로 공적마스크 재고 데이터를 개방서버로 제공하였다. 그러나 NIA는 개방서버에 데이터의 도착 시점을 예측할 수 없어 1분단위로 개방서버의 갱신된 데이터를 확인하였다.

1.5.1 < 심평원에서 NIA로 제공하는 데이터 항목 >

심평원으로부터 NIA가 받는 데이터는 다음과 같다.

  • 판매기관코드(약국 : 요양기호, 우체국/농협하나로마트 : 사업자등록번호)
  • 판매기관명(약국, 우체국 등 판매처명)
  • 판매기관주소(약국, 우체국 등 판매처 주소)
  • 기관유형코드(약국:01, 우체국:02, 농협:03)
  • 입고일시
  • 입고수량(판매처에서 판매를 위해 등록하는 시점의 입고수량, 1일 1회)
  • 판매수량(판매처에서 실시간 판매하는 수량으로 5분 단위 취합 제공)
  • 데이터생성일시(5분 단위로 데이터 생성되는 시간)

※ 판매기관명, 판매기관 주소는 별도의 마스터 파일(엑셀)로 제공

NIA는 심평원으로부터 받은 입고수량과 판매수량 데이터를 활용하여 재고수량을 도출하고 재고수량에 따른 상태 값(잔고 수량 재고)을 설정하였다. 이후 재고수량 여부에 무관하게 잔고 수량 구간을 ’판매중지‘ 상태가 설정된 경우에는 ’판매중지‘ 상태로 설정하였다. 엑셀로 작성된 판매처 정보는 Geocoding(도로명 주소에 대한 좌표변환)을 수행하고 좌표 값으로 저장하였다.

공적마스크 API는 개발자 친화적인 JSON(JavaScript Object Notation) 형식으로 데이터를 제공하고 4가지* 세부 API를 제공하였다. API 명세는 즉시 코딩하여 사용할 수 있도록 스웨거(Swagger) 기반으로 명세를 작성하여 공유 하였다.

  • 판매기관 정보 조회: 판매기관코드, 판매기관명, 판매기관유형코드, 판매기관주소
  • 판매 정보 조회: 판매기관 식별자, 재고상태, 측정시간
  • 좌표기반 판매기관별 마스크 재고 수량 조회: 중심좌표와 반경(최대 5km) 범위에 속한 판매기관과 판매정보
  • 행정구역 기반 판매기관별 마스크 재고 수량 조회: 행정구역(시도/군구/동읍면) 단위의 판매기관과 판매 정보

1.5.2 <NIA가 공공데이터포털을 통해 최종 제공하는 공적마스크API 데이터>

  • 판매기관코드(약국 : 요양기호, 우체국/농협하나로마트 : 사업자등록번호)
  • 판매기관명(약국, 우체국 등 판매처명)
  • 판매기관주소(약국, 우체국 등 판매처 주소)
  • 기관유형코드(약국:01, 우체국:02, 농협:03)
  • 판매기관위경도(WGS84 표준적용, m: 반경(미터), 최대값은 5,000(5km) ※ 주소데이터를 바탕으로 위경도 좌표 생성 제공
  • 입고일시
  • 잔고수량구간(100개 이상 : 녹색, 100개 미만(30개~99개) : 노랑색, 30개 미만(2개~29개) : 빨강색, 기타(0개~1개) : 회색, 입고일시가 전날이고 재고 등이 남아 있는 경우 기타로 처리함)
  • 판매중지 : * 회색(추가 반영함)
  • 데이터생성일시(심평원 시스템의 5분 단위로 데이터 생성되는 시간)

1.5.3 공동대응이 개발 가이드 정리

1.5.4 공동대응과 NIA가 개발된 앱 목록 정리

1.6 베타서비스 준비 중 일부 개발자 테스트 사이트 오픈으로 혼란 발생

맵 서비스 개발자들과의 테스트 기간 중 일부 민간 서비스 사이트의 先 오픈으로 인한 혼란이 발생하였다. 공적마스크 5부제 판매 시점(당초 3.9일)에 맞추어 재고 알림서비스도 개시될 수 있도록 심평원-NIA-서비스 개발자 간 긴밀한 사전 준비를 추진하였고, 이러한 과정 중 NIA는 테스트 데이터를 마련하고 마스크 맵 서비스를 준비하는 개발자들과 사전 테스트를 추진(3.7)하였다. 테스트 과정에서 일부 서비스 준비 중인 사이트가 공개 되었고, 공개된 사이트를 본 시민들은 테스트 사이트임을 알지 못한 상태에서 공적마스크 재고 정보가 표출된 약국에 문의전화를 걸어 혼란이 발생하여 약사회로 항의하기에 이르렀다. NIA는 해당 사이트의 서비스를 즉각 닫도록 조치하고, 약사회에는 관련 사항에 대해 설명하고 양해를 부탁하였다. 그러나 잘못된 데이터와 서비스는 일선 판매 약사들에게는 민원이 되어 돌아올 수 있다는 거부감과 맵 서비스로 인한 판매정보의 공개로 약사들의 마스크 판매 시간 조절이나 판매 방식의 재량이 제약되는 등의 사유로 약사들이 크게 반발하였고, NIA 공공데이터본부와 개발자 사이트로 약사들의 마스크 판매 현황 데이터의 개방을 거부하는 전화 및 메일 항의가 폭주하였다.

1.7 공적마스크 데이터 개방 및 맵 서비스를 공식화하기 위하여 관계부처 합동 브리핑을 실시

정부는 맵 서비스를 공식화하고 약사들의 거부감을 줄이기 위하여 과기부, 행안부, 복지부, 벤처기업부, NIA, 심평원 합동으로 공적
마스크 판매 데이터 제공 등에 대한 언론 브리핑을 실시하였다(3월10일). 이 브리핑에서는 기존의 정부 주도 개발과는 크게 다르게 정부는 민간이 필요로 하는 데이터를 공개하고, 민간은 이 데이터를 활용하여 국민 수요를 반영한 서비스를 개발하는 민관협력 모델로 진행함을 발표하였다.

1.8 서비스 오픈과 함께 국민들의 관심 폭발로 장애 발생 및 즉시 대응

공적마스크 현황 데이터 개방 이후 첫 베타 서비스 당일 서비스 이용이 폭주하였다. 앱·웹서비스 개발에 편리하도록 API를 인증없이 제공(AJAX방식)함으로 인해 3월 11일 08시 베타서비스 오픈 후 API 호출 수가 기하급수적으로 증가(10분당 10배씩)하여 앱·웹서비스 업체의 API 호출이 느려지는 현상이 발생하였다(09시 40분경). 이후, 심평원 데이터 수집을 위한 캐쉬서버 증설 및 클라우드의 API서버를 Serverless방식과 Auto-Scaling* 방식으로 병행 제공(10시경) 하고, 동일 IP로 URL 호출주소(v1/v2)만 선택·변경하여 간편하게 API를 호출할 수 있도록 하였다. * 네이버 클라우드(NBP) 플랫폼의 Serverless환경과 Auto-Scaling환경을 미리 병행 구성하여, 트래픽 폭주에 따라 대응할 수 있도록 사전 조치 해 놓음

1.9 약사 등 판매처 요구를 반영한 ‘판매중지’ 상태 추가

공적마스크 5부제 정책 시행 첫 주, 약국 현장에서는 제도에 따른 실시간 중복구매 확인 절차와 중복구매방지시스템 사용이 익숙하지 않아 실제 판매하고 남은 마스크 수량과 중복구매방지시스템상으로 처리한 판매 데이터 수량의 차이가 일부 발생하게 되었다. 또한 번호표 배부방식으로 판매를 하는 약국의 경우 실제 번호표는 배부가 모두 끝나 판매가 완료되었으나 아직 시스템 상에는 재고가 남아 있다 보니 맵 서비스로 검색을 하여 재고가 있다고 판단을 하고 약국을 방문한 구매 희망자들의 불만과 항의로 불필요한 갈등을 초래하게 되었다.

이에 대한약사회에서는 약국 현장의 실제 마스크 데이터 현황과 시스템상의 데이터가 다른 경우 또는 약국에서 판매 시간을 조절하고 싶은 경우 등에는 마스크 판매데이터가 개방 및 표출되지 않기를 희망하였다. 이러한 요구와 관련하여 3월 12일 BH 디지털혁신비서관실, 심평원, NIA, 대한약사회는 회의를 긴급 소집하고 약사들의 어려움을 덜어주기 위하여 공적마스크 중복구매확인시스템에 ‘판매중지’ 기능을 추가하기로 했다. 이를 위해 잔고수량구간에도 ‘판매중지’ 상태 항목을 추가하여 ‘판매중지’ 상태인 경우 맵 서비스에는 매진/품절과 동일하게 회색으로 표시하고 국민들의 알권리를 위하여 꼭 필요한 경우에만 ‘판매중지’ 기능을 사용하도록 대한약사회를 통해 일선 약사들에게 안내를 당부하였다.

심평원은 바로 ‘판매중지’ 기능 구현에 착수하였고, 대한약사회는 약사들에게 관련 사항을 안내하였으며, NIA는 개발자 톡방을 통해 ‘판매중지’ 상태의 추가와 그 의미, 앱‧웹 상에서의 표출 방법을 안내하는 2차 안내문을 발송하였다. 이후 다음날인 3월 13일부터 약국에서 ‘판매중지’ 기능을 사용하기 시작하였다. 그런데 일반 시민들은 ‘판매중지’ 상태의 의미를 정확히 몰라서 공적마스크 판매 약국이 판매를 취소한 것으로 판단하는 등 일부 혼선이 있었고 약국에서는 ‘판매중지’ 버튼을 계속 눌러 놓고 ‘판매시작’으로 전환을 하지 않아 ‘판매중지’ 약국이 계속 증가하는 문제가 발생 하였다. 이에 개별 맵 서비스들과 언론 등을 통해 ‘판매중지’ 상태의 의미를 알리고, ‘판매중지’ 약국의 재고가 ‘0’이 되는 경우는 자동으로 ‘매진’ 또는 ‘품절’로 표시 되도록 하였다.

1.10 공적마스크 서비스 앱 스토어 등록 및 보안 지원

공적마스크 맵 서비스를 구현 및 운영하는 중 애플과 구글 플레이스토어에서는 ’자연재해나 재난, 피해자에게 도움이 되지 않는 비극적인 사건에서 이익을 얻는 앱을 규제한다‘는 규정에 따라 코로나19 관련 앱을 삭제 및 차단하여 서비스 제공이 중단되고 신속한 서비스 제공에 어려움이 발생하게 되었다. 이러한 문제점을 해결하기 위해 과학기술정보통신부와 NIA는 앱 마켓과 협력하여 NIA에서 추천하는 공적마스크 맵 앱은 등록을 지원해주는 것으로 협의를 하였다(3월21일). 이후 일 평균 9건 이상의 전화, 13건 이상의 이메일을 통한 앱 등록 문의 등 관련 지원 요청에 대한 24시간 대응하여 4월말 기준 총 57건(플레이스토어 33건, 원스토어 24건)의 앱 등록을 지원하였다. 이를 통해 국민들을 위한 마스크 재고 정보제공 앱의 신속한 등록 및 삭제 방지를 위하여 앱 마켓과 협력을 통해 적시에 국민들에게 서비스를 제공할 수 있게 되었다.

다양하고 많은 공적마스크 맵 서비스가 개발됨에 따라 국민들에게 신뢰할 수 있는 마스크 웹·앱 서비스 목록을 제공하기 위해 신속하게 서비스 목록 페이지(mask.paas-ta.org)를 개설·제공 및 홍보를 지원하였다(3월9일). 4월말 기준 총 95개(웹 59개, 앱 36개, 4.22)의 서비스 목록을 제공하였다. 또한, 안전하고 믿을 수 있는 공적마스크 서비스의 제공을 위하여 한국인터넷진흥원(KISA)과 보안을 위한 24시간 협력체계를 구축하여 제공하고 있는 전체 마스크 웹·앱 서비스 목록에 대하여 위변조 여부, 악성코드 삽입 여부, 웹사이트 접속 상태, DDos 등 4개 항목에 대한 실시간 모니터링 및 전수검사를 진행하였다. 이처럼 신속하게 서비스 목록 페이지 개설·제공 및 보안 전문기관과 밀접한 공조체계 구축으로 국민들에게 안전하고 신뢰성 높은 공적마스크 정보제공 웹·앱 서비스를 제공할 수 있었다.

1.11 체계적인 민원 대응을 헬프데스크 역할 정립

3월 11일 데이터 개방과 알림 베타서비스 개시 이후에도 약사회 현장의 의견 반영, 우체국․하나로마트 판매 데이터 개방, 판매처 주소 오류 수정 등 지속적으로 개선해 나가고 있다. 특히 공적마스크 맵 서비스는 심평원, NIA, 서비스 개발자 등 다양한 관계자가 참여함에 따라 약국 등 판매처와 맵 서비스 이용자들의 문의를 체계적이고 효율적으로 대응하기 위한 각 참여자간의 역할 분담이 필요하였다.

이에 NIA는 민원 대응을 위한 방안(메뉴얼)을 만들어 심평원에 공유 및 협조 요청을 하였다. 또한 각 참여기관별 역할에 따라 약국 및 국민의 민원사항에 공동으로 대응하고, 답변이 어려운 부분은 별도 정리하여 상호 공유 하였다. 이와 같은 민원 대응 헬프데스크의 체계화와 서비스의 안정화를 통해 서비스 첫날 전화 100여건, 이메일 480여건의 민원은 일주일 후 전화 40여건, 메일 10여건으로 대폭 감소 하였고 4월말 현재는 민원이 거의 발생하고 있지 않게 되었다.

1.12 휴일 첫 공적마스크 맵 서비스

3월 15일은 휴일을 맞아 첫 공적마스크 맵 서비스를 제공하는 날이었다. 당초 휴일 영업을 하는 약국은 지역마다 매주 달라지고 이를 “휴일지킴이 약국”으로 대한약사회 홈페이지에서 매주 게시를 하였다. 그러나 이는 일반인들이 일일이 알고 찾아보기 어려웠는데 공적마스크 맵 서비스 덕분에 일반인들은 더욱 편하게 공적마스크 판매 양국 중 해당 주 휴일에 영업을 하는 약국을 찾아 볼 수 있었다. 휴일의 공적마스크 서비스가 그 효과를 발휘하기 시작 하였다.

1.13 약국 등 판매처 주소 정비

공적마스크 판매 현황을 지도 기반으로 서비스하기 위해서는 판매처의 주소가 정확해야 한다. 공적마스크를 판매하는 약국, 농협하나로마트, 우체국의 주소 정보는 건강보험심사평가원에서 엑셀 파일 형태로 NIA로 제공하였다. 그런데 특히 약국의 경우는 당초 판매처로 등록하였다가 제외요청을 하는 경우가 발생하고 휴폐업, 약국 이전 등으로 인해 판매처 주소 정보가 변동되는 경우가 발생하였다. 이에 따라, 앱/모바일웹으로 각 약국 등 공적마스크 판매처 정보를 지도상에서 서비스하는 과정에서 공적마스크를 판매하는 판매처 유무와 원천 주소정보가 잘못 제공됨에 따른 판매처의 위치정보 오류가 발생하였다.

먼저 NIA는 판매처 유무의 문제를 해결하기 위해서 판매처 정보를 일일 단위로 건강보험심사평가원으로부터 제공받아 공적마스크 정보 API에 자동으로 적용하는 툴을 개발하여 조치하였다. 판매처로 등록하였으나 주소정보 자체가 잘못 제공되어 위치정보 오류가 발생하는 것으로 파악되었고 주로 휴폐업, 주소이전 등이 빈번한 약국에서 발생하였다.

위치정보 오류 발생 원인으로는 첫째, 판매처인 약국의 주소정보 자체의 오류로 위치정보가 일치하지 않아 약국 위치가 지도상에 잘못 표현되고 둘째, 동일 도로명 주소를 사용하는 건물내 약국이 2개 이상 위치하는 경우 지도상에서 약국의 위치가 중복표현 되는 경우가 발생하였다. 도로명 주소를 바탕으로 인터넷 지도상에 위치를 표시하기 위해서는 위·경도 좌표정보로 바꾸어서 제공하는데 정확한 도로명 상세주소가 없거나 동일 건물의 2개 이상 약국은 주소 기반의 위·경도 좌표변환 툴의 한계로 동일 좌표로 판매처가 중복 표출되는 경우 인터넷 지도상에서 판매처의 정확한 위치를 확인할 수 없는 경우가 발생하였다.

이를 해결하기 위해 첫째, 약국의 주소정보 등록은 관할 지자체의 보건소에 약국에서 직접 등록함에 따라 등록 시 주소 오류 또는 이전 시 기존 주소로 남아있는 경우로 파악이 되어 대한약사회를 통해 약국에 정확한 주소정보를 수정 등록하도록 전달하여 조치토록 하였다. 둘째, 약 2,000여개 약국의 위치정보의 중복표출 해결을 위해 네이버에 협조를 요청해 네이버 지도에서 제공하는 약국정보의 상세 위경도 좌표를 제공받아 중복표출 문제를 해결하였다. 마지막으로 NIA 공적마스크 API 담당자가 수기로 좌표 및 판매처의 기본정보를 수정할 수 있도록 기능을 구현하고 필요시 담당자가 개별건으로 확인하여 좌표를 수정 할 수 있도록 하였다.

2 공적마스크 개발 성과와 교훈, 시사점

2.1 추진 성과

2.1.1 정성적 성과

민-관 협력의 대표 사례로 150개 이상의 웹과 앱 서비스를 출시하였고, 많은 언론에서도 관련 사항을 의미 있게 보도하였다. 또한 한국, 일본, 홍콩, 대만의 아시아 시빅해커들 20여명은 지난 3월 27일 유튜브를 통하여 공중 건강(Public health), 특히 코로나19 관련 각국의 씨빅해킹 사례를 공유하였다. 한국은 일반인, 학생 등의 시빅해커로 구성된 코로나19 공공데이터공동대응팀(리더 권오현)이 정부가 개방한 공적마스크 API를 활용하여 다양한 앱 및 모바일 웹서비스(웨어마스크, 마스크사자 등)를 개발한 사례를 소개하였다. 이 회의에서 대만의 시빅해커는 한국의 공적마스크 API를 직접 사용해 봤음을 밝히고 대만은 CSV 형태로 개방한 것에 반해 한국은 API형태로 데이터를 제공하여 훨씬 더 빠르고 쉬운 개발 환경을 제공 한 것을 인상적으로 꼽았다.

2.1.2 정량적 성과

마스크 데이터의 개방으로 3월 11일 부터 3월 29일 까지 총 6.7억회의 마스크 API 호출*을 기록하며, 정부의 투명성과 마스크 구매자의 이용자 편의성이 증대하였다(시간당 최대 964만회 호출(3.14(토) 9시~10시), 평균 응답속도는 0.05초로 안정적). 또한, 약국의 마스크 매진율이 증가하였고, 상대적으로 잘 알려지지 않은 약국도 알림서비스로 인해 소비자가 방문하는 상황이 증가하였다(마스크 완판 약국 비율 25.2%p 증가(개방전 68%→ 개방후 1일차(수) 88%, 2일차(목) 93.5%, 3일차(금) 91.7%, 4일차(토) 91.3%, 5일차(일) 92.5%)). 현장 에서도 줄서기와 전화 문의도 많이 줄어들고, 마스크 판매 시간도 분산되는 등 안정화 추세를 보인 것으로 나타났다.

데이터 개방 관련 민원도 크게 감소*(NIA 공공데이터포털 헬프데스크 기준) 하였다. * (3.11) 480건(정보표출 제외 요청)→(3.13) 50건→ (3주차)하루 10건 내외(주소정정‧기능개선 위주) → (4월말 현재)하루 1건 이내

2.2 교훈 및 성공요인

  • 원칙 1 : 정부·공공기관이 모든 것을 단독으로 해결하지 않는다.
  • 원칙 2 : 원활한 서비스를 위해 발생 가능한 이슈·문제를 사전 검토한다.
  • 원칙 3 : 이슈·문제 발생 즉시, 모든 이해관계자에게 공유하고 해결한다.

2.2.1 < 이해관계자 별 다양한 요구 관리 및 장애 발생 극복․끊임없는 노력 >

2.2.1.1 (약사) 공적마스크 재고 현황 데이터 개방에 대한 반감

5부제 판매 제도에 대한 약국 현장의 이해 부족으로 다수 약국의 판매 데이터가 실제와 상이*하여 데이터 개방에 반감 있는 약국이 존재하였다. 이러한 문제를 완화할 수 있도록 현장과 시스템상의 재고 수량 차이, 판매 준비 중 등인 약국을 위해 ‘판매 중지’ 버튼을 추가하여 이용자들의 전화 문의와 방문을 감소시켰다.

  • 판매 정보 입력 지연, 성인용 중심으로 수량을 입력해야 하나 아동용도 입력하여 재고 존재, 번호표 배부 방식으로 실제 재고와 시스템 데이터의 상이
2.2.1.2 (약사/개발자) 재고데이터의 부정확시 국민 불편 초래 및 약사의 민원 대응 증가

재고 현황 데이터는 한정된 수량으로 1시간 내외 판매 및 심평원 시스템으로부터 5분 단위로 업데이트되어 실제 재고 수치와 차이가 발생하였다. 당초 약국별 입고량, 판매량, 재고량 형태의 수치로 보여주려 했으나, 빠르게 판매되는 경우 업데이트 주기 내에서도 마스크 수량 변화가 크고 다수 민원이 발생할 수 있어, 수치가 아닌 재고 현황의 구간 정보를 제공하는 것으로 변경하였다.

2.2.1.3 (약사/개발자) 일부 판매처 위치 정보 등의 상이로 이용자 문의 및 불편 초래

약국 정보는 심평원으로부터 일 단위의 파일(엑셀)로 받아 DB적재 및 NIA에서 주소를 위경도 좌표로 변환 후 판매정보와 매핑하여 API를 제공하였고, 심평원 제공 약국 주소가 업데이트되어 있지 않은 경우, 지도상의 판매처 정보 오류가 발생(좌표변환 불가 또는 지도상 잘못된 위치 표출)하였다.

이에 NIA는 네이버와 협력하여 오류가 있는 판매처 고유번호(요양기호 또는 사업자등록번호 등)를 기준으로, 네이버에서 기 확보된 정확한 좌표정보를 제공하여 주소의 좌표 오류정보를 개선*함에 따라, 주소오류 관련 민원을 대폭 해소하였다.* 주소오류 160여개, 동일주소의 좌표 중복 2,000여개 개선

2.2.1.4 (개발자) 공적마스크 맵 서비스는 공익적 목적임에 따라 서비스를 개발한 개인 등이 이의 운영 비용을 부담하기에는 어려움 존재

코로나19 맵 등 개인 개발자가 공익적 목적으로 앱/웹 서비스를 개발·운영한 후 이용자 증가에 따른 서버 운영 비용을 개인이 부담하는 데에는 한계가 있어, 초기부터 공적마스크 맵 서비스를 위한 운영 부담 해소 방안이 필요하였다. 이에 따라 NIA가 그동안 클라우드 확산을 위해 협력해온 파스-타 얼라이언스 기업들과 코로나19 관련 공익적 목적의 앱/웹 서비스 운영을 위한 무상 클라우드 이용을 제공하여 원활한 서비스 운영을 지원하였다.

2.2.1.5 (개발자) 공적마스크 맵 서비스를 앱으로 구현하는 경우는 앱 스토어 등록에 일정 기간이 소요되어 공적마스크 판매에 맞춘 앱 서비스 개시에 어려움 내포

공적마스크 맵 서비스를 앱으로 구현한 경우 구글스토어, 애플스토어 등에 등록 신청시 일정 기간 검토 및 승인 기간이 필요하여 이를 단축해 줄 것을 개발자들이 요청하였다. 이후 구글, 애플에서 코로나19의 전세계 확산에 따른 가짜 뉴스, 상업적 악용 우려로 코로나19 관련 앱은 모두 앱스토어에서 삭제하는 사태가 발생하여, NIA는 구글스토어에 협조 요청 채널을 마련하고 공적마스크 관련 앱의 등록을 지원하였다.

2.2.1.6 (개발자) 서비스 테스트 단계에서 지도기반 검색 시 속도 저하 문제 식별

API 데이터 중, 약국 주소정보를 초기에 위경도 좌표로만 제공하였으나, 지도 서비스 기반의 약국 및 판매정보를 표출시 총 2만 5천여 개의 방대한 판매처 데이터로 인해 성능 저하가 발생하여 검색 속도가 느려지는 문제가 발생하였다. 그리하여 주소정보를 위경도 좌표 변환시, 반경을 미터(m) 단위로 최대 5Km로 좌표 정보를 제공하여 국민이 판매처 정보를 보다 빠르게 검색할 수 있도록 해결하였다.

2.2.1.7 (개발자) 서비스 초기 마스크API 스펙의 변동성을 불특정 다수 개발자들에게 효율적으로 알리고 적용시키기 위한 방법이 중요

마스크 API를 통한 제공 항목 등을 정의하였어도 서비스 운영과 함께 조금씩 변동 사항이 발생함에 따라 변경사항을 다수의 서비스 개발자들에게 전달하고 적용시키기 위한 효율적 방법이 필요하였다.

이에 NIA 3차례의 마스크 데이터 개방 및 활용 안내문을 작성하여 개발자 네트워크 및 공공데이터 포털을 통해 공지(3월10일, 3월12일, 3월13일)하였고, 그뿐만 아니라 개발자가 앱·웹서비스 개발이 용이하도록 API 기술문서를 swagger(오픈API 명세를 정의하고 관리하기 위한 오픈소스 기반 도구) 형태로 제공하여 변경사항을 즉시 쉽게 적용할 수 있도록 하였다.

2.2.1.8 (국민) 다양한 이해관계자가 참여하며, 짧은 기간 내에 우리 국민의 높은 눈높이에 맞는 서비스 구현 및 제공이 관건

정부 주도의 획일적인 개발은 사업 발주 등 행정 기간이 한 달 이상 소요되었고 국민들의 다양한 요구를 만족시키기 어려웠다. 이러한 문제점을 개선하기 위해 시민개발자들의 자발적 참여를 유도하고, 포털 및 기본 병원·약국 앱 서비스 업체의 참여로 다양한 서비스들을 확보 및 제공하였다. 그렇지만 마스크 맵 서비스는 데이터의 정확성과 최신성이 중요하나 데이터는 판매자 입력 방식이라 판매자의 판매 처리 방법의 숙지까지 기간이 필요하였으므로, 서비스 오픈 초기를 베타서비스 기간으로 정하여 운영과 함께 안정화 기간을 확보하였다.

2.2.1.9 (전체) 서비스 오픈 초기 판매처(약국), 개발자, 국민들의 문의 및 민원 폭발

공적마스크 맵 서비스는 약국, 개발자, 국민이 모두 관계되어 있어 다양한 문의 및 민원이 발생하였고, 문의 대응을 위한 심평원, 대한약사회, NIA 역할 구분 및 헬프데스크 구성의 필요성이 강조되었다. 이에 따라 약국의 마스크 중복구매 방지를 위한 시스템 관련 문의는 심평원으로, 약국의 공적마스크 판매 정책 관련 문의는 대한약사회로, 그 외 공적마스크 재고 현황 맵 서비스 관련 문의 및 오류 신고 등은 NIA 공공데이터포털 헬프데스크와 전용 이메일(maskdata@nia.or.kr)로 채널을 명확화 하여 문의를 분산하여 대응하였다.

2.3 시사점

2.3.1 < 국가적 위기 극복을 위해 합심하는 높은 시민 의식과 기업문화 >

공적마스크 맵 서비스에는 중학생부터 일반 직장인까지 개발에 참여하였다. 우리는 이들을 시빅해커라 칭한다. 시빅해커란 개발자와 디자이너 등이 시민 자격으로서 공공의 문제를 직접 풀어나가는 사람들이며 시빅해킹은 시민들이 새로운 도구와 접근 방법을 활용하여 신속하고 창의적으로 도시 또는 정부시스템을 개선시켜 나가는 세계적인 사회 운동을 말한다. 특히 열린 정부 차원에서 공공데이터 등을 활용한 사회문제 해결에 활발히 참여하고 있다

우리나라는 코드나무, 코드포서울 등의 시빅해킹 커뮤니티들이 존재했었고 특히, 이번 공적마스크 대응을 통해 형성된 커뮤니티로 코드포코리아가 탄생하고 시빅해킹 개발자 커뮤니티로 발전하고 있다. 정부와 민간 그리고 다양한 이해당사자의 의사결정과 협의를 톡방에서 진행했다면 코드포코리아 커뮤니티는 슬랙이라는 도구를 통해 각자의 개발 과정과 데이터를 협의하고 조언하고 협력하였다. 톡방에서의 의사결정을 빠른 시간에 슬랙으로 전달하여 개발자들에게 정보의 혼선을 줄이도록 한것 또한 이번 공적마스크 대응에서 민관협력의 좋은 성과라 볼 수 있다. 시민개발자들의 동참으로 공적마스크가 어디에 얼마나 많이 남아 있는지 알 길이 없었던 시민들은 공적마스크 맵 서비스를 이용해 마스크를 찾아다니는 불편함을 없애고 공적마스크 정책 안정화에도 크게 기여했다. 놀라운 것은 데이터 개방 결정에서 서비스까지는 채 일주일도 걸리지 않았다는 것이다. 또한 일반인들이 서비스를 개발하고 운영하는데 필요한 시스템 환경을 클라우드 기업들이 적극 기부하여 비용 부담 없이 참여 할 수 있도록 지원한 것도 모두 높은 시민 의식과 기업 문화이다.

2.4 < 향후 과제 >

공적마스크 데이터 개방을 통해 정부가 재난 상황(자연재난, 사회재난 등)과 관련된 정보를 국민에게 전달하는 데는 한계가 있고 정부와 민간이 협업함으로써 더욱 빠르고 다양하게 정보 서비스를 제공할 수 있음을 확인하였다. 이러한 민-관 협력은 일회적 방식으로는 지속하기는 곤란하며, 재난 발생시 정부와 민간이 함께 대응 및 협력을 상시화 할 수 있는 지속가능한 체계 및 기반, 거점 정립이 필요하다. 정부는 재난시 개방 가능한 데이터를 원천 데이터로 그대로 개방하고 국민들이 이를 자유롭게 활용할 수 있는 지속가능한 체계를 만들어야 한다.

공적마스크 대응에서 보여준 정부와 민간의 협력은 "데이터 기반의 플랫폼 정부"를 설명할 수 있는 좋은 본보기이다. 전세계적으로 팬데믹 현상을 보이고 있는 코로나사태는 공공의료, 원격교육 등 다양한 정책에 대한 정부 역할의 중요성을 말해주고 있다. 이와함께 시민들이 스스로 무엇인가를 할 수 있도록 지원하는 역할도 중요하다. "데이터 기반의 플랫폼 정부"가 그것이다. 민간에서 다양한 시장과 서비스를 만들고 시민 스스로 자신들의 그리고 주위의 문제를 해결할 수 있도록 플랫폼 성격으로써의 정부 역할이 "데이터 기반의 플랫폼 정부"이며 그 핵심에는 공공데이터가 있다.

2.4.1 국가 재난 대비 상시적 민관 협력 모델을 위한 방안 제안

첫번째 태풍, 사람 감염병, 동물 감염병, 지진, 산불 등 기존에 자주 발생했던 국가 재난 상황에서 발표되었던 각종 자료들을 분석하여 데이터화 시킬 수 있는 것들을 취합하고, 이에 대한 meta data와 DB를 구성 후 국가 시스템(data.go.kr)에 구축하고, meta data와 API 정보 등 필요한 기술적 정보를 민간에게 공개한다. 이를 통해 이번 마스크 앱과 같이 국가 재난 상황이 발생하고 나서 관련자들이 모여 협의하고 개발하는 것이 아니라 사전에 관련 서비스/앱이 개발되어 국가 재난의 발생과 동시에 국민들에게 서비스/앱을 사용할 수 있도록 한다.
특히 이번에는 참여하지 못한 네비게이션 업체들의 참여를 독려해서 산사태, 산불, 홍수 등에 교통 흐름을 통제해서 피해를 최소화하도록 한다.

두번째 주요 클라우드 업체들을 국가 재난 데이터 주관 클라우드로 지정하고, 재난 관련 데이터, 앱 서버, 트래픽 자원을 민간이 만든 국가 재난 안내 앱 등에게 무상으로 사용할 수 있도록 한다. 이를 통해 국가 재난 상황에서도 트래픽 폭주없이 원활한 대국민 서비스가 가능하도록 한다.

세번째 주요 포털 업체들을 국가 재난 데이터 주관 포털로 지정하여 국가 재난 상황이 발생 시 이들 포털 사이트나 지도서비스를 통해 국가 재난 관련 정보를 일반 국민들과 앱/서비스 개발자에게 제공한다

2.4.2 국가 재난 데이터의 공공데이터로 공개

국가 재난 상황에서 공개했던 모든 데이터들은 따로 데이터 셋으로 일괄 공개할 필요가 있다. 그래야 같은 재난 상황 발생 시에 필요한 정책연구, 통계분석 등에 활용할 수 있다.
2020년 7월 14일 현재 공적 마스크 관련 배포, 판매에 대한 구체적인 데이터가 공개되어 있지 않다.

3 < 공적마스크 맵 서비스에 함께하신 분들 >

3.1 공적마스크 데이터를 요청하고 관련 정보를 시민개발자분들게 전파하고 공유해 주신 분들

  • 코드포코리아
    • 권오현 (사회적협동조합 빠띠)
    • 오원석 (사단법인 코드)
    • 진태양 (영남이공대학교)
    • 이준수 (광주 고려고등학교)
    • 황은미 (사회적협동조합 빠띠)
  • 공익데이터 공동대응 함께 하신 분들

3.2 오픈API의 개발과 운영을 맡아 주신 분들

  • 프람트테크놀러지
    • 전종훈 대표
    • 김인성 팀장
    • 노건 책임연구원
    • 오충협 선임연구원

3.3 클라우드 및 지도API를 무상 제공하고 약국 주소 정비를 지원해 주신 분들

  • NBP(네이버비지니스플랫폼) 박기은 CTO
  • NHN 김동훈 상무
  • KT 김주성 상무
  • 코스콤 권혁태 상무
  • 카카오 이정은 부장
  • 네이버플레이스 변준영

3.4 공적마스크 데이터의 개방과 활용, 클라우드 제공 등을 지원한 NIA 참여자 분들

  • 한국정보화진흥원 문용식 원장
  • 공공데이터본부 이헌중 본부장
  • 공공데이터기획팀 신신애 팀장
  • 공공데이터개방팀 정종열 팀장
  • 공공데이터활용팀 이동철 팀장
  • 공공데이터기획팀 조성배 수석, 공공데이터기획팀 정윤석 주임
  • 공공데이터개방팀 이정찬 책임, 공공데이터개방팀 박준용 선임
  • 디지털혁신기술단 김은주 단장
  • 개방형플랫폼팀 김형순 팀장
  • 개방형플랫폼팀 방인혜 주임

3.5 공적마스크 맵 서비스 준비부터 운영까지 NIA에 전문적 의견을 주신 자문위원분들

  • 경기도 미래성장정책관 임문영 국장
  • 한빛미디어 이사회 박태웅 의장
  • 다이내믹앤라이브 홍영훈 대표
  • 하다 권정혁 대표

3.6 공적마스크 재고 현황에 대한 원천 데이터를 제공한 심평원 실무진들

  • 정보통신실 이영곤 실장
  • 정보통신실 황영천 부장
  • 정보통신실 이상영 팀장

3.7 공적마스크 데이터 개방 및 맵 서비스 정책 소관 부처 및 단체

  • BH 디지털혁신비서관실
  • 과학기술정보통신부
  • 행정안전부
  • 보건복지부
  • 대한약사회

그 외 다양한 곳에서 공적마스크 맵 서비스를 개발하고 지속적으로 운영하여 주신 수많은 개발자 및 기업분들께 진심으로 감사드립니다.

댓글 (0)