
경영정보학과 캡스톤디자인으로 FinGo라는 서비스를 기획하고 구현하게 되었다.
전체적인 개념은 정해졌으나 프로젝트를 효과적으로 진행하기 위해 필요한 내용을 한 번 정리하고 가는 게 좋을 것 같아 문서를 작성한다.
수정한 내용이나 추가로 덧붙인 내용은 <**> 기호를 추가하여 작성할 예정이다.
금융사 API를 통해 사용자의 총 자산을 자동으로 불러올 수 있게 하고, 사용자의 카드 및 출금 승인 내역을 실시간으로 불러와 그 값만큼 가용 예산에서 차감하여 사용자의 디바이스에 푸시 알림을 날려 앱에 들어가지 않고도 현재 남은 가용 예산이 얼마인지 즉시 확인할 수 있다.
FinGo는 사용자는 자신의 자산과 비용 및 예산을 가시적으로 확인할 수 있어 금융 활동에 대한 경각심을 가질 수 있고, 자신이 설정한 금융 목표를 이루는 데에 도움을 줄 수 있어 사용자의 건강한 금융 건강을 향상시킬 수 있다.
수렴한 아이디어는 현재의 FinGo 아이디어가 되었다. 누구나 그렇겠지만 대학생인 나는 특히 삶에 있어 어떤 행위를 하든 '돈'이 모든 선택지가 되는 역할을 했다. 따라서 자산(예산) 관리가 매우 중요했다. 충동 소비를 최대한 억제하고 돈을 아낀다고 아끼지만 어느샌가 0원에 가까워오는 잔고를 매번 만나기 일쑤였다.
이에 하루 단위의 가용 예산을 추천해주는 서비스가 있으면 좋겠다고 생각했다. 매일 하루에 얼마를 쓸 수 있는지 추천해주고, 사용자가 소비를 할 때마다 그 가용 자산이 줄어드는 것이다. 그 하루에 쓸 수 있는 예산이 '숫자'로써 명시되고 가시적으로 표현되기 때문에 예산 관리에 효과적일 수 있을 것이라 생각했다.
사용자 예산 관리와 걸맞는 서비스 이름이 무엇일까에 대해서도 한참을 고민했다.
이 과정에서 '사용자가 우리 서비스를 사용한다면 어떤 목적에서 사용할까?', '예산 관리를 하려는 목적이 뭘까?'에 대해서 생각해봤다.
예산 관리를 하려는 이유는 각자 저마다의 '목적'을 가진다. 단순히 돈을 저축하기 위함일 수도 있고, 어떤 갖고 싶은 물건을 사기 위한 비용을 축적해두기 위함일 수도 있다. 즉, 예산 관리에는 항상 '목적', '목표'가 따른다. 이에 '목적'을 의미하는 영어 단어인 'Goal'을 서비스에 붙이고자 했다.
여기서 다시, 예산(금융)과 관련한 서비스라는 차원에서 핀테크의 어원인 'Financial Tech'를 레퍼런스 삼아 'Financial Goal'이라는 서비스 이름을 짓게 되었다.
'Financial Goal'을 '앱 서비스'라는 차원에서 사용할 만한 이름으로 부르게 위해 각 단어의 앞 글자들을 조금씩 따와 FinGo라고 짓게 되었다.
FinGo는 배열에서 일치하는 숫자를 먼저 채워 이기는 게임인 Bingo과 어감이 비슷해서, 이 점을 이용하여 서비스 핵심 개념에 적용해봐도 될 것 같다.
사용자가 현재 소유한 자산에서 어떤 알고리즘을 적용하여 하루치의 가용 예산을 추천해줄 것인지에 대한 고민을 많이 해보았는데, 다음과 같은 의견으로 수렴되었다.
- 인공지능 알고리즘을 도입하여 사용자의 성향에 맞는 추천
- 사용자로부터 직접 값을 입력 받아 그것을 단순히 계산하여 추천
요즘 인공지능 서비스가 대세이며 도입을 하면 너무 좋겠지만, '가용 예산 계산'이라는 추상적 개념을 구현하는 데에 도입할만한 복잡한 로직이 필요한 것이 아니며, 시간이 오래 걸리고 그 성격이 약간 벗어난듯 했다. 따라서 두 번째 방법인 사용자로부터 직접 값을 입력 받아 그것을 단순히 계산하여 추천하는 방법을 선택했다.
계산을 위해 필요한 사용자 값으로 정한 것은 다음과 같다.
((총 자산) - (고정 비용) - (목표 저축액)) / (목표 날짜까지 남은 일 수)
총자산: 사용자의 주 사용 계좌에 있는 출금 가능 금액이다. 모든 계좌를 취급하기엔 타겟 값으로 현재 남아 있는 액수를 핸들링 해야 하기 때문에 사용자가 한 가지 계좌를 고르도록 해야한다.
최초에는 이것을 사용자로부터 명시적으로 입력 받도록 구현할 것이다. 프로그램 뼈대가 갖춰지고 나면 이후에 API를 도입하여 사용자 정보를 동적으로 입력받도록 개선할 것이다.
고정비용: 주거비용, 통신비용, 보험비용, 생활비용, 이자비용, 기타비용을 통틀어 말하는 비용이며 이 값은 사용자에게 직접 입력 받는다. 입력을 받을 때에는 각 비용이 어떤 것을 가리키는지 설명하고, 각 비용마다 Area를 따로 하여 입력 받을 예정이다.
목표 저축액: 현재 보유 자산에서 고정 비용을 뺀 액수 중 얼마를 저축할 것인지 명시적으로 나타내는 금액이다. 목표 저축액은 목표 날짜까지 유효하며, 목표 날짜가 지나면 초기화된다.
목표 날짜: 위 입력 값들을 바탕으로 이 상태를 언제까지 지속할 것인지 지정하는 날짜이다. 예를 들어 오늘이 10월 1일이고 사용자가 목표 날짜를 11월 1일까지 지정했다면 목표 날짜까지 남은 일 수는 30일이다.
월급날: 기점이 되어 월급날이라고 표현했지만 다른 말로 표현하는 것이 좋을 것 같다. 학생들은 용돈을 받기 때문.
위 내용을 바탕으로 실제 값을 대입하며 계산해보자.
사용자의 총 자산은 현재 200만원이며, 고정 비용으로 총 90만원이 나가고, 목표 저축액은 50만원이라 가정하자. 그럼 남은 가용 자산은 60만원이 된다.
오늘은 10월 1일이며 목표 날짜는 11월 1일일 때, 남은 날짜는 30일이 되고 60만원에서 30을 나누면 하루에 사용할 수 있는 금액은 2만원이다.
(2,000,000 - 900,000 - 500,000) / 30 = 20,000
이 개념은 고정비와 저축액을 제외한 금액을 가용 예산으로 평가한다. 이 가용 예산을 바탕으로 계산하기 때문에 사용자의 목표(저축)을 달성하게 해주는 것이다.
위 값들은 사용자가 서비스에 가입할 때 최초로 입력 받으며, 최초 설정 후에도 서비스 내에서 값을 직접 변경할 수 있다.
Firebase는 Baas로써 서버리스 개발이 가능하게 한다. 따라서 개별 서버 구축이 없이도 Firebase 제공 API를 통해 Firebase에서 제공하는 기능들을 사용할 수 있게 된다. 하지만 그만큼 기능이 한정되어 있으며, 필요한 경우는 별도 구축이 필요하다고 한다. (이 부분은 자세히 몰라서 구현하면서 알아봐야 할 것 같다.)
사용자의 금융 정보를 각 금융원으로부터 받아오기 위해서는 금융 API가 필요한데, 2019년부터 오픈뱅킹(마이데이터) 사업 정책으로 중개 기관이 사용자가 금융 기관 사이에서 인증과 보증 역할을 해주어 다양한 금융 정보 API를 쉽고 간편하게 한 번에 불러올 수 있는 통합 API가 등장했다.
먼저 금융결제원의 오픈뱅킹 API를 사용하는 것이 좋아보였는데, 오픈뱅킹 API는 다음과 같은 기능을 제공한다.
하지만 카드 승인 내역 조회는 지원하지 않아 계좌 정보로 출금 정보로 구현해야 한다. 이 기능을 지원해주는 API는 CODEF API라는 게 있다. 다양한 API를 지원하는데, 필요한 API는 다음과 같다.
만약 API 사용 및 연결에 성공만 하면 완전 대박일 것이다.
⚠️ 2023. 11. 09.
Codef API의 샌드박스, 금융결제원의 오픈뱅킹 API 등 테스트베드에서 계속 테스트를 하고 실패하고 삽질을 계속했는데, 최종적으로 개인 사용자는 테스트까지는 가능할지라도 실제 사용은 못한다고 한다. 따라서 확장성에 의의를 두고, 다른 방식으로 구현할 것을 고민해야겠다.