안녕하세요! SW Maestro 서포터즈 기술블로그팀입니다.
정신없이 돌아가는 세상! 그래서 요즘 많은 사람들이 다이어리나 스케줄 어플을 통해서 자신의 일정을 관리하고 있습니다.
그러나 스케줄 어플 만으로는 충분하지 않습니다. 만약 누군가를 만나는 약속이라면 어디서 만날지, 만나서 무엇을 먹고 마실지 결정해야 하죠.
이러한 어려움들을 해결해줄 해결사가 나타났습니다. 바로 Caly입니다!
Caly를 개발하고 있는 CalyFactory팀의 최평강 팀장은 “한참 아이디어를 생각해낼 때 저녁 약속을 잡은 적이 있었는데 약속한 날까지 어디로 갈지 정하지 못했다가 낭패를 본 적이 있었다"라며,
“일정(약속)을 등록하면 자동으로 장소나 기타 정보들을 추천해주면 좋지 않을까? 란 생각에서 이 서비스를 시작하게 되었다"라고 합니다.
CalyFactory팀은 이 아이디어를 놓치지 않았습니다. 바로 주요 타켓층을 찾고 이를 위한 서비스를 개발하기 시작했습니다.
설문조사를 통해서 그들은 “20대 대학생“을 주요 타켓층으로 선정하였습니다.
처음부터 모든 연령을 위한 어플을 개발하기보다는 시간-자원의 제한을 고려하여, 효과적인 타겟층을 선정하고 이를 기반으로 향후 타켓층 확장을 하겠다는 생각이었습니다.
어떻게 시작하면 되나요?
Caly 서비스는 간단합니다. 최소한의 정보만 있으면 누구나 가입할 수 있습니다.
선호도 조사를 통해서 조금 더 정확한 정보를 제공할 수도 있지만, 신규 가입자의 가입 프로세스 허들(huddle)을 최소화하기 위해서 이 같은 방법을 택했습니다.
간단한 Caly 이용법
이처럼 Caly 서비스에 가입한 뒤에는 더 이상 할 일이 없습니다. 기존에 사용하던 구글, 네이버, 맥 스케줄 어플을 그대로 사용하면서 Caly를 이용할 수 있습니다.
가장 핵심이 되는 기술, CalDAV 기술
“CalDav(Calendaring Extensions to WebDAV)란?
캘린더의 정보를 서버와 동기화하기 위한 공개 프로토콜입니다.”
겉보기에는 쉬워 보이지만, 그 뒤에는 아주 어려운 기술이 숨겨져 있습니다.
구글 동기화의 경우엔 쉽게 구현이 가능하지만 CalDAV라는 방식의 경우엔 인터넷에 자료도 없고 오픈소스로 되어있는 라이브러리도 없습니다.
저희는 RFC 문서를 읽고 그 스펙에 맞게 직접 오픈소스로 라이브러리를 만들어서 공개했습니다.
그 방식은 다음과 같습니다.
CalDAV 프로토콜 동기화 로직 1
캘린더에는 cTag, 일정에는 eTag라는 고유한 태그를 심어줍니다.
여기서 일정이 추가되거나 삭제, 변경될 때마다 eTag가 변하게 되고 그 일정이 속한 cTag 또한 변하게 됩니다.
이런 과정에서 cTag를 주기적으로 체크하여 변경 여부를 파악합니다.
만약 변경된 사항이 발견되면 eTag들을 비교하여 추가되거나 변경된 또는 삭제된 내용을 알 수 있게 됩니다.
그리고 Caly 서버와 CalDAV 서버끼리 HTTP를 기반으로 iCalendar 포맷을 통해 데이터를 주고받습니다.
통신 중에는 아이디와 비밀번호를 Base64로 인코딩해 HTTP 헤더에 넣어 보내는 방식인 BASIC Auth를 사용합니다.
CalDav 서버로 요청하고자 하는 자료는 xml 형태로 보내게 됩니다.
내가 원하는 것을 알아서 추천!
Caly에서 가장 중요한 알고리즘 중 하나는 바로 추천 서비스입니다.
Caly는 사용자가 스케줄러를 통해 입력한 일정 정보와 사전에 수집된 추천 데이터들의 여러 특징들을 가지고 추천을 하게 됩니다.
사용자의 과거 기록을 기반으로 이 사용자가 어디를 많이 갔는지, 어떤 종류의 음식을 많이 조회했는지, 어떤 형태의 놀 거리를 많이 조회했는지 등을 먼저 파악합니다.
그 이후에는 그에 맞는 식당(한식, 중식, 양식 등)과 다양한 놀 거리에 점수를 부여합니다.
또한 추가적으로 역 또는 정류장에서의 거리나 가격, 장소들을 계산하여 사용자에게 추천을 해줄 수 있습니다.
이렇게 개발된 Caly는 기존에 있던 어플과는 다른 차별성을 보입니다. 바로 개인화에 특화된 서비스!인데요, 사용자는 자신의 목적별/취향별/일정에 맞는 서비스를 추천받을 수 있습니다.
SW마에스트로와 함께한 개발 과정
SW마에스트로 과정에는 항상 멘토님이 함께합니다. Caly 팀은 어려움이 있을 때마다 멘토님을 통해 어려움을 극복했습니다.
“저희끼리 프로젝트를 할 때는 뭐가 더 중요한지도 잘 모르고 어떻게 결정해야 할지 난감한 경우가 많습니다.
그럴 때마다 멘토링을 통해 실제 실무에서는 어떻게 의사결정을 하는지 실 경험자인 멘토님께 많이 배울 수 있었고, 문제를 효율적으로 해결할 수 있었던 것 같습니다” CalyFactory 팀의 말입니다.
실제로 이러한 과정을 통해, 추천 데이터를 보여줄 때 가까운 곳과 먼 곳을 보기 쉽게 보여주면 좋을 것 같다는 피드백을 받아들여 지도상에서 추천 데이터를 볼 수 있도록 개선하는 작업을 진행하였다고 합니다.
개발로 분주한 CalyFactory 팀의 모습
CalyFactory 팀에게 SW마에스트로란?
마지막으로 CalyFactory 팀에서 SW마에스트로에 대해서 질문했습니다.
CalyFactory 팀의 답은 바로 “등불” 이었습니다.
SW마에스트로는 그들에게 새로운 것을 알게 해준 등불과도 같은 존재라며, 저희도 SW마에스트로 과정에 동참하라고 귀띔해주었습니다.
곧 Caly 서비스가 출시됩니다. 바로 여러분이 1호 사용자가 되어보세요!