머니북 프로젝트 (1)

1년 조금 안 되는 기간 동안, 우리 부부는 ‘엑셀 (Excel)’ 로 가계부를 정리하고 있었다. 웹 서비스나 안드로이드 앱들로도 쓸 수 있는 가계부를 말이다. 게다가 몇몇은 카드 내역 문자가 오면 자동으로 기입도 해 주는데!

우리의 목적은 ‘입맛대로 쓰자’ 였다. 쓰고 싶은 대로 수식을 넣고 차트를 그렸다. 그러나 그마저도 귀찮음에 한계가 오기 시작했다. 어줍잖은 지식으로 함수와 스크립트를 짜 넣는 데엔 한계가 있었고, 데이터가 많아질수록 엑셀이 조금씩 우리의 인내심을 시험하기 시작했다. (왜 이렇게 느린겨!)

 

프로젝트 착수

결국, 작년 말에 내가 칼을 뽑았다. 모양이 어떻게 되든 간에, 엑셀 가계부를 대체할 서비스를 만들어 주겠노라고.

이런 류의 프로젝트는 이름이 많다. 내 맘대로 할 수 있어서 ‘토이 프로젝트’ 라고도 하고, 새로운 기술을 부담없이 시전해 볼 수 있어서 ‘펫 프로젝트’ 라고도 한단다. 이런 프로젝트를 할 때는 눈치를 안 봐도 된다는 장점이 있다.

하지만 나 자신과 타협하는 것을 용납하지 못하면, 어려운 작업이 되는건 매한가지다. ‘이쯤 하면 됐지’ 가 아니라 ‘이건 왜 이렇게 했냐’ 라는 생각이 괴롭히기 시작하면 말이다. 게다가 지금은 고객님도 계신다. 이 분의 요구사항을 모두 만족하면서, 쓰면서 나오는 불만들에 즉각 대응해야 한다. 진짜 클라이언트라면 전화나 카톡을 무시할 여지라도 있지, 이 분은 바로 내 옆에 있다!

 

프로젝트 목표

나에게 있어, 이 프로젝트의 목적은 ‘배우면서 만드는 서비스’ 이다. 목표는 바로 MEAN Stack 을 다뤄보면서 익혀가는 것이다.

더 나은 Full-stack service 들이 있겠지만, 나는 프론트 엔드 개발자가 아니다. 취미 삼아 블로그를 운영할 때나 PHP/Javascipt 를 끄적이는 정도라서, 그 수준은 어디 나가서 자랑할 수준이 못 되기 때문이다. 가장 만만하면서 쉽게(?) 올려볼 수 있는 것을 선택했다.

아무튼, MEAN Stack을 구축한 다음에 거기서 살을 붙이다가 새로운 개념을 배우면 Refactoring 도 해나가면서 그나마 견고하게 서비스를 지속하는 것이 목표이다. 리팩토링이라니, 얼마나 끔찍한 짓인진 나도 잘 알지만 배우는데 이만한 노력은 해야 한다 생각한다.

 

MEAN

MEAN은 MongoDB, Express, AngularJS, NodeJS 를 뜻한다고 한다. 뭔가 순서가 뒤죽이 박죽인 것 같지만… 라임을 맞추려고 그랬을테니 신경쓰지 말자.

여기서 MongoDB는 NoSQL 이니, 익숙한 SQL 언어를 쓰기 위해 MariaDB 또는 MySQL을 사용하기로 했다. 어차피 대용량 DB를 운영할 것이 아니고 더욱 익숙한 MySQL을 선택하는게 나에게는 최선이었다. 아, 데이터베이스는 사실 새로 배울 것도 없어서 익숙한 것을 선택한 것이다.

NodeJS와 Express는 쌍으로 배워서 사용하는데, 여기서 더 필요한 게 있다면 body-parser 정도겠다. 이 부분은 책으로 ‘눈팅’한 경력이 있어서 어렵지 않게 넘어갔다.

문제는 AngularJS이다. 이건… 아이디어만 보면 정말 편하겠다 싶었다. Javscript 에서 수정하는 데이터가 바로 HTML 에 반영이 된다니! 그래서 언젠가 꼭 써보고 싶었는데, 막상 시작하려니 어디서부터 어떻게 시작해야 할지 몰랐다.

이리저리 검색한 결과, W3School 의 AngularJS 튜토리얼에서 출발한 것이 많은 도움이 되었다. 기본적인 사용법만 익히면 factory가 무엇인지 코드를 어떻게 체계적으로 관리할 것인지는 나중 문제기 때문이다. (여기서도 refactoring 이슈가 엄청나겠지만, 당장 이런 걱정은 ‘화성의 식량 부족 문제를 걱정하는’ 격이다. 당장 걱정해봤자 아무런 쓸모가 없기 때문이다.)

다음은?

네 가지 스택을 어느 정도 배우고 난 다음, 백엔드부터 하나씩 구성하기 시작했다. 그 과정을 다음 포스팅부터 하나씩 풀어나가고자 한다.