일상

if(kakao) 2020 - 안드로이드 버전 카카오 T SDK 개발기

poppy 2020. 11. 19. 16:02
반응형

이번 포스팅은 카카오T 개발기에 대한 내용을 다루고 있는 다음 링크의 영상을 보고 내용을 정리해보았습니다. 포스팅의 모든 사진의 출처는 다음 링크의 영상에 있습니다 :)

if.kakao.com/session/58

 

if(kakao)2020

오늘도 카카오는 일상을 바꾸는 중

if.kakao.com

 

1. 왜 카카오내비에 카카오 주차 서비스를 가져온 이유? 

카카오 내비를 이용하면 운전자는 목적지까지 원하는 조건에 맞는 경로로 빠르게 이동할 수 있습니다.

하지만, 목적지에 도착하고 나서 주차할 공간을 찾아야하는데 이 부분은 아직 내비가 제공해주지 못하고 있습니다. 결국 도착지 근처를 배회하면서 주차할 공간을 찾아야하는 것은 여전히 운전자의 몫이 됩니다.
그렇다면 카카오 모빌리티가 제공하는 서비스로 이 문제를 해결할 수 있지 않을까요?
카카오 모빌리티에는 주차서비스가 있으니 이 서비스를 잘 접목하면 운행의 마지막인 주차까지 스마트하게 마무리할 수 있을 것입니다. 그래서 카카오 내비에 카카오 주차 서비스를 접목하였습니다.


2. 카카오T 주차

사전예약은 사용자가 목적지 근방의 주차장을 선택한 후 그 주차장의 이용권을 사전에 구매하는 서비스입니다. 이용권을 사전에 구매하면 목적지 근방에 도착하여 주차할 공간을 찾을 필요가 없고 기껏 주차장을 찾았는데 만차라서 낭패를 겪을 일도 없습니다.


자동정산은 별도의 사전 예약 없이 주차한 후, 정산 신청 후 출차하면 자동으로 주차비가 결제되는 서비스입니다. 힘들게 카드를 찾아서 신용카드를 꼽거나 군데군데 흩어져있는 주차정산기를 찾으러 다니지 않아도 됩니다.


사전예약의 경우엔 미리 주차장을 찾고 시간권을 구매하는 과정이 필요해서 빠르게 길안내를 받고자하는 현재 내비의 사용자의 패턴과 잘 맞지 않았습니다. 그래서 별도의 예약없이 바로 사용할 수 있는 자동정산서비스를 내비와 연동하기로 결정하였습니다.


3. 카카오내비 X 카카오 T 주차 연동 프로젝트

- 목표: 안드로이드 버전 카카오내비 앱을 이용하 카카오 T주차의 자동 정산 서비스를 탑재한다

- 일정: 2019.3 ~2019.중순

- 주요작업: 안드로이드용 카카오T 주차 SDK 개발, 카카오내비 앱에 카카오T 주차 SDK를 탑재

 


주차, 대리, 택시 등 여러 서비스들을 내부적으로 vertical이라고 부릅니다.이런 vertical들은 각각의 안드로이드 모듈로 구성되어 있습니다. 모든 버티컬은 차량관리, 결제, 사용자 정보 조회 등의 플랫폼성 기능이 필요합니다. 각vertical마다 기능을 개별적으로 구성하는 것은 매우 비효율적이어서 플로그인 모듈에 모든 플랫폼성 기능의 인터페이스를 선언하고 vertical은 이 인터페이스를 통해 플랫폼성 기능을 사용하도록 구성했습니다. 카카오T앱의 본체라고 할 수 있는 앱 모듈은 플러그인 모듈에 선언된 인터페이스의 구현체를 제공합니다. 이러한 구조 덕분에 버티컬들은 앱 모듈에 의존하지 않고도 플랫폼 기능을 활용할 수 있습니다. 모든 모듈에서 공통적으로 사용할 수 있을만한 유틸리티성 코드들을 모아서 Base모듈을 만들었습니다.

 


주차모듈이 동작하려면 주차모듈이 의존하는 모듈이 필요합니다. 그래서 자연스럽게 플러그인 모듈과 Base모듈도 재사용 대상으로 뽑았습니다. 하지만 이렇게되면 앱모듈에 해당하는 무언가가 필요하게 됩니다. 그래서 앱모듈에서 SDK역할을 담당할 새로운 모듈인 코어 SDK가 필요해졌습니다. 코어SDK모듈은 제공해야하는 기능이 매우 많은데 이것을 어떻게 효율적으로 구현할 수 있을지가 관건이었습니다. 크게 두가지 접근법이 있는데 첫번째는 앱모듈의 코드를 복사하고 SDK에 맞게 붙여넣는 방식이고, 두번째는 앱 모듈을 작은 모듈로 나눈 다음 앱모듈과 코어SDK모듈에서 공유하는 방식입니다. 두번째 방식은 모듈로 분리한 코드를 재사용할 수 있으니 복사하는 방식에 비해 유지보수하기가 더 쉽습니다. 두번째 모듈화 방법이 더 좋아보이지만 앱모듈 자체도 계속 개발되고 있는 와중에 모듈을 쪼개고 코어SDK모듈까지 새로 만들기엔 작업이 매우 커집니다. 그래서 일단은 첫번째 모듈화 방법을 택하였습니다. 새로운 요구사항을 충족시키기 위해 주차모듈을 수정한 다음 설정을 통해 기능이 분기되도록 결정하였습니다. 주차 모듈에 직접 접근하여 설정하는 새로운 모듈인 주차SDK모듈 추가하였습니다. 주차SDK모듈이 등장해서 코어SDK모듈은 더이상 주차모듈에 의존하지 않아도 됨

4. 마주친 문제

① 인증문제
카카오T SDK는 거의 모든 기능은 을 해야한다면 좋아할 사람은 없습니다. 앱에서 로그인한 정보를 이용해 자연스럽게 SDK 사용자 인증을 할 방법을 생각해보게 되었습니다. 카카오내비와 카카오T는 모두 카카오 계정을 기반으로 사용자를 관리하기 때문에 내비에서 로그인한 사용자를 카카오T 사용자로 맵핑하는 것이 가능합니다. 

② push 문제
자동정산 서비스는 주차장 입차, 출차 등의 메세지를 사용자에게 푸쉬로 발송합니다. 앱을 건너뛰고 SDK가 푸쉬를 보내고 받을 방법이 없었습니다. 결국 SDK를 탑재한 내비앱과 내비서버에 의존해야 했습니다. 푸쉬를 발송해야할 경우에는 주차서비스가 내비 서버에게 푸쉬 발송요청 API 호출합니다. 내비서버는 이렇게 받은 요청 정보를 FCM서버에 전달해서 푸쉬발송요청합니다.

5. 앞으로의 계획

앞으로는 코어SDK를 만들려고 했던 우아한 솔루션인 앱 모듈을 하위 모듈로 분리하여 재사용율을 높이려고 하고 있습니다. 

반응형