4조(2021)
cdc wiki
프로젝트 개요
기술개발 과제
국문 : 사용자 참여형 킥보드 주차장
영문 : ParKick
과제 팀명
4조
지도교수
김진석 교수님
개발기간
2021년 9월 ~ 2019년 12월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 20159200** 박*규(팀장)
서울시립대학교 컴퓨터과학부 20179200** 김*해
서울시립대학교 컴퓨터과학부 20179200** 양*은
서울시립대학교 컴퓨터과학부 20189200** 허*우
서론
개발 과제의 개요
개발 과제 요약
- 최근 공유 킥보드 이용자가 늘어나면서 길거리에 방치되는 공유 킥보드가 사회적 문제로 대두되고 있다. 거리 곳곳에 방치된 전동 킥보드는 시민의 교통을 방해하고 많은 사람들의 불편을 초래한다. 이에 서울시에서는 올해에 관련 법령을 두 차례 개정하며 문제해결을 위한 노력을 기울이고 있다. 본 프로젝트에서는 이러한 문제를 완화할 수 있는 해결책을 제시하고, 나아가 공유 킥보드 사용자의 편의성 증대를 위해 전동 킥보드 주차장 추천 어플리케이션을 개발하고자 한다. 또한 수집된 데이터를 기반으로 추천된 주차장 정보를 API를 통해 제공하여 많은 서비스가 만들어질 수 있도록 하고자 한다.
개발 과제의 배경
- 도로 위, 보도 중간에 무분별하게 방치된 공유 킥보드는 시민의 교통을 방해합니다. 공유 킥보드 사용자가 늘어남에 따라 이러한 방치 문제가 심각해지고 있으며, 이를 관리해야 할 업체는 제 역할을 하지 못하고 있습니다. 이러한 사회적 문제를 해결하고자 두 차례 관련 법령의 개정이 있었음에도 해당 문제는 오늘날까지 해결되지 않고 있습니다.
- 사용한 공유 킥보드를 방치하는 이유는 다양하겠지만, 우리 팀은 ‘공유 킥보드를 주차할 마땅한 장소를 찾기 어렵다는 점’이 이러한 문제를 일으킨 가장 큰 원인이라고 생각합니다. 자동차의 경우 주차장에 대한 정보를 네비게이션, 지도 등을 통해 쉽게 얻을 수 있습니다. 그러나 공유 킥보드는 관련 정보를 얻을 수 없고, 본인의 편의에 따라서 아무 곳에나 킥보드를 주차하는 경우가 많습니다. 따라서 공유 킥보드 주차장 어플리케이션을 제작하는 것으로 전동 킥보드 사용자의 주차 편의성을 높여줌과 동시에 킥보드 방치 문제를 해결할 수 있을 것으로 생각하고 프로젝트를 시작하게 되었습니다.
- 해당 어플리케이션을 활용하면 공유 킥보드를 어디에 주차할지 쉽게 알 수 있습니다. 이를 통해 공유 킥보드 사용자는 보다 편리하게 공유 킥보드를 주차할 위치를 찾아갈 수 있습니다. 또한 곳곳에 퍼져있는 공유 킥보드가 주차장으로 모임에 따라 전동 킥보드 방치 문제를 해결할 수 있고 더 나아가 이후 서비스 이용이 활발해질 경우 서비스에서 추천한 공유 킥보드 주차장에서 다양한 회사의 공유 킥보드를 대여할 수 있을 것입니다. 추가적으로 주차장 정보를 API 형태로 외부에 공개함으로써 관련 문제를 해결하기 위한 서비스가 등장할 수 있도록 인프라를 구축하고자 합니다.
개발 과제의 목표 및 내용
- 주차장에 대한 정보를 지도 형태로 제공한다.
- 주차장에 대한 추천 정보를 사용자로부터 제보받는다.
- 수집된 데이터를 기반으로 적절한 주차 공간을 새롭게 추천한다.
- 기존 주차장 및 새롭게 추천된 주차장을 비교하여 지도에서 주차장을 추가 혹은 삭제한다.
- 추천 주차장 정보 및 위치를 API 형태로 제공한다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 개인형 이동수단(Personal Mobility)
- 전기 혹은 친환경 연료를 동력으로 사용하는 1~2인 소형 개인이동수단을 일컫는다. 도로교통법상 원동기장치자전거로 분류되며 그 중 시속 25Km 미만, 차체 중량 30Kg 미만인 원동기장치 자전거를 개인형 이동장치로 지칭한다. 사용자가 원하는 목적지까지 경로를 선택하는 것이 자유롭고 이용하는 시간도 개인이 선택할 수 있어 기존 대중교통을 이용하는 것보다 효율적으로 이용할 수 있다. 연료 사용으로 인한 공해 걱정이 없고 소유의 관점이 아닌 대여, 공유 관점의 개인교통수단으로 받아들여지고 있어 미래형 이동수단으로써 주목받고 있다.
- 공유형 전동 킥보드 서비스
- Personal Mobility(PM) 중 하나인 전동 킥보드를 대여하는 서비스로 최근 관련 시장이 성장하고 있다. 제공하는 어플리케이션을 통해 기기에 부착된 QR코드를 인식시켜 대여와 반납이 이루어지고 GPS를 통해 킥보드의 위치와 사용자의 위치를 표시한다.
- React Native
- 대표적인 스마트폰 OS인 Android, IOS 두 플랫폼 모두 호환되는 앱을 제작할 수 있는 오픈 소스 프레임워크이다. 개발에 필요한 비용이 네이티브 앱과 비교하여 낮은 편이고, 사용할 수 있는 패키지 업데이트가 활발한 편이다. 웹 개발 점유율이 높은 React 라이브러리를 사용할 수 있다.
- Rest API
- Representational State Transfer API의 약자로 웹 상의 자원을 별도의 전송 계층 없이 HTTP 프로토콜을 사용해 전송하는 형식이다. HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능하고 서버와 클라이언트를 독립적으로 분리하여 정의할 수 있다.
- Clustering(군집화)
- 클러스터링(군집화)은 개체들이 주어졌을 때, 개체들을 몇 개의 클러스터으로 나누는 과정을 의미한다. 이렇게 개체들을 그룹으로 나누는 과정을 통해서, 클러스터 내부 멤버들 사이는 서로 가깝거나 비슷하게, 서로 다른 두 클러스터 사이의 멤버 간에는 서로 멀거나 비슷하지 않게 하는 것이 클러스터링의 목표이다. 클러스터링에 사용되는 알고리즘은 크게 계층적 군집(Hierarchical clustering)과 Point assignment clustering 두 가지 방법으로 나눌 수 있다.
- 계층적 군집 방법은 다시 큰 하나의 클러스터로부터 시작해서 모든 클러스터가 정확히 하나의 원소를 가질 때까지 계속 쪼개는 divisive(top-down)한 방법과, 각각의 점을 원소로 가지는 클러스터들로부터 전체를 포함하는 클러스터 하나를 만들 때까지 반복적으로 두 개의 “가까운” 클러스터를 합치면서 진행하는 Agglomerative(bottom-up)한 방법으로 나누어진다.
- Point Assignment Clustering은 각 cluster가 어떤 개체를 가지는지 기록하는 방식으로 진행되는 클러스터링 방법이다. 가장 잘 알려진 k-means 알고리즘은 처음에 클러스터의 개수 k를 정하고, 임의로 선택한 k개의 점을 이용해 초기의 클러스터 k개를 만들고, 클러스터를 계속 알맞게 변화시켜나가면서 클러스터링을 완료하는 방법이다.
기술로드맵
특허조사
- 주차장 제공 시스템, 서버 장치, 및 비일시적인 기억 매체(PARKING LOT PROVISION SYSTEM, SERVER DEVICE, AND NON-TRANSITORY STORAGE MEDIUM)
- 출원번호 : 1020210028943 (2021.03.04.) / 출원인 : 도요타 지도샤(주)
- 차량에 내장된 하드웨어 장치를 통해 안전운전도에 관한 정보를 취득하고 서버에 전송, 정보를 바탕으로 계산한 내용을 바탕으로 주차장 제공 서비스를 제공할지 여부를 판정.
- 전동 킥보드 대여 시스템 및 그 방법(Electric kickboard rental system and method)
- 출원번호 : 1020210071506 (2021.06.16.) / 출원인 : 주식회사 에이텍
- 전동 킥보드 대여 시스템 및 그 방법에 관한 것.
- 고위험 주차장 구역을 확인하기 위한 시스템(System for identifying high risk parking lots)
- 출원번호 : 16513874 (2019.07.17.) / 출원인 : State Farm Mutual Automobile Insurance Company
- 가상 네비게이션 지도 안 충돌 및 절도 사고와 같은 위험한 주차장 구역을 표시하는 대신 비교적 안전하다고 판단되는 공공 주차장 구역을 경로화.
특허전략
- 기존의 차량 관련 주차장 시스템이 아닌 공유형 전동 킥보드 서비스에 맞는 새로운 주차존을 제안하고 시스템을 설계
- 하드웨어와 직접적인 연결은 피하고 제공할 수 있는 정보의 수신자를 Third party와 개인 이용자로 분리함으로써 해당 시스템이 이용될 수 있는 용도를 늘림
- 해당 정보를 어플리케이션 내부적으로 계산 하는데 사용하는 것에 그치지 않고 공유함으로써 공공의 목적을 더함
관련 시장에 대한 분석
경쟁제품 조사 비교
1. TMAP 주차 (tmapparking.co.kr)
- - 주차장 통합 운영 서비스이다. 크게 ①간편한 앱결제로 바로 출차 시스템 ②실시간 주차 시간과 예상 요금 안내 시스템 ③T 멤버십에 관한 할인 혜택 ④목적지 주변의 TMAP 주차장 안내 시스템 ⑤ADT캡스가 지켜주는 안전한 주차장 시스템 등으로 5가지 주요기능이 존재한다. 자동차 주차문제로 인한 해결책으로 제시된 어플리케이션이다. 자동차 주차장 앱 중 앱 사용자의 28.5% 인지도를 보인다.
- - ⑤ ADT캡스가 지켜주는 안전한 주차장 시스템 : 보안전문기업 ADT캡스가 주차장 위탁에 최적화된 서비스 제공. 철저한 모니터링, 365일 24시간 무중단 주차운영 및 출동, 통합관제 등의 보안서비스, 전문적인 상시점검 유지보수, 안정적인 무인화 운영 서비스 제공.
2. 모두의 주차장 (moduparking.com)
- - 자동차 주자창 정보를 공유하는 서비스이다. ①주차장 정보 공유 시스템 ②주차요금 할인과 편리한 출차 시스템 ③쉬운 월주차 가능 시스템 ④주차공간 공유와 수익 창출 시스템 ⑤거주자우선 주차장 공유 시스템 ⑥내비게이션 연동으로 주차장까지 길 안내 시스템 등과 같이 6가지 주요기능이 존재한다. 자동차 주차문제로 인한 해결책으로 제시된 어플리케이션이다. 자동차 주차장 앱 중 앱 사용자의 19.6% 인지도를 보인다.
- ① 주차장 정보 공유 시스템 : 목적지만 검색하면 주변 주차장 정보 한번에 비교. 위치, 요금, 운영시간, 사진 등 주차장 상세 정보 제공. 필터 기능으로 공영주차장, 민영주차장, 부설주차장 등 원하는 주차장만 확인 가능.
- ② 주차요금 할인과 편리한 출차 시스템 : 현장요금 대비 최대 80% 할인. 모바일 주차권 사전 결제시 출구 결제없이 바로 출차 가능.
- ③ 쉬운 월주차 가능 시스템 : 원하는 지역의 월주차권 검색하여 주차장 방문없이 앱 결제. 매월 정기 주차권 할인 프로모션 진행.
- ④ 주차공간 공유와 수익 창출 시스템 : 주택, 빌라, 가게 등 개인 소유의 주차공간 공유 가능. 공유 시간, 주차 요금 자유롭게 설정하고 앱으로 관리. 매월 수익금 정산.
- ⑤ 거주자우선 주차장 공유 시스템 : 거주자가 사용하지 않는 시간만 공유 가능.
- ⑥ 내비게이션 연동으로 주차장까지 길 안내 시스템 : Tmap, 카카오내비, 네이버지도, 원내비, 맵피, 아틀란3D 중 원하는 내비게이션 선택 가능.
3. 서울시 전동 킥보드 주정차 위반 신고 시스템 (seoul-pm.com)
- - 불법 추차된 킥보드 신고 시스템이다. 도로나 보행로에 무분별하게 방치된 킥보드로 인한 문제점이 원인이다. 시민의 안전을 위해 서울시에서 전국 최초로 시행하였고, 서울 6개 구에서의 시작으로 차차 다른 자치구로도 확대 계획중이다. 신고된 킥보드는 즉시 또는 3시간 후 견인된다. 킥보드를 제대로 관리하지 않은 업체에는 견인료 4만원과 보관료 30분당 700원, 최대 50만원까지 부과해야 한다.
- - 전동 킥보드 주정차 위반 신고 방법
- ○ 홈페이지 접속 : www.seoul-pm.com
- ① 신고하기 버튼을 누른 후 킥보드 핸들에 부착된 QR코드 인식
- ② 위치확인 버튼을 눌러 정확한 위치 지정
- ③ 주차위반을 식별할 수 있도록 사진 찍기
- ④ 신고이유 적기
- ⑤ 신고된 킥보드의 조치결과를 알고싶다면 휴대폰 뒤 4자리를 입력
- ⑥ 개인정보제공동의 체크
- ⑦ 신고하기 버튼을 누르면 완료
마케팅 전략
- 강점(Strength)
- - 유사 경쟁 우위에 속한 서비스가 존재하지 않는다. 시장조사 중 경쟁제품 분석 단계에서 프로젝트와 동일한 서비스를 제공하는 어플리케이션이나 웹을 찾을 수 없었다. ‘TMAP 주차‘와 ’모두의 주차장‘은 부족한 자동차 주차장에 운전자가 직접 가보지 않고, 편리하게 여유 공간이 있는 주차장을 확인하는 바를 목표하는 어플이다. 그 밖에도 주차장 할인 혜택과 주차된 자동차 보호, 출차 시스템을 함께 제공한다. ’서울시 전동 킥보드 주정차 위반 신고 시스템 (seoul-pm.com)‘는 단순히 서울시에서 운영중인 킥보드 적발 사이트이다. 적발 신고는 누구나 가능하며, 주정차 위반에 대한 주요 책임은 업체의 몫이다.
- - 이와 달리 본 프로젝트는 충분히 주차문제가 인지되고 해결 중인 자동차나, 자전거가 아닌 킥보드 주차문제에 접근하여, 시민의 불편함을 해결하는 방향성을 제시한다. 이 서비스를 이용할 사용자들의 자발적인 참여로 인해 사용자의 주변 공유 킥보드 주차장을 설립하고, 사용자들이 만족할만한 공유 킥보드 주차장을 꾸준히 업데이트한다. 또한, 추후 사용자의 적극적인 평가와 리뷰를 활용하여 새롭게 구성된 주차장을 업데이트하여 사용자의 참여적인 태도가 서비스에 적극 활용 및 적용됨을 인지하도록 한다. 이러한 인지를 통해 프로젝트 서비스 이용률이 상승하고, 서비스의 신뢰도 또한 비례적으로 증가할 것이다.
- 약점(Weakness)
- - 알려지지 않은(홍보되지 못한) 서비스를 실행할 초반에는 저조한 이용률을 예상한다. 이는 대부분의 업체에서 앱 출시를 앞두고 고려하는 어려움이다. 특히, 본 프로젝트는 공유 :킥보드 주차장이 오로지 사용자의 참여로 지정되는 점에서 초기에 적합하지 못한 주차장이 선점될 수 있다. 이를 극복하고자 두 가지 해결방안을 제안할 수 있다.
- - 첫 번째, 기존 킥보드 업체에서 제공하는 주차공간 데이터를 공유받는 것이다. 점차 사용자의 이용률에 따라 해당 데이터를 반비례적으로 활용한다. 만약, 참여율이 꾸준히 저조한 지역에서는 우선적으로생성된 데이터를 기반으로 주차장을 추천하여, 균일한 서비스 적용이 가능할 것이다. 이는 실제 서비스 앱으로서 출시되면 추가로 설계 가능한 알고리즘이다. 그러나, 본 프로젝트에 적용하기 위해서는 각 공유 킥보드 업체와 컨넥트하고 복잡한 절차를 거쳐야 비로소 초기 서비스 구축 데이터 정보를 공유받을 수 있다. 따라서 시간적, 경제적, 기술적 여건이 부족한 현 취지에 맞춰 API 형태로 서비스를 제작하는 바이다.
- - 두 번째, 서비스 홍보를 한다. 당연한 언급일 수 있으나 필수적인 요소이다. 킥보드 이용률이 증가하는 만큼 킥보드 주차문제도 대두되고 있다. (자세한 내용은 기회분석에서 다룬다.) 타 서비스보다 원활하고 즉각적인 홍보 효과를 느낄 수 있을 것이다.
- - 초기 주차공간 데이터 부족 문제점인 서비스 약점을 위와 같은 방안으로 해결할 수 있다. 이를 통해 사용자의 이용률을 증가하고 사용자의 적극적인 추천, 평가 참여로 충분한 주차공간 데이터를 확보할 수 있을 것이다. 따라서 공유 킥보드 주차장을 제공하는 프로젝트의 순기능이 활발히 이루어질 것이다.
- 기회(Opportunity)
- - 자가용 자동차는 편안한 좌석과 활성화된 자동차 도로로 통한 이동과 같은 편의성을 제공한다. 그러나, 초기 자동차 구입 및 유지보수를 위한 금전적인 비용과 좁은 골목과 복잡한 교통체증에서 불편한 운전상황 등의 단점이 있다. 공유 자전거는 이용자의 사용만큼 비용을 지불하고, 주차문제 또한 적절히 대응한 교통수단이다. 그러나, 직접 페달을 밟아 이용자의 체력을 에너지로 이동한다. 이는 공유 킥보드보다 상대적으로 불편함을 초래한다.
- - 공유 킥보드는 자동차와 자전거의 단점을 극복하는 교통수단으로서, 공유 킥보드 제공과 동시에 빠른 이용률 증가속도를 보였다. 다양한 킥보드 업체에서 킥보드를 제공하면서 시민들의 편리한 대중교통 수단으로 자리 잡았다. 하지만, 킥보드 이용률 증가와 대조적으로 무분별하게 방치된 킥보드는 시민의 교통에 방해한다. 킥보드 방치 문제는 킥보드 이용자가 늘어남에 따라 더욱 사회 고민거리로 여겨졌다. 이러한 사회적 문제를 해결하고자 두 차례 관련 법령의 개정이 있었음에도 오늘날까지 해결되지 않는 상황이다.
- - 킥보드의 편리함에 익숙해진 사회는 킥보드 방치 문제를 등한시하지 않고, 관심을 가지며 해결하고자 한다. 킥보드 주차문제를 노력하고자 하는 사회적, 상황적 여건이 프로젝트 서비스를 출시할만한 적절한 기회라고 생각한다. 공유 킥보드 주차장 제공 서비스 앱을 제작하는 것이 이용자의 주차 편의성을 높여줌과 동시에 킥보드 방치 문제를 해결할 수 있을 것이다.
- - 약점분석의 해결방안 중 하나인 ’서비스 앱 홍보‘는 이와 같은 사회적 여건으로 인해 타 서비스와 달리 원활하게 홍보 효과를 느낄 수 있을 것이다. 더불어 공적인 사회문제로 여겨 국가적인 지원와 투자를 받아 장기적인 서비스 유지가 가능할 것이다.
- 위협(Threat)
- - 서비스는 사용자의 적극적인 참여가 기반이다. 따라서 사용자 주변에서 적절한 주차공간을 추천해 주는 악의없는 사용자의 태도를 기대한다. 또한, 프로젝트의 알고리즘에서 적합하지 않은 사용자 추천과 평가 데이터가 활용되지 않도록 제작하는 점이 중요한 알고리즘 개발 요소이다. 이를 유의하여 데이터 전처리 과정과 클러스터링 설계하고 개발할 예정이다.
- - 서비스는 무엇보다 킥보드 사용자와 보행자 즉, 시민들이 만족할만한 공유 킥보드 주차공간을 제공해야 한다. 사용자에게 적합한 킥보드 주차장을 제공하는 앱 신뢰성과 정확성을 잃게 된다면, 사용자의 이용률이 저조해질 것이다. 이는 서비스의 악순환과 사회문제를 극복할 수 없다는 하나의 원인으로 자리 잡게 될 것이다. 따라서 서비스를 통한 사용자 제공 데이터와 각 킥보드 업체에서 공유받은 데이터를 적절히 활용하는 것이 중요한 요인이다.
개발과제의 기대효과
기술적 기대효과
- 사용자가 희망하는 킥보드 주차 가능 구역과 주차 불가능 구역에 관한 정보 데이터 전처리와 데이터를 가공 및 클러스터링을 거쳐 공유 킥보드 사용자가 만족할만한 새로운 주차장을 추천할 수 있다.
- 새롭게 추천된 공유 킥보드 주차장에 대해 사용자가 평가와 리뷰를 남겨 추후 업데이트에 영향 미칠 수 있다.
- 공유 킥보드 주차장 정보를 API 형태로 외부에 공개함으로써 킥보드 주차문제 해결을 위한 인프라 구축에 이바지할 수 있다.
- 특정 부지 내의 설치형 기기들을 관리하거나 사용성을 평가하는 것에 진행한 프로젝트 형태를 참고할 수 있다.
경제적, 사회적 기대 및 파급효과
- 주차체계가 잡혀진 자동차 주차장, 거치대 장치를 활용한 자전거 대여소와 달리 공유 킥보드만의 방식으로 공유 킥보드 주차문제를 해결할 수 있다.
- 서비스 이용이 활발해질 경우, 추천한 공유 킥보드 주차장에서 다양한 공유 킥보드 업체의 킥보드를 대여할 수 있다.
- 새롭게 생겨나게 될 주차장과 관련하여 지켜야 할 사항을 단순히 전달받는 것보다 사용자가 직접 영향력을 미칠 수 있게 함으로써 이후 주차장 사용에 적극적인 참여를 지향한다.
- 앞으로 더욱 발전하게 될 PM에 관련된 인프라를 구축해봄으로써 추후 생겨나게 될 관련 인프라 기회비용을 미리 계산해 볼 수 있다.
- 물리적으로 주차장을 표시하는 것보다 교체, 유지 비용이 적고 실제 주차장을 표시하게 될 때 발생할 문제를 시뮬레이션해 볼 수 있다.
기술개발 일정 및 구성원
개발 일정
구성원 및 추진체계
- 박*규(팀장): API 서버 설계 및 구현, 주간 회의 진행, 지원금 관련 서류 작성 및 제출
- 김*해: 클라이언트(모바일 애플리케이션) 설계 및 구현
- 양*은: 데이터베이스 서버 설계 및 구현
- 허*우: 분석 서버 설계 및 구현, 분석 결과 시각화 담당
설계
사용자 요구사항
- R1: 근처 위치한 전동킥보드 주차장을 찾을 수 있다.
- R2: 새로운 전동킥보드 주차장을 제안할 수 있다.
- R3: 전동킥보드 주차장을 평가할 수 있다.
- R4: 전동킥보드 주차장에 후기를 남길 수 있다.
- R5: 지속적으로 업데이트 되는 전동킥보드 주차장 정보를 확인할 수 있다.
사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표
기능적 요구사항
비기능적 요구사항
기능 구현을 위한 세부기술 선택사항
사용자의 주차구역 및 주차금지구역 추천
- 마커에 기반한 위치 선정 UI를 제작하는 것으로 결정하였다.
주차장 평가 데이터 수집
- 좋아요/싫어요, 2분할 방식의 평가 : 평가 정보가 간단해지며 서버와의 통신 또한 간단하게 진행할 수 있음
REST API를 이용한 통신
- 클라이언트로부터 정보를 수집하고 클라이언트 서비스에 필요한 정보 전송을 위해 REST API를 활용하였다. 구체적으로 Json 형식으로 주차존 정보를 주고받을 수 있도록 설계하여 대량의 주차존 정보를 한 번에 받을 수 있고 메인 프레임의 부하를 줄일 수 있다. 또한 제3 자가 API를 사용하여 데이터를 받아 새로운 서비스에 활용할 수 있다.
주차장 선정 알고리즘
- 밀도 기반 클러스터링 알고리즘 DBSCAN에서 영감을 받아 자체적으로 동작 가능한 주차장 선정 알고리즘을 제작하였다.
지도, 영역정보를 원활하게 관리할 수 있는 데이터베이스 구조 결정
- 관계형 데이터베이스, NoSQL을 활용하는 것으로 결정하였다.
시스템 설계
전체 시스템 설계
- 시스템은 클라이언트, API 서버, DB 서버로 구성되었고, 추가로 데이터 분석 서버를 구성하여 서비스를 보조하도록 설계하였다. 각 파트가 수행하는 역할은 다음과 같다.
- API: API를 통해 정보를 수집하고 공개한다.
- DB: mongoDB를 사용하여 위치 및 영역정보를 유연하게 저장한다.
- Client: 사용자에게 서비스를 제공한다. React Native를 사용하여 크로스 플랫폼을 지원하도록 제작하였다.
- Data analysis: 수집된 데이터에 대한 분석을 수행한다.
시스템 확장
- 위와 같이 설계할 경우, 나누어진 파트는 서로의 인터페이스에만 의존한 채 독립적으로 동작할 수 있습니다. 따라서 시스템 확장 시, 유연하게 대처할 수 있습니다. 이것이 저희가 시스템을 여러 파트로 분할하여 설계한 이유 중 하나 입니다.
로드 밸런싱과 장애 대응
- API 서버와 같이 특정 시스템은 해당 시스템의 반응 속도가 느려지거나 장애가 발생할 경우 시스템에 의존하는 자사 클라이언트 및 서드파티 모두 서비스에 영향을 받게 됩니다. 따라서 보다 안정적인 서비스 제공 방식을 고려할 필요가 있습니다. 이에 아래 그림과 같이 API 서버가 병렬로 동시에 동작할 수 있도록 설계하였고, 사용자의 요청이 오면 Request distributor가 현재 여유로운 프로세스가 처리할 수 있도록 배분하게 설계하였습니다.
보안(개인정보 보호)
- 현재 프로젝트에서 사용하는 개인 정보 목록은 ID, PASSWORD로 총 2가지입니다. 따라서 설계를 함에 있어 고민해야 할 부분은 아래 두 가지입니다
- 1. ID, PW 정보는 해시 함수를 거친 뒤 DB에 저장해야 한다.
- 2. 유저 정보의 송수신이 안전한 통로를 통해 이루어져야 한다.
- 이러한 조건을 충족시키기 위해 https 통신을 사용할 수 있는 Rest API 기술을 사용하는 것으로 설계하였습니다.
소프트웨어 설계
클라이언트
유스케이스
Database
API
데이터 분석
- 알고리즘 구상
- 서비스 사용자에게 전동 킥보드 주차장 정보를 제공하기 위해서는 주차장을 선정할 방법이 필요하다. 그러나 현재 사회에는 지정된 전동 킥보드 주차장이 없고, 관련 데이터 또한 존재하지 않는다. 따라서 프로젝트 수행을 위해서는 주차장을 선정할 방법이 필요하다.
- 데이터 분석에서는 사용자로부터 추천받은 주차장 후보지를 분석하여 신규 주차장을 선정한다. 이는 프로젝트를 위해 자체적으로 고안한 알고리즘으로, DBSCAN 클러스터링 기법에 영감을 받아 설계되었다. 구체적인 알고리즘의 동작 과정은 다음과 같다.
- 1) 노드 가중치 계산
- 아래 그림에서 작은 원은 사용자가 추천한 포인트(노드)를 나타낸다. 노드 가중치 계산 과정에서는 각 노드가 얼마만큼의 중요도를 가지는지 산출하는 것을 목표로 각 노드에 대해 중요도 계산을 수행한다. 구체적으로 특정 노드로부터 사전 정의한 거리 k 내에 위치한 노드의 개수를 세어 이를 노드의 가중치로 사용한다.
- 2) 중요 노드 선별
- 이전 과정을 통해 계산된 가중치에 기반하여 상위 20%의 노드를 제외하고 모두 제거한다.
- 3) 노드 결합
- 마지막으로 남아있는 노드를 결합하여 주차장으로 사용할 최종 노드를 구성한다. 해당 과정에서는 아래의 왼쪽 그림과 같이 선정된 중요 노드들을 군집화하고 결합하여 각 노드를 대표할 수 있는 대표지를 선정한다.
- 노드 결합은 가중치 기반 중점 선정을 반복적으로 수행하여 이루어진다. 가중치 기반 중점 선정의 동작 과정은 아래와 같다. 가중치가 2인 노드와 3인 노드를 결합한다고 가정하면 이들을 대표하는 중점 노드의 가중치는 2와 3의 평균값인 2.5가 되고, 해당 노드는 2의 가중치를 가진 노드로부터 3만큼의 거리를 가지도록, 그리고 3의 가중치를 가진 노드로부터 2만큼의 거리를 가지도록 위치하게 된다.
- 노드 결합은 남아있는 노드 중 가장 가중치가 높은 노드를 선택하고, 이를 중심으로 일정 범위 내에 있는 노드들을 대상으로 수행된다. 중심으로부터 가장 외곽에 위치한 노드 하나와 선택된 노드로부터 가장 멀리 있는 노드를 선정하여 두 노드에 대해 가중치 기반 중점 선정이 수행되며, 해당 과정은 영역 내 노드가 하나 남을 때까지 반복 수행된다.
- 알고리즘 적용
- 아래 이미지는 실제 정보기술관 사용자들이 생각하는 최적의 주차장 위치와, 해당 데이터로 선정한 주차장 위치를 나타낸다.
- 그리고 아래 이미지는 실제 학교에 주차되어있는 전동킥보드 위치와 건물 입구 위치를 나타낸다.
- 선정된 주차장을 보면 정보기술관 입구 근처에 위치하는 것을 확인할 수 있는데, 실제 사용자들도 건물 입구 근처에 주차하기를 선호하는 것을 확인할 수 있다.
결과 및 평가
완료작품 소개
프로토타입 사진
설치 (configuration)
SW/HW 구성 방법
- 안드로이드 디바이스를 가지고 있어야 한다.
실행 (run)
애플리케이션 실행
- 안드로이드 실행
- 회원가입 -> 로그인
- 유저(USER)는 주차장 후보지 추천/비추천
- 유저(USER)는 제공된 주차장에 대해 좋아요, 싫어요 평가나 후기 작성 가능
- 1) VIEWER
- 2) USER
API DOCUMENT
- https://github.com/sajo-2021/ParKick/blob/APIserver/USER_API_document.md 에서 유저 DOCS 확인
- JSON Request를 통해 데이터 접근 가능
- DOCS에 따라 추천하는 주차장 정보인 Parklots와 추천받는 주차 후보 구역 Zones 조회 가능
완료작품의 평가
향후계획
어려웠던 내용들
- 구글 지도 API key 발급하여 사용 중에 인증기간이 만료되는 문제점이 있었다. 클라이언트 담당자가 이를 발 빠르게 대응함으로써 유저에게 지도 UI를 제공할 수 있었다.
- 네이버 공유 클라우드 서버를 대여하여, 3개의 서버를 구축하던 중 DB 서버의 접속 문제가 발생했다. 연결 가능한 포트로 통신해 줌으로서 해당 문제를 해결하여 정상적인 연동을 이룰 수 있었다.
- 수집한 데이터를 활용한 데이터 분석 과정에서 적합한 클러스터링 알고리즘에 대해 심도 있게 고민하여, 가중치 기반 선별을 통한 반복적인 작업을 수행하여 주차장 장소 좌표 결과물을 산출했다.
- 악성 사용자를 어떻게 제재할지에 대한 논의가 이뤄졌다. 악성 사용자란 악의적으로 올바르지 못한 주차 후보지를 추천하거나 과도하게 동일 주차 후보지를 선택하는 사용자를 의미한다. 이를 해결하고자 회원가입, 로그인 기능을 추가하여 유저 정보 보안과 로그 기록 기능을 추가하였다.
- API 서비스가 다운된다면, 연결된 서드 파티들이 모두 정지될 문제 가능성을 고려했다. 이를 극복하고자 로드 밸런싱을 생각하여 구현을 진행했다. API 서버 코드는 여러 컴퓨터에서 독립적으로 실행할 수 있고, Request distributor가 사용자의 요청을 분배해 준다.
차후 구현할 내용
- 안드로이드 버전 이외에도 IOS 버전에서 사용 가능한 애플리케이션을 제작한다.
- OPEN API 형태로 제공되어 유저 데이터의 보안 문제가 발생할 수 있다. 회원가입 진행단계에서 사용자 이메일 인증을 통해 제대로 된 본인인증과 그에 따른 유저정보 보안 유지를 위한 추가적인 업무가 필요하다.
- 현재 ‘서울시립대‘라는 협소한 공간만 구현된 단계이다. 광범위하게 사용 범위를 늘리기 위해서는 대량의 좌표데이터 관리를 위한 세분된 데이터베이스 구축 및 서버 성능의 향상과 적절한 로드 밸런싱의 적용이 필요할 것이다.
- 차후 프로젝트의 스케일 업을 수행해야 할 것이다. 이를 위해 프로젝트를 4가지 파트로 나누어 구현하였다. 각 파트는 상호 인터페이스에만 의존할 뿐, 내부적으로 독립적으로 동작하여 확장성과 호환성을 보장한다.