Engineering
복슬가계부 개발기
장정호Walter(월터) / 주문결제개발팀여기어때
2024년 2월 12일
원문에서 보기 ↗내 첫 디버깅 도구는 연습장이었다. 소수 찾기, 행렬곱셈, 마방진 같은 문제를 TurboC 2.0을 이용해서 풀었다. 제대로 동작하지 않으면 소스 라인 단위로 예상되는 변숫값을 연습장에 적어 가며 디버깅했다. 다중, 삼중 for문 거기다가 재귀호출까지 있으면 도저히 연습장으로 해결이 안 될 때가 있다. 그때는 소스코드도 마음도 비우고 다시 코딩했다. 어느 날 브레이크 포인트 기능이란 걸 알게 되었다. 한 단계씩 스텝을 밟아가며 조건문 실행 여부 파악이 가능하고 거기다가 실시간으로 변숫값을 볼 수 있었다. 충격이었다.

내 디버깅 기술을 한 단계 높여준 브레이크 포인트
2008년부터 지금까지 매일 저녁 가계부를 쓰고 있다. 처음에는 무료 가계부 프로그램 다운로드 받아 썼다. 어느 날 나도 개발자인데 가계부 정도는 만들어 써야 하지 않을까? 생각이 들어 그날로 개발을 시작했다.
PC 애플리케이션 개발 경험과 지식이 부족해 잘 알고 있는 웹으로 개발했다. 기술 스택은 Spring Boot + JPA + Vue.js로 정했다. 그 당시 Vue.js는 사용해 본 지 얼마 되지 않아 많은 시행착오가 있었다. 또한 JSP를 기반한 프론트 개발에 익숙했던 나에게 npm, Webpack, Babel 같은 Node기반 개발환경이 많이 낮설었다. 2018년 8월에 시작해 그해가 끝나기 전 복슬머니-웹버전 개발을 완료했다.

Copyright 2024. 여기어때컴퍼니 All Right Reserved. Graphic by 김제린(Riny).
복슬머니-웹버전에는 큰 문제가 있었다. PC 애플리케이션처럼 사용했는데 내장형 Tomcat 컨테이너 기반으로 동작하기 때문에 실행시간이 20~30초 정도로 너무 오래 걸렸다. 그러다가 VSCode가 Electron 프레임워크로 만들어졌다는 걸 알게 되었다. Electron에 대해서 좀 더 알아보니 PC 애플리케이션을 자바스크립트로 만들 수 있고 무엇보다 UI를 HTML + CSS로 개발할 수 있다는 게 마음에 들었다. 더해서 멀티플랫폼도 지원한다. 그동안 PC 애플리케이션 UI 개발이 너무 어려웠다. 자바 기반 GUI 개발 라이브러리인 AWT, Swing, SWT 써봤다면 알 거다. 조금 복잡한 레이아웃 하나 잡는 게 얼마나 어려운지. HTML처럼 유연하지 못하다. 그런데 PC용 애플리케이션 UI를 HTML로 만들 수 있다니 흥분이 됐다.
바로 Electron을 적용한 복슬머니-데스크톱앱을 만들기 시작했다. 2019년 11월에 시작해 다음 해 8월에 완료했다. 자바스크립트 기반으로 백엔드 개발이 처음이라 시간이 오래 걸렸다. 익숙하지 않은 프레임워크 때문에 개발 환경 특히 디버깅 환경 세팅이 어려웠다. Sequelize를 이용해서 ORM을 적용했지만, 동적 타입의 한계 때문인지 JPA를 사용했을 때처럼 편하게 느껴지지 않았다.
한편으로 이번에는 주식매매 기록 및 자산스냅샷 기능을 추가했다. 2020년부터 본격적으로 자본주의의 꽃인 주식을 시작하게 되어 손익 및 평가 자산에 대한 기록이 필요했기 때문이다.
코로나 때 너나 할 것 없이 미국 주식에 사람들이 몰리기 시작했다. 나도 뒤늦게 막차를 타는 심정으로 미장에 뛰어들었다. 여기서 복슬머니의 기능적 한계를 발견했다. 바로 원화 기반의 가계부란 것을. 미국 주식을 매매하면 그 당시 환율을 기반해 원화로 계산하여 기록했다. 환율은 변하기 때문에 손익 및 가치 평가가 어려웠다. 안 되겠다. 새롭게 가계부를 만들자. 기존에 만든 소스코드에서 원하는 기능을 추가해도 되지만 레거시를 좋아하는 개발자가 어디 있겠냐. 내가 만든 레거시도 싫다. 혼자 개발하는데 하고 싶은 대로 하는 거지.
복슬가계부를 만들었다. 2023년 11월 초에 시작해서 3개월 만에 릴리즈했다. 퇴근 후 저녁, 주말 동안 짬짬이 개발한 것 치곤 빨리했다. 이번엔 이름만 보고 바로 알 수 있게 ‘가계부’ 단어를 넣었다. 전작의 단점을 보완해 통화 개념을 도입해 환전 및 외국 주식 매매 기록할 수 있다. 그리고 개발자답게 UI 컬러는 다크테마로 적용했다. 기술 스택은 Electron + Typescript + React를 사용했다. 나는 Typescript와 React 써본 경험이 없었다. 어느 정도 시행착오는 예상했지만, GPT4를 비롯한 Github Copilot, Jetbrain AI Assistant 같은 인공지능 개발도구 덕분에 예상보다 문제 해결을 빠르게 했다.

이제야 말로만 듣던 짝 프로그래밍을 하는구나
인공지능 개발도구를 사용하면서 아득한 옛날 브레이크 포인트를 경험했을 때 충격을 다시 받았다. 관심법을 당한 것 같은 코드 자동완성. 대충 물어봐도 친절하고 정확한 답변. 고마운 마음마저 든다. 복슬가계부를 만들면서 구글링을 거의 하지 않았다. GPT로 해결 안 되는 질문은 구글링해도 소용없다는 걸 경험적으로 알게 됐기 때문이다. 한 번도 사용해 본 적 없는 Typescript, React로 개발하는 데도 책 한 권 읽지 않고 동영상 강의도 듣지 않았다.
예전에는 개발자가 책을 읽지 않으면 한심한 걸 넘어 개발자의 도리를 저버렸다고 생각했다. 그런데 그 짓을 지금 내가 하고 있다. 과거의 내가 지금의 나를 바라보면 어떻게 생각할까? 너무 날로 먹는 것 같아 죄책감마저 든다. 하지만 이제는 메모장으로 코딩할 수 없듯이 머지않아 인공지능 개발도구 없이 개발이 어려운 시대가 올 것이다. 그날이 기대된다.
끝으로 복슬가계부에서 ‘복슬이’는 초등학교 6학년 때부터 10년 정도 키운 강아지다. 지금도 가끔 꿈에 나온다.
