Slide 1

Slide 1 text

프로그래머가 자산 관리하는 법 넥슨코리아 왓 스튜디오 김찬웅

Slide 2

Slide 2 text

저작물 인용 저작권법 제35조의 3 ‘공정이용’ 조항에 따라 교육과 연구 목적으로 이용하고 있습니다. 혹시 문제가 있을 경우, [email protected]로 연락 주시면 적절 한 조치를 취하겠습니다.

Slide 3

Slide 3 text

김찬웅 프로그래머 • 〈삼한제국기〉 • 〈Project N 퍼즐 게임〉 • 〈야생의 땅: 듀랑고〉 • NDC 15 - 〈그룹웨어에 새 에너지를〉 • NDC 16 - 〈Find My AndPhone〉 • NDC 16 - 〈Effective Git〉 • NDC 17 - 〈왓 스튜디오 서비스파트〉 • NDC 18 - 〈만들고 붓고 부수고〉 https://chanwoong.kim kexplo

Slide 4

Slide 4 text

자산 관리하는 법? Wealth Management 오늘의 주제는…

Slide 5

Slide 5 text

자산 관리하는 법! Wealth Management = Bookkeeping 오늘의 주제는…

Slide 6

Slide 6 text

자산이란 무엇일까?

Slide 7

Slide 7 text

자산이란 무엇일까? • 자산 = 자본 + 부채

Slide 8

Slide 8 text

자산이란 무엇일까? • 자산 = 자본 + 부채 • 쉽게 이야기하면 • 자본은 축적된 부를 의미하고 • 부채는 빚을 의미한다.

Slide 9

Slide 9 text

자산이란 무엇일까? • 자산 = 자본 + 부채 • 쉽게 이야기하면 • 자본은 축적된 부를 의미하고 • 부채는 빚을 의미한다. (바람을 일으키는 기구가 아니다) 출처: 위키백과 `자산` 항목

Slide 10

Slide 10 text

나에게 자산이란? 자산 = 자본 + 부채 자산 = 축적된 부 + 빚 자산 = 0 + 빚 나에게 자본이란 것은 (거의) 없다. 조금 비약하자면

Slide 11

Slide 11 text

자산 관리한다며? • 축적된 부(부동산 등)를 관리하는 것 말고 • 정기적인 수입(월급)과 • 비정기적인 지출을 관리

Slide 12

Slide 12 text

사실, 부기에 관한 이야기 • 세상에는 다양한 수입과 지출 방식이 있다 • 동료와 같이 먹은 점심을 대표로 결제했다. • 동료들에게 1/n로 받은 돈의 수입은 수익인가? • 카드 결제일은 카드를 긁은 날과 다르다 • 지출은 카드 긁은 날에 차감해야 하는가, 결제일에 차감해야 하는가? • 할부는…? Bookkeeping

Slide 13

Slide 13 text

가계부를 써 보셨다면… 날짜 항목 수입 지출 2019. 04. 01 월급 받음 1,000,000 2019. 04. 02 과자 사먹음 (현금) 1,000 2019. 04. 03 옷 쇼핑 (카드) 100,000 2019. 04. 04 식재료 구입 (카드) 65,000 2019. 04. 05 점심, 2인분 결제 (카드) 10,000 2019. 04. 05 점심 값 1인분 (현금) 5,000 수입 1,005,000 지출 176,000

Slide 14

Slide 14 text

가계부를 써 보셨다면… • 내 가용 현금은 정확히 얼마인가? • 다음 달 카드 값은 얼마?? • 큰돈이 빠져나가는 날은??? 날짜 항목 수입 지출 2019. 04. 01 월급 받음 1,000,000 2019. 04. 02 과자 사먹음 (현금) 1,000 2019. 04. 03 옷 쇼핑 (카드) 100,000 2019. 04. 04 식재료 구입 (카드) 65,000 2019. 04. 05 점심, 2인분 결제 (카드) 10,000 2019. 04. 05 점심 값 1인분 (현금) 5,000 수입 1,005,000 지출 176,000

Slide 15

Slide 15 text

가계부를 써 보셨다면… • 내 가용 현금은 정확히 얼마인가? • 다음 달 카드 값은 얼마?? • 큰돈이 빠져나가는 날은??? 돈의 흐름을 파악하기가 힘듦 날짜 항목 수입 지출 2019. 04. 01 월급 받음 1,000,000 2019. 04. 02 과자 사먹음 (현금) 1,000 2019. 04. 03 옷 쇼핑 (카드) 100,000 2019. 04. 04 식재료 구입 (카드) 65,000 2019. 04. 05 점심, 2인분 결제 (카드) 10,000 2019. 04. 05 점심 값 1인분 (현금) 5,000 수입 1,005,000 지출 176,000

Slide 16

Slide 16 text

단식 부기, 복식 부기 • 앞에서 본 가계부의 형태를 단식 부기라고 한다. • 거래가 발생한 날짜의 순서대로 나열하는 형태이기 때문에, 로그에 가깝다. • 반면, 자산과 부채, 자본의 증감 변화를 기록하는 복식 부기라는 기록 형태가 있다.

Slide 17

Slide 17 text

복식 부기에 대해 알아보자 • 복식 부기(複式簿記, 영어: double-entry bookkeeping)란 경영조직에 서 외부와 거래를 할 때 거래의 주고받는 양 측면을 함께 기록함으로써 기 록의 신뢰성을 확보하고 재무상태, 재무성과 및 현금흐름 등 경영의사결정 에 필요한 다양한 재무적 정보를 제공할 수 있는 장부기록 방법을 말한다. 여기서 경영조직이란 영리를 목적으로 하는 기업은 물론 국가나 지방자치 단체와 같은 비영리조직을 포함한다. 복식부기는 흔히 차변과 대변의 대응 방식을 사용하여 거래를 기록하는 것으로 알려져 왔는데 이는 1494년 이 탈리아에서 루카 빠찌올리가 최초로 정리한 것으로 되어 있으며, 우리나라 에서는 이보다 앞서 이와 유사한 장부기록 방법인 송도사개치부법이 개성 상인들에 의해 정리되었다고 한다. 출처: 위키백과 `복식부기` 항목

Slide 18

Slide 18 text

무슨 소리인지 모르겠다

Slide 19

Slide 19 text

복식 부기란… • 거래내역을 차변(Debit)과 대변(Credit)으로 나누어 이중으로 기록하는 장부 기입 방식 차변 (Debit) 대변(Credit) 자산의 증가 자산의 감소 부채의 감소 부채의 증가 자본의 감소 자본의 증가 비용의 발생 수익의 발생

Slide 20

Slide 20 text

현금 999,000 카드 부채 100,000 비용-간식 1,000 비용-의류 100,000 항목 금액 차변 대변 월급 받음 1,000,000 자산 증가 현금 수익 발생 월급 과자 사먹음 1,000 비용 발생 간식 자산 감소 현금 옷 쇼핑 100,000 비용 발생 의류 부채 증가 카드 항목 수입 지출 월급 받음 1,000,000 과자 사먹음 (현금) 1,000 옷 쇼핑 (카드) 100,000 수입 1,000,000 지출 101,000 복식 부기로 표현해보면

Slide 21

Slide 21 text

현금 999,000 카드 부채 100,000 비용-간식 1,000 비용-의류 100,000 항목 금액 차변 대변 월급 받음 1,000,000 자산 증가 현금 수익 발생 월급 과자 사먹음 1,000 비용 발생 간식 자산 감소 현금 옷 쇼핑 100,000 비용 발생 의류 부채 증가 카드 항목 수입 지출 월급 받음 1,000,000 과자 사먹음 (현금) 1,000 옷 쇼핑 (카드) 100,000 수입 1,000,000 지출 101,000 복식 부기로 표현해보면 차변과 대변을 통해 항목별 변동 내역 파악 가능

Slide 22

Slide 22 text

현금 999,000 카드 부채 100,000 비용-간식 1,000 비용-의류 100,000 항목 금액 차변 대변 월급 받음 1,000,000 자산 증가 현금 수익 발생 월급 과자 사먹음 1,000 비용 발생 간식 자산 감소 현금 옷 쇼핑 100,000 비용 발생 의류 부채 증가 카드 항목 수입 지출 월급 받음 1,000,000 과자 사먹음 (현금) 1,000 옷 쇼핑 (카드) 100,000 수입 1,000,000 지출 101,000 복식 부기로 표현해보면 자산, 지출의 상태를 쉽게 확인 가능

Slide 23

Slide 23 text

복식 부기를 사용하면 • 자산과 부채를 따로 관리할 수 있음 • 각 항목이 트랜잭션 로그 • 현재 자산의 상태를 파악하는 것이 단식 부기에 비해 편리 • 수입, 지출이 아닌, 각 자산별 항목으로 관리됨 • 자산의 출처와 흐름을 알 수 있음

Slide 24

Slide 24 text

복식 부기는 뭐로? • 데이터가 온전히 내가 제어할 수 있는 상태이고 싶다 • 특정 제품에 종속되는 것이 싫었음 • 내가 원하는 지표를 빠르게 보고 싶다 • PC와 모바일을 가리지 않고 사용하고 싶다 • 스마트폰과 태블릿이 흥하던 시기

Slide 25

Slide 25 text

첫 복식부기 • Google Sheets를 이용 • 가장 기본적인 기능을 구현

Slide 26

Slide 26 text

첫 복식부기 • Google Sheets를 이용 • 가장 기본적인 기능을 구현 필요한 피벗 데이터는 바로 만들어서 시각화

Slide 27

Slide 27 text

처음에는 만족스러웠으나… • 관리하는 자산과 부채가 늘어나면서 복잡도가 증가 • 입력이 매우 귀찮아짐 • 이쯤 되면 숙제처럼 느껴진다 • 게다가 금융사 앱은 뭐가 그렇게 불편한지…

Slide 28

Slide 28 text

귀찮다 = 자동화가 필요한 시점 • 나에게 귀찮다는 것은 자동화가 필요함을 의미 • 거래의 흐름을 자동으로 기록할 수 있다면 참 편할 것 같다

Slide 29

Slide 29 text

거래 입력을 쉽게 할 순 없을까? • SMS 알람이나 금융 앱의 푸시 메시지를 가로챈다면…? • 좋은 자동 입력 시스템으로 사용할 수 있을 것 같다 • 최근에는 이 방식으로 동작하는 Android용 가계부도 꽤 있다 [Web발신] 땡땡카드0*2*승인 김*웅 1,000원 일시불 01/23 01:23 훌레이스테이션 누적 2,000원

Slide 30

Slide 30 text

알림 수집 자동화 • Android를 사용한다면 Notification과 SMS 메시지를 읽어올 수 있다

Slide 31

Slide 31 text

수집한 데이터를 어떻게 모을 것인가? • 모바일에 모아 놓긴 싫다 • PC에서 보기 위해 동기화를 해야 하는 것이 싫다 • 따로 서버를 운영하기도 싫다 • 관리 비용을 늘리고 싶지 않다

Slide 32

Slide 32 text

Google Apps Script를 이용한다면… Serverless가 없던 시절의 Serverless (2012년도) HTTP POST 응답이 Sheet의 새 항목으로 입력된다

Slide 33

Slide 33 text

Google Apps Script를 이용한다면… Serverless가 없던 시절의 Serverless (2012년도) HTTP POST 응답이 Sheet의 새 항목으로 입력된다 20xx. Xx. Xx XX결제 1,000 37.4020015,127.1039283

Slide 34

Slide 34 text

동작 흐름 99 거래 알람 수신 알람 메시지 추출

Slide 35

Slide 35 text

동작 흐름 99 거래 알람 수신 알람 메시지 추출 HTTP POST 데이터 입력

Slide 36

Slide 36 text

미래가 없다 • Android에 종속적 • 해외 여행을 갈 때 로밍을 하지 않는다면 받지 못하는 알람이 꽤 있다. • 게다가 Android는 앞으로 허가 받은 App만 SMS 권한을 가질 수 있게 한다고 한다 출처: https://android-developers.googleblog.com/2019/01/reminder-smscall-log-policy-changes.html 이제 가망이 없어

Slide 37

Slide 37 text

API를 주세요 • 프로그래머라면 API가 굉장히 익숙하다 • 금융은 왜 API가 없는 것일까? • 한국만 그런 것일까? Application Programming Interface

Slide 38

Slide 38 text

BaaS, Bank as a Service 해외에는 은행 API를 제공하려는 움직임이 있다

Slide 39

Slide 39 text

한국은...? 오? 은행권 API가 있다

Slide 40

Slide 40 text

가입을 해 보았다

Slide 41

Slide 41 text

가입을 해 보았다 정식으로 쓰려면 사업을 시작하라고? 개인이 쓰기에는 허들이 너무 높다

Slide 42

Slide 42 text

해당 API를 쓰는 업체가 분명 있지 않을까? • 그 업체를 잘 이용한다면, 마치 API 미들웨어처럼 쓸 수 있지 않을까?

Slide 43

Slide 43 text

마침 최근에 자산 관리 서비스가 한국에 생겼다 • 뱅X샐X드, 구글 플레이스토어 추천을 통해서 알게 됨 • 앞에서 언급한 은행권 API를 사용하는지 확실하지 않지만 • 등록한 나의 금융 자산의 거래 내역을 한 번에 조회 할 수 있다 • 광고 아닙니다. 관계자도 아닙니다. • 저는 넥슨 코리아 소속…

Slide 44

Slide 44 text

가계부를 지원한다. 하지만… 겉으로 봐서는 복식 부기 형태의 가계부를 지원하지 않는 것 같다

Slide 45

Slide 45 text

API처럼 써보자 • 해당 서비스가 수집해주는 금융 데이터를 내가 다시 수집한다면? • 마치 중앙화된 금융 자산 API처럼 쓸 수 있을 것이다! • 얼마 전부터 엑셀로 Export 할 수도 있다

Slide 46

Slide 46 text

최근 거래 내역 출력

Slide 47

Slide 47 text

BaaS! BankSalad as a Service 앱 실행 거래내역 동기화 모여진 거래의 차변, 대변 분류 작업만 수동으로 거래내역 내보내기 >_

Slide 48

Slide 48 text

이제 데이터 수집은 쉽게 할 수 있다! • 데이터 수집은 반자동을 이루었으니 • 복식 부기를 다루는 것에만 집중할 수 있게 됨

Slide 49

Slide 49 text

복식 부기를 겉핥기로 만드니 아쉽다 • 복식 부기의 모든 것을 이해하고 만드는 것이 아니다 보니… • 새로운 거래 패턴이 생기면 새로운 기능이 필요하다 • 마치 주어진 기획서 안 보고 구현하다가 나중에 아차! 하는 것 같다

Slide 50

Slide 50 text

잘 만들어진 복식 부기는 없을까? • Linux 환경에서 개발하면서 느끼는 것은, Linux Ecosystem에는 없는 거 빼고 다 있다! • 텍스트 에디터, 네트워크, 파일, 매크로, … • 분명 누군가 잘 구현해 둔 복식 부기가 있을 것

Slide 51

Slide 51 text

다음 조건으로 탐색 • CLI로 동작할 수 있을 것 • 데이터 구조가 변환에 용이할 것 • 어느 정도 활성화된 커뮤니티를 가지고 있는 오픈소스 프로젝트일 것 • (당연하지만) 다양한 거래를 지원할 것 Command Line Interface

Slide 52

Slide 52 text

Ledger https://www.ledger-cli.org/

Slide 53

Slide 53 text

Ledger https://www.ledger-cli.org/ GitHub Star가 절대적인 기준은 아니지만 이슈와 커밋 빈도, 상세한 메뉴얼 등에서 커뮤니티가 살아있다는 느낌을 받음

Slide 54

Slide 54 text

데이터 포맷이 어렵지 않아 쉽게 변환 가능 출처: https://www.ledger-cli.org/3.0/doc/ledger3.html

Slide 55

Slide 55 text

데이터 포맷이 어렵지 않아 쉽게 변환 가능 시스템이 유연해서 게임 아이템(…) 관리에 사용해도 무리 없음 출처: https://www.ledger-cli.org/3.0/doc/ledger3.html

Slide 56

Slide 56 text

데이터 포맷이 어렵지 않아 쉽게 변환 가능 시스템이 유연해서 게임 아이템(…) 관리에 사용해도 무리 없음 리포트를 뽑아볼 수 있으며, 원하는 항목만 필터링 할 수 있음 출처: https://www.ledger-cli.org/3.0/doc/ledger3.html

Slide 57

Slide 57 text

최종 앱 실행 거래내역 동기화 거래내역 내보내기 >_ Ledger 데이터로 정리 거래내역 추출과 정리를 동시에

Slide 58

Slide 58 text

결론 • 복식 부기, 써보지 않겠어요? • 츄라이 츄라이 • 본인이 프로그래머가 아니라고요? • 이 슬라이드에서 다루지 않은 좋은 서비스, 도구도 많습니다.

Slide 59

Slide 59 text

감사합니다.