카카오 개발자 콘퍼런스 'if kakao 2018' 두 번째 이야기
01. 지식그래프 : 카카오미니와 검색 적용 소개 (발표: 남기훈 / 글: 김동현)
02. 눈으로 듣는 음악 추천 시스템 (발표: 최규민 / 글: 김태훈)
03. 이미지로 이미지 검색하기 (발표: 이주영 / 글: 이가람)
04. 딥러닝을 활용한 뉴스 메타 태깅 (발표: 김기도 / 글: 김규형)
05. 딥러닝을 이용한 실시간 인코딩 효율 최적화 (발표: 여욱형 / 글: 정소영)
06. 카카오 봇 플랫폼 소개 (발표: 황지수 / 글: 이형남)
07. 카카오가 가지고 있는 음성처리 기술 (발표: 노재근 / 글: 이형남)
08. 딥러닝을 이용한 얼굴 인식 (발표: 신종주 / 글: 김동현)
09. TOROS N2 (발표: 김성진 / 글: 김태훈)
10. 텐서플로로 OCR 개발해보기: 문제점과 문제점과 문제점 (발표: 모종훈·오형석 / 글: 이가람)
11. S2Graph와 GraphQL (발표: 윤도영 / 글: 김규형)
12. AI시대에 맞는 서비스 개발(발표: 이석영 / 글: 정소영)
카카오 개발자 콘퍼런스 'if kakao 2018' 두 번째 시간으로는 '카카오뱅크의 모바일앱 개발 이야기'를 정리하였습니다. 이번 세션의 발표는 카카오뱅크 모바일 개발 파트의 박이랑 님이 카카오뱅크 모바일앱의 개발-오픈-운영까지 그 모든 이야기를 시간순으로 정리해 들려주었습니다. 타임라인에 따라 각 시간 지점의 주요 이벤트별 비하인드 스토리를, 당시 느꼈던 심정과 함께 생생하게 들려주어 마치 그 개발 현장에 같이 있었던 듯한 느낌이 들기도 했습니다. 발표자는 세션 중간중간 자문자답 시간을 가지며 관객들이 카카오뱅크 모바일앱이 어떻게 개발되었는지 궁금해할 만한 부분들을 해소시켜 주었습니다. 카카오뱅크 시스템은 대략 인프라, 코어뱅킹, 서버, 빅데이터, 그리고 모바일앱으로 구성되어 있지만 이번 발표에서는 모바일앱 위주로 다루었습니다.
카카오뱅크 모바일앱 개발의 시작은 놀랍게도 소소하였습니다. 2016년 5월 1일, 카카오에서 은행 앱을 만든다는 소식을, 그것도 본인이 만들게 될 것이라는 소식을 전해 들었다고 합니다. 그렇게 안드로이드 개발자 1명, 아이폰 개발자 1명, 그리고 디자이너 1명이 모여 각자가 그리는 은행의 모습을 공유하며 아이디어를 구상하기 시작하였습니다. 그들 중 누구도 은행 앱을 만들어 본 적이 없어 막연함과 두려움이 앞섰던 것이 그 당시 심정이었습니다. ‘열정'만 가지고 프로젝트에 뛰어든 지 한 달이 지난 2016년 6월 1일, 안드로이드 개발자 1명과 iOS 개발자 1명이 극적으로 합류해 4명의 개발자들이 본격적인 개발에 착수하며 은행 앱 개발에 첫 발을 내디뎠다고 합니다. [그림1]에서 볼 수 있는 것처럼 우선, 서비스 오픈 이후 안정적이고 효율적인 개발을 위한 프레임워크를 논의해 적용하고, 최신 트렌드를 반영한 오픈소스 라이브러리를 채택한 후, 다수의 업체 미팅을 통해 보안 솔루션을 선정하며 개발 환경을 꾸려갔습니다.
카카오뱅크 앱이 기존 앱과 비교해 가지고 있는 차별점은 바로 보안 솔루션을 내재화하여 앱에 넣었다는 점입니다. 은행 앱은 보안과 안정성이 가장 중요한데, 카카오뱅크 앱에서 사용하는 보안 솔루션으로는 6가지가 있습니다. 안드로이드와 iOS의 경우, 난독화를 위해 조금 더 복잡한 솔루션을 이용했다고 합니다. 루팅이나 탈옥 등은 해킹에 가장 기본적인 위험 요소라는 점을 고려해 카카오뱅크는 안드로이드 루팅 탐지 시스템 및 iOS 탈옥 감지 시스템과 함께 악성 앱 방어 백신을 탑재했습니다. 카카오뱅크에서는 솔루션을 구입하지 않고 직접 만든 보안 솔루션으로 가상 키보드 보안 솔루션과 지문/패턴 로그인 시스템, 그리고 공인인증서를 대체할 수 있는 자체 인증서를 개발해 내재화 한 것입니다.
그렇게 약 2달 후, 카카오뱅크는 첫 프로토타입 시연회를 가져 계좌 개설 프로세스를 대중들에게 선보입니다 ([그림3] 참고). 이 시기, 개발적으로 내린 중요한 의사결정은 ‘가보지 않은 길을 가자'는 것이었고, 내부적으로 내세웠던 가치는 모바일에서 모든 것을 해결하자는 의미의 ‘모바일 퍼스트'였다고 합니다. 따라서 모든 프로세스를 모바일 사용자 경험을 중점으로 고민하여 개발하는 데 주력을 하게 됩니다.
그렇게 3달이 지난 뒤 11월 초에 카카오뱅크는 어떤 모습과 디자인의 앱을 만들고 있는지 대중들에게 공유하기 위해 2차 프로토타입 시연회를 가집니다. 결론적으로 이 시연회에서는 ‘디자인상으로 너무 예뻐서 은행 앱 같이 느껴지지 않는다’ 등 긍정적인 피드백에 힘을 얻어 앱 개발자 모두에게 동기부여가 될 수 있었던 기회가 되었습니다.
하지만 모든 앱 개발이 그러하듯, 카카오뱅크 개발자들에게도 시련이 찾아오게 됩니다. [그림 5]에서 볼 수 있듯이, 개발팀은 계속해 서비스를 보완하고 개발하는 데도 불구하고 살펴봐야 할 서비스가 계속해서 늘어나는 험난한 상황에 맞닥들이게 됩니다.
카카오뱅크의 또 다른 차별점은 하이브리드 앱 대신 네이티브 앱을 개발했다는 점입니다. 가보지 않은 길을 가자는 것을 목표로 삼아 택한 것이지만, 네이티브 앱의 기존 개발사례가 없어 과연 어떠한 문제에 부딪혔을 때 빠르게 대응할 수 있을까에 대한 두려움을 느꼈었다고 합니다. 또한, 안드로이드와 iOS, 각각의 특성을 고려해 그에 맞는 네이티브 앱을 따로 개발했기 때문에 형태가 틀어지지 않게 맞춰서 동기화하는 작업 등에서 많은 시행착오를 겪었다고 합니다.
그렇다면 왜 카카오뱅크는 하이브리드 앱으로 만들지 않고 네이티브 앱으로 만들었을까요? 하이브리드 앱에는 극복하지 못하는 몇 가지 단점들이 있다고 합니다. 네이티브 앱보다 현저히 뒤처지는 속도, 안드로이드 및 iOS 이 2개 플랫폼의 사용자 경험(UX)을 만족시킬 수 없다는 점, 그리고 하이브리드 앱이 가지고 있는 히든 코스트(hidden cost)가 그 단점들입니다. 그 중에서 하이브리드 앱의 히든 코스트로 1개의 코드 베이스에서 2개의 앱을 운영하는 게 어렵다는 점, 최신 OS 대응 및 신규 기능을 대응하기 어렵다는 점, 그리고 웹 개발자와 앱 개발자의 협업 비용을 예로 들었습니다.
반면에 네이티브 앱이 가지고 있는 단점으로는 버그 또는 UI 수정에 앱 업데이트가 필요하다는 점과 2개의 플랫폼을 각각 개발해야 한다는 점, 그리고 시간과 개발인력이 더 많이 필요하다는 점이 있었지만, 이 3가지 단점들은 충분히 개선 가능하고 오히려 장기적으로 비용이 절감되는 효과를 주는 최적의 툴을 제공해주기에 긍정적으로 받아들였다고 합니다. 이것이 카카오뱅크가 네이티브 앱으로 개발하기로 결정한 배경이 되었습니다. 또한, 카카오뱅크는 은행 고객들이 원하는 건 거창한 게 아닐 수도 있다는 생각에 빠른 성능과 좋은 사용자 경험(UX)에 중점을 두는 등 고객의 입장에서 고민하여 앱을 개발하는 데 집중하게 됩니다.
그렇게 해가 바뀌어 2017년이 되었고, 1월 중순에 카카오뱅크는 은행이 되기 위한 최종 심사 과정을 거치게 됩니다. 심사에 통과해야지만 본격적인 영업이 가능하기에 다양한 분야에서 약 2-3개월에 걸쳐 엄격한 심사를 받았습니다. 2017년 4월 5일, 카카오뱅크는 기나긴 노력 끝에 본인가 승인을 받아냈고, 그 해 5월, 클로즈 베타를 오픈합니다. 그 당시만 해도 2년 뒤 카카오뱅크의 모습을 떠올려봤을 때 그때까지 은행 앱이 존재하기만 해도 잘 한 것이라는 생각이 들었었다고 합니다.
카카오뱅크는 실전을 앞두고 처음에 사내 직원들을 통해 오픈 테스트를 진행하였고, 이후 카카오뱅크 협력사까지 확대하여 다양한 버그를 잡아낸 후, 마지막으로 주주사 CBO 카카오, 한국투자 등에 오픈하여 시스템을 안정화 하는 과정을 거치게 됩니다. 그리고 2017년 7월 27일, 카카오뱅크는 대망의 퍼블릭 오픈을 하게 됩니다. 오전 7시 오픈과 동시에 카카오뱅크 동시 접속자가 2천 명이 되었고, 오픈한 지 3시간이 경과하였을 때 2-3만 명이 동시에 접속하는 어마어마한 현상에 접속 장애가 일어나는 등 예상치 못한 성공적인 시작을 끊어냅니다. 개발팀은 계속해 앱을 업데이트하는 등 앱 안정화에 온 힘을 다하게 됩니다.
2018년 9월, 카카오뱅크는 개발팀의 ‘2년 후에도 존재하기만 해줬으면 좋겠다'는 바람이 무색해질 정도로 현재 열심히 영업 중에 있고, 전월세 보증금 대출 서비스 및 26주 적금 서비스, 그리고 신규 체크카드 3종을 출시하고, 지문(FaceID)으로 거래하는 기능 및 OTP 향상 기능을 개발해 꾸준히 카카오뱅크 서비스를 강화하고 있습니다.
직접 고객들을 찾아가 만나서 원인을 파악해 문제점을 해결하고, 문제를 겪고 있는 고객에게는 직접 앱을 설치해주는 등 고객을 우선으로 한 노력들이 인상 깊었습니다. 또한, 휴대폰 제조사인 LG, 삼성전자, 애플과 디바이스 오류 협업을 진행하며 아이폰 X나 안드로이드 오레오와 같이 새로운 운영체제가 출시할 때 빠르게 대응할 수 있게 노력했다고 합니다. 여기서 네이티브 앱 배포는 빠른 대응을 하는데 충분했습니다. 한편, 카카오뱅크는 정말 긴급한 대응의 경우 서버에서 데이터를 가져오도록 지속적으로 작업하는 등 앱 배포 없이 서버 배포로 해결하는 방안을 택했습니다.
그리고 발표는 카카오뱅크가 일하는 방식을 소개하며 마무리 되었습니다.([그림 9] 참고). 험난했지만 지금은 누구보다 편리하고 안전한 서비스를 제공하며 시장을 주도하고 있는 카카오뱅크의 모바일앱 개발 여정기는 이렇게 끝이 났습니다. 카카오뱅크의 개발자 및 기획자들이 기울였던 노력들을 엿볼 수 있었던 시간이었고 특히 개발자의 생각과 순간순간의 감정들을 생생하게 느낄 수 있었던 시간이었습니다.
카카오뱅크 앱은 오픈하기까지 많은 험난한 과정들을 잘 견뎌냈습니다.
오픈 후에도 많은 시행착오를 겪었고,
네이티브 앱의 운영 노하우를 쌓으며 성장하고 있습니다.
그리고 여러분들의 과분한 사랑은
은행의 역사를 바꾸는 첫 번째 앱이 되어달라고
고객을 위한 은행이 되어달라고 말하는 것 같습니다.
이런 과분한 사랑에 보답하기 위해
더 카카오뱅크스럽게 고객을 위해 만들겠습니다
본문에 삽입된 슬라이드 자료는 'if kakao 2018' 개발자 콘퍼런스 발표자료에서 인용하였습니다.
(출처: https://if.kakao.com)
콘퍼런스 발표자 | 박이랑(bernard.park) / 카카오뱅크